当使用AndroidX时,在次要dex文件中找不到MultiDexApplication类

6
我正在使用 '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文件中?如何解决这个问题?

有什么解决方案吗?@bplpu - jomin v george
1
还没有成功...你的AndroidX multidex也有同样的问题吗? - bplpu
1
是的,我也有同样的问题 :( - jomin v george
嘿,你在用 Fabric 吗?当我从我的项目中移除了 Fabric 时,它就可以工作了。@bplpu - jomin v george
不,我没有使用 Fabric。也许是通过移除 Fabric,你幸运地将 MultiDex 类放入了主 dex 文件中。 - bplpu
你是否将所有旧的 com.android.support 库更改为它们的新对应库?完整列表可在 https://developer.android.com/jetpack/androidx/migrate 找到。 - Vrakfall
2个回答

0
我在迁移到AndroidX之后遇到了同样的问题,尽管涉及的应用程序类是我们的自定义应用程序类。我尝试使用Android Studio清理项目,但那并没有起作用,所以最终我手动删除了所有的构建文件夹,并为Android Studio执行了“无效缓存和重启”,这对我至少解决了问题。

0
使用 multiDexKeepFile 选项要求 MultiDexApplication 最终出现在主 dex 文件中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接