Не удалось найти класс «androidx.multidex.MultiDexApplication» по пути: DexPathList на устройствах с более низким API <= 19 - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь добавить поддержку Multidex в мое приложение.Но я получаю сообщение об ошибке:

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

Мой Gradle имеет:

defaultConfig {
   multiDexEnabled true
}

и

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

Мой AndroidManifest.xml имеет:

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

Что может быть не так?

1 Ответ

0 голосов
/ 20 мая 2019

Для уровня API <21 платформа использует среду выполнения Dalvik для выполнения кода приложения.В таких случаях мультидексная библиотека должна быть частью основного файла DEX вашего приложения, который затем может управлять доступом к дополнительным файлам DEX и коду, который они содержат.</p>

В вашем случае, похоже, что библиотека Multidex отсутствует в основном файле dex и, следовательно, во время запуска ваше приложение выдает ошибку: java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication"

Вам необходимо явно указать эти мультидексклассы в 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

...