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);
}