メソッド数が64 Kを超える問題
1831 ワード
エラー1:java.lang.VerifyError: com/trello/rxlifecycle/components/support/RxAppCompatActivity
エラー2:java.lang.NoClassDefFoundError: retrofit2.Retrofit$Builder
https://developer.android.com/studio/build/multidex.html
minSdkValersonが21以上に設定されている場合:
モジュールレベルでのみbuild.gradleファイルでmultiDexEnabledをtrueに設定
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
minSdkValersonが21に設定されている場合:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
アプリケーションクラスを置換するかどうかによって、次のようになります。
1、アプリケーションクラスを自分のアプリケーションクラスで置き換えていない場合は、インベントリファイルで構成できます.
...
アプリケーションクラスを置き換えるために独自のアプリケーションクラスをカスタマイズした場合は、
public class MyApplication extends MultiDexApplication { ... }
または、
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(context);
Multidex.install(this);
}
}
アプリケーションを構築すると、Android構築ツールは必要に応じてプライマリDEXファイル(classes.dex)とセカンダリDEXファイル(classes 2.dexやclasses 3.dexなど)を構築します.その後、構築システムはすべてのDEXファイルをAPKにパッケージします.
実行時、Dalvik実行可能ファイルパケットAPIは、プライマリclasses.dexファイルのみではなく、特定のクラスローダを使用してメソッドに適したすべてのDEXファイルを検索します.