📅  最后修改于: 2023-12-03 15:06:17.626000             🧑  作者: Mango
在开发 Android 应用时,开发者会遇到一个 Android 应用的编译时限制:方法数限制。在 Android 系统中,Dalvik 虚拟机使用 16 位,用作方法的索引,因此单个 DEX 文件中支持的方法数被限制在 65536 个方法上限。
随着应用变得越来越复杂,引用的库和框架增多,应用对于达到方法限制的可能性也越来越高,因此会导致构建失败,报错信息类似于:
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
为了解决这个问题,Google 在 Android 5.0 中引入了 MultiDex 支持,允许开发者将应用程序拆分为多个 DEX 文件,从而绕过方法数限制。
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}
在 Application 类中实现 MultiDexApplication,或者如下所示,覆盖 attachBaseContext 方法并调用 MultiDex.install:
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
<application
android:name="com.example.MyApplication">
…
</application>