我正在使用一个包含在我的项目中的,需要MultiDex的程序包,我有156561个引用,所以我需要多个.dex文件。
但是失败了,理由是主dex文件太大
有人建议使用keepRuntimeAnnotatedClasses false,但我使用的是Xamarin,尚不清楚在没有Gradle的情况下如何实现这一点。
其他人建议设置最低API> 21,这对于我的项目已经是正确的。
我还手动升级了Proguard,因为MultiDex使用它并获得了最新的1.8 JDK
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文件的任何逻辑都超过了填充
答案 0 :(得分:0)
假设您使用的是Xamarin.Android的最新版本,则可以尝试使用“新的” Google D8 dex工具,而不要使用Proguard。
<PropertyGroup>
<AndroidDexTool>d8</AndroidDexTool>
<AndroidLinkTool>r8</AndroidLinkTool>
</PropertyGroup>
有关各种D8 / R8项目配置的详细信息,可以在Xamarin.Android存储库中找到: