Android 分包导致低于5.0版本报错ClassNotFoundException
项目在4.4系统运行就报错,在5.0以上没问题。原因就是 报错ClassNotFoundException
方法数超64K(1K=1024,65536刚好是64K);需要分包操作
解决方案
- 1、在module下的build.gradle文件 ,添加multiDexEnabled true
defaultConfig {
applicationId "com.haxi.mh"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// dex突破65535的限制
multiDexEnabled true
ndk {
// 设置支持的SO库架构
abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
}
- 2.兼容低版本
//分包兼容低版本
dexOptions {
javaMaxHeapSize "4g"
jumboMode = true
}
- 3.添加依赖包
/* multidex兼容包,配合AndroidStudio实现了一个APK包含多个dex的功能 */
compile 'com.android.support:multidex:1.0.1'
- 4.让自己的Application继承MultiDexApplication类,或者在Application下重新attachBaseContext(Context base)方法,初始化 MultiDex.install(this);
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(base);
}