MultiDex:启用MultiDex后,主要Dex容量超过

时间:2019-04-23 19:28:26

标签: xamarin xamarin.forms xamarin.android android-multidex

我正在使用一个包含在我的项目中的,需要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文件的任何逻辑都超过了填充

1 个答案:

答案 0 :(得分:0)

假设您使用的是Xamarin.Android的最新版本,则可以尝试使用“新的” Google D8 dex工具,而不要使用Proguard。

<PropertyGroup>
   <AndroidDexTool>d8</AndroidDexTool>
   <AndroidLinkTool>r8</AndroidLinkTool>
</PropertyGroup>

有关各种D8 / R8项目配置的详细信息,可以在Xamarin.Android存储库中找到: