随着应用的不断开发,Android 应用的大小也在增加。当应用及引用的库达到特定大小时,会碰到65536限制,造成构建错误。
谷歌官方给了解决办法Android官网
65536表示这个数字很重要,代表的是单个 Dalvik Executable (DEX) 字节码文件内的代码可调用的引用总数。
解决办法:
如果minSdkVersion 为 21 或更高值,只需在项目中的修改 build.gradle 文件,将 multiDexEnabled 设置为 true 即可。
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
如果 minSdkVersion为20或更低值,则需要依赖Dalvik 可执行文件分包库。
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
然后自定义Application继承MultiDexApplication,并重写attachBaseContext()方法,并调用Multidex.install(this);
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(context);
Multidex.install(this);
}
}
当然不能忘记在AndroidManifest.xml中注册。
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name="com.example.test.MyApplication"
...
</application>
编译运行即可。