在以下API上未找到类“ androidx.multidex.MultiDexApplication”类:较低的API <= 19设备上的DexPathList

时间:2019-01-24 15:05:14

标签: android gradle androidx multidex android-multidex

我正在尝试将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>

怎么了?

6 个答案:

答案 0 :(得分:8)

在添加多dex后直到清理,我得到了这个错误:

./gradlew clean

答案 1 :(得分:2)

我清理了项目:

构建->清理项目

然后我去了:

文件->指示缓存并重新启动

编译,现在应该可以了!

答案 2 :(得分:0)

对于api级别<21,平台使用Dalvik运行时执行应用程序代码。在这种情况下,multidex库应该成为应用程序主DEX文件的一部分,该文件随后可以管理对其他DEX文件及其包含的代码的访问。

在您的情况下,主dex文件中似乎不存在Multidex库,因此在启动过程中,您的应用会给您错误:java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication"

您需要在multiDexKeepFile或multiDexKeepProguard中明确指定这些multidex类,以将其标记为主要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

答案 3 :(得分:0)

如果您使用的是androidx,请在下面使用功能性

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

供支持库使用

dependencies {
    // ...
    implementation 'com.android.support:multidex:1.0.3'
}

答案 4 :(得分:0)

如果您将矢量用作图像,请在Xml中将 android:src 更改为 app:srcCompat

答案 5 :(得分:0)

就我而言,我不得不在我的 build.gradle.kts(模块:app)中进行替换:

implementation("com.android.support:multidex:1.0.3")

implementation("androidx.multidex:multidex:2.0.1")

并在我的 gradle.properties 中添加以下内容:

android.useAndroidX=true