起因
当我build Andriod 工程,提示multidex错误,报错信息会有65536这个数字。
这是因为,Android APK文件本质上是一个压缩文件,在android5.0之前,每一个android应用中只会含有一个dex文件classes.dex
,该文件是Dalvik字节码文件,这个dex文件中存放的就是编译后的Java代码。Dalvik可执行文件规范限制了单个.dex文件最多引用的方法数是65536个。这就是64K(64*1024)事件。
经过
可以查找Android官方文档。
Step 1. 配置Gradle
在app级build.gradle里增加:
defaultConfig {
multiDexEnabled true
}
dependencies {
implementation "androidx.multidex:multidex:2.0.1"
}
Step 2. 配置Application
- 如果没有重写
Application
,只需修改Manifest
文件中的内容
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
- 如果重写了
Application
,可以将继承的Application
换成MultiDexApplication
; 或者重写attachBaseContext()
方法:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
结果
Done.