MultiDex:启用MultiDex时超出主要Dex容量

问题描述 投票:0回答:1

我正在使用我已经包含在需要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文件的逻辑都过度填充它

xamarin xamarin.forms xamarin.android android-multidex
1个回答
0
投票

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

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

有关各种D8 / R8项目配置的详细信息,请参见Xamarin.Android回购:

© www.soinside.com 2019 - 2024. All rights reserved.