web-dev-qa-db-fra.com

Impossible de trouver la classe "androidx.multidex.MultiDexApplication" sur le chemin: DexPathList sur les périphériques API inférieurs <= 19

J'essaie d'ajouter Multidex support à mon application. Mais je reçois une erreur:

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]]

Mon diplômé a:

defaultConfig {
   multiDexEnabled true
}

et

depenencies {
   ...
   implementation 'androidx.multidex:multidex:2.0.1'
   ...
}

Mon AndroidManifest.xml a:

<application
  Android:name="androidx.multidex.MultiDexApplication"
  ... >
...
</application>

Qu'est-ce qui pourrait mal?

5
Vladyslav Panchenko

Pour le niveau api <21, la plateforme utilise le runtime Dalvik pour exécuter le code d'application. Dans de tels cas, la bibliothèque multidex doit faire partie du fichier DEX principal de votre application, qui peut ensuite gérer l'accès aux fichiers DEX supplémentaires et au code qu'ils contiennent.

Dans votre cas, il semble que la bibliothèque Multidex ne soit pas présente dans le fichier dex principal et donc au démarrage, votre application vous donne une erreur: Java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication"

Vous devez spécifier explicitement ces classes multidex dans multiDexKeepFile ou multiDexKeepProguard pour marquer celles-ci comme requises dans dex principal.

multiDexKeepFile

Android {
    buildTypes {
        release {
            multiDexKeepFile file('multidex-main-dex-list.txt')
            ...
        }
    }
}

Le contenu de multidex-main-dex-list.txt se présente comme suit:

androidx.multidex.MultiDexApplication

multiDexKeepProguard

Android {
    buildTypes {
        release {
            multiDexKeepProguard file('multidex-main-dex-list.pro')
            ...
        }
    }
}

Le contenu de multidex-main-dex-list.txt se présente comme suit:

-keep class androidx.multidex.MultiDexApplication

1
nitika

si vous utilisez la dépendance d'utilisation androidx ci-dessous

dependencies {
    // ...
    def multidex_version = "2.0.1"
    implementation "androidx.multidex:multidex:$multidex_version"
}

pour l'utilisation de la bibliothèque de support

dependencies {
    // ...
    implementation 'com.Android.support:multidex:1.0.3'
}
0
Isaac Sekamatte