Класс MultiDexApplication во вторичном файле dex не найден при использовании AndroidX - PullRequest
0 голосов
/ 08 ноября 2018

Я использую 'androidx.multidex:multidex:2.0.0' и указываю на класс MultiDexApplication из манифеста, используя:

<application
    android:name="androidx.multidex.MultiDexApplication"
    ...

В build.gradle я также добавил следующую запись:

defaultConfig {
    ...
    multiDexEnabled true
    ...

При запуске приложения в версиях Android старше 5.0 (API 21) я получаю следующее исключение:

java.lang.RuntimeException: Unable to instantiate application androidx.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication" on path [...]

Я использовал браузер APK и увидел, что класс MultiDexApplication и другие вспомогательные классы MultiDex находятся в файле classes2.dex. Вероятно, поэтому он не находит класс.

Должен ли я заставить эти классы быть в главном файле classes.dex? Как это можно исправить?

Ответы [ 3 ]

0 голосов
/ 03 января 2019

У меня возникла та же проблема после перехода на AndroidX, хотя рассматриваемый класс приложения был нашим пользовательским классом Application. Я пытался очистить проект от Android Studio, но это не сработало, поэтому в конце концов я вручную удалил все папки сборки и, для большей мере, сделал «Недействительные кэши и перезапуск» для Android Studio, и, похоже, это помогло я по крайней мере.

0 голосов
/ 23 января 2019

Используйте параметр multiDexKeepFile, чтобы MultiDexApplication попадал в основной файл dex.

0 голосов
/ 08 ноября 2018

Попробуйте это. Я надеюсь, что это поможет вам.

<application
        android:name="android.support.multidex.MultiDexApplication"
        ...
...