報錯一:java.lang.VerifyError: com/trello/rxlifecycle/components/support/RxAppCompatActivity
報錯二:java.lang.NoClassDefFoundError: retrofit2.Retrofit$Builder
https://developer.android.com/studio/build/multidex.html
minSdkVersion 設(shè)置為 21 或更高值情況下:
只需在模塊級 build.gradle 文件中將 multiDexEnabled 設(shè)置為 true
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
minSdkVersion 設(shè)置為 21以下情況下:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
根據(jù)是否要替換Application 類:
1,如果沒有用自己的application類替換application類,可在清單文件配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
如果你自定義了自己的application類來替換application類的話屉凯,則可以
public class MyApplication extends MultiDexApplication { ... }
或者:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(context);
Multidex.install(this);
}
}
構(gòu)建應用后住册,Android 構(gòu)建工具會根據(jù)需要構(gòu)建主 DEX 文件 (classes.dex) 和輔助 DEX 文件(classes2.dex 和 classes3.dex 等)捐顷。然后挺身,構(gòu)建系統(tǒng)會將所有 DEX 文件打包到您的 APK 中屎飘。
運行時够滑,Dalvik 可執(zhí)行文件分包 API 使用特殊的類加載器來搜索適用于您的方法的所有 DEX 文件(而不是僅在主 classes.dex 文件中搜索)。