アプリにMultidex support を追加しようとしています。しかし、エラーが発生します:
Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo: Java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication" on path: DexPathList[[Zip file "/data/app/com.dfn.partner-2.apk"],nativeLibraryDirectories[/data/app-lib/se.Android-2, /vendor/lib, /system/lib]]
私のグラドルは:
defaultConfig {
multiDexEnabled true
}
そして
depenencies {
...
implementation 'androidx.multidex:multidex:2.0.1'
...
}
私のAndroidManifest.xmlには:
<application
Android:name="androidx.multidex.MultiDexApplication"
... >
...
</application>
何が悪いのでしょうか?
APIレベル<21の場合、プラットフォームはアプリケーションコードの実行にDalvikランタイムを使用します。このような場合、multidexライブラリはアプリのプライマリDEXファイルの一部である必要があります。これにより、追加のDEXファイルとそれらに含まれるコードへのアクセスを管理できます。
あなたの場合、Multidexライブラリがプライマリdexファイルに存在しないため、起動時にアプリがエラーを表示します:Java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication"
これらのmultidexクラスを明示的に指定して、multiDexKeepFileまたはmultiDexKeepProguardのいずれかで、プライマリdexで必要なものとしてマークする必要があります。
multiDexKeepFile
Android {
buildTypes {
release {
multiDexKeepFile file('multidex-main-dex-list.txt')
...
}
}
}
Multidex-main-dex-list.txtの内容は次のようになります。
androidx.multidex.MultiDexApplication
multiDexKeepProguard
Android {
buildTypes {
release {
multiDexKeepProguard file('multidex-main-dex-list.pro')
...
}
}
}
Multidex-main-dex-list.txtの内容は次のようになります。
-keep class androidx.multidex.MultiDexApplication
あなたがandroidxを使用している場合は、以下の依存関係を使用してください
dependencies {
// ...
def multidex_version = "2.0.1"
implementation "androidx.multidex:multidex:$multidex_version"
}
サポートライブラリ用
dependencies {
// ...
implementation 'com.Android.support:multidex:1.0.3'
}