我正在尝试将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>
怎么了?
答案 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