未找到 MultiDexApplication 类

Posted

技术标签:

【中文标题】未找到 MultiDexApplication 类【英文标题】:MultiDexApplication Class Not Found 【发布时间】:2019-05-07 16:09:41 【问题描述】:

我将 MultiDex 与 Proguard 一起使用,它适用于所有 API >= 21,甚至可能是 20(无法在模拟器上下载)的手机,但我的最小 SDK 设置为 19,而在 19 上它抛出这个错误

Unable to instantiate application android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication"

为什么会这样,我可以解决它吗?

【问题讨论】:

那么你的 gradle 中有:Multidex support prior to Android 5.0 吗?如果是这样,您还做了哪些其他代码缩减? @MorrisonChang 是的,我在我的 gradle 中添加了这个支持库。而且我不确定您所说的其他代码缩小是什么意思。我使用默认的 Proguard 规则,添加了一些例外,所以它保持我的一些代码不变,比如我的数据对象,我也添加了一些 Firebase '-keep' 规则。 【参考方案1】:

好的,伙计们,我在这里找到了解决方案。我尝试了很多不同的东西,到处都推荐,尝试扩展 Application 类,在 onCreateattachBaseContext 中安装 multiDex,尝试添加 multiDex 保存文件,在不同的设备上尝试过所有这些东西,解决方案只是简单的干净构建。

我刚刚在 Android Studio 中转到 Build -> Clean Project,现在它在 Android 19 上运行

【讨论】:

【参考方案2】:

在您的 proguard 配置文件中,添加以下行:

-keep class android.support.multidex.**  *; 

这一行是为了防止类MultiDexApplication 被删除。

【讨论】:

这实际上不是 Proguard 的问题,我添加了这一行,但是如果我禁用 Proguard,我会得到同样的错误,我认为它与 Proguard 有关,因为其他“缺失”错误,但他们在我更新了所有依赖项后消失了,现在我的所有内容都是最新的,但 MultiDex 错误仍然出现,可能是我的一个依赖项的一些更新导致了这个错误。我会修改标题,以免误导

以上是关于未找到 MultiDexApplication 类的主要内容,如果未能解决你的问题,请参考以下文章

如何在 libGDX for Android 中使用 MultiDexApplication

无法实例化应用程序 androidx.multidex.MultiDexApplication:java.lang.ClassNotFoundException

致命错误:未捕获的错误:未找到“Omnipay\Omnipay”类

laravel 类 'GuzzleHttp\Client' 未找到

致命错误:未捕获的错误:未找到类“用户名”

未找到 WindowsAnsiOutputStream 类