【问题标题】:MultiDexApplication Class Not Found未找到 MultiDexApplication 类
【发布时间】: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' 规则。

标签: android android-proguard android-multidex


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 这实际上不是 Proguard 的问题,我添加了这一行,但是如果我禁用 Proguard,我会得到同样的错误,我认为它与 Proguard 有关,因为其他“缺失”错误,但他们在我更新了所有依赖项后消失了,现在我的所有内容都是最新的,但 MultiDex 错误仍然出现,可能是我的一个依赖项的一些更新导致了这个错误。我会修改标题,以免误导
    猜你喜欢
    • 2019-04-11
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多