я хотел бы использовать подход ApplicationWrapepr использовать multidex в моем приложении, как описано здесь https://plus.google.com/104023661970539138053/posts/YTMf8ADTcFgсписок Android Multidex всех классов
Я использовал опцию --minimal магистрального-DEX вместе с удерживающую файлом, как это:
android/support/multidex/ZipUtil.class
android/support/multidex/ZipUtil$CentralDirectory.class
android/support/multidex/MultiDex$V14.class
android/support/multidex/MultiDexExtractor$1.class
android/support/multidex/MultiDexExtractor.class
com/<mypackage>/common/MyApplication.class
com/<mypackage>/common/MyApplicationWrapper.class
com/<mypackage>/common/ui/DashboardActivity.class
android/support/multidex/MultiDexApplication.class
android/support/multidex/MultiDex.class
android/support/multidex/MultiDex$V19.class
android/support/multidex/MultiDex$V4.class
Это приводит к перечисленным классам в моем основном файле dex, который в порядке. Я, чем использовать библиотеку, которая использует следующий код для перечисления всех классов в файле dexfile, но просто получает записи основного «clesses.dex», а не все другие загруженные файлы dex, потому что новый DexFile проверяет только «classes.dex», :
приватный статический список getPaths (final String [] sourcePaths) { Результат списка = новый ArrayList();
for (String s : sourcePaths) {
try {
DexFile dexfile = new DexFile(s);
Enumeration<String> entries = dexfile.entries();
while (entries.hasMoreElements()) {
result.add(entries.nextElement());
}
} catch (IOException ioe) {
Log.w(TAG, "cannot open file=" + s + ";Exception=" + ioe.getMessage());
}
}
return result;
}
сейчас единственный путь получает определяется с:
application.getApplicationContext().getApplicationInfo().sourceDir;
что приводит к Somthing как /data/../myapplicationname.apk
Есть еще одна возможность получить все классы файлы dex перечислены? Или все классы в настоящее время в ClassLoaders? Библиотека имеет важное значение для проекта и использует этот подход для поиска компонентных реализаций через отражение позже.
EDIT1: , если обнаружено, что файл classes2.dex помещается под: /data/data/com./code_cache/secondary-dexes/com.-1.apk.classes2.dex
однако при использовании нового DexFile() с этим путем IOEsxception генерируется с сообщением «невозможно открыть файл dexfile».
привета. Я думаю, это сработает. из-за соображений производительности мы решили использовать явную конфигурацию зависимостей. – Denny1989
работает, где вы потеряете производительность в этом решении? –