#xamarin #xamarin.forms #xamarin.android #android-multidex
#xamarin #xamarin.forms #xamarin.android #android-multidex
Вопрос:
Я использую пакет, который я включил в свой проект, для которого требуется MultiDex, у меня есть 156561 ссылка, поэтому мне понадобится несколько файлов .dex.
Однако это не удается, ссылаясь на то, что основной файл dex слишком большой
Некоторые предлагали использовать keepRuntimeAnnotatedClasses false, но я использую Xamarin, и неясно, как это сделать без Gradle.
Другие предлагают установить минимальный API > 21, что уже верно для моего проекта.
Я также вручную обновил Proguard, поскольку MultiDex использует его, и получил новейший JDK 1.8
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:548)
at com.android.dx.command.dexer.Main.runMultiDex(Main.java:368)
at com.android.dx.command.dexer.Main.runDx(Main.java:289)
at com.android.dx.command.dexer.Main.main(Main.java:247)
at com.android.dx.command.Main.main(Main.java:94)
Я бы подумал, что MultiDex будет решением проблемы «Слишком многих классов». Однако кажется, что любая логика, решающая заполнить основной файл dex, переполняет его
Ответ №1:
Предполагается, что вы используете одну из последних версий Xamarin.Android, вы можете попробовать использовать «новый» инструмент Google D8 dex вместо использования Proguard.
<PropertyGroup>
<AndroidDexTool>d8</AndroidDexTool>
<AndroidLinkTool>r8</AndroidLinkTool>
</PropertyGroup>
Подробную информацию о различных конфигурациях проекта D8 / R8 можно найти в Xamarin.Репозиторий Android здесь: