【问题标题】:Unable to instantiate application android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: on path: DexPathList无法实例化应用程序 android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: on path: DexPathList
【发布时间】:2017-10-07 10:09:46
【问题描述】:

你好吗?我已经仔细搜索了这个问题,但似乎没有关于为什么以及如何解决这个问题的完整答案。

好的,起初我运行的是带有完全过时的 gradle 和 sdk 版本的 Android Studio 1.5.1,但当时我觉得使用那些旧版本已经足够了,但现在我将所有这些更新到了 android 2.3.1 最新的 SDK 和最新的 Gradle。

你可能已经知道如果我直接从 Android Studio 运行它工作正常,但是当我复制我的 app_debug.apk 文件时它突然显示错误

 Unable to instantiate application android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/com.asd.asd.asd1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

我已经为这个特定错误应用了许多解决方案,其中一个成功的方法是在 modul:app gradle 中更改我的等级版本

classpath 'com.android.tools.build:gradle:2.3.1'

到

classpath 'com.android.tools.build:gradle:2.2.3'

但后来我尝试了我之前制作的所有其他应用程序并应用了相同的方法。奇怪的是,它没有用。

我认为我在这里缺少一些东西,但我不知道是什么,我不想启用 multiDexEnabled,因为我认为这不是解决这个问题的好方法。

谢谢。

【问题讨论】:

    标签: java android android-studio android-gradle-plugin build.gradle


    【解决方案1】:

    你要做的就是在 gradle 中启用 Multidex

    defaultConfig{
         multiDexEnabled true
    }
    

    否则,您需要尽量减少对重度依赖项的使用。如果你坚持使用那些依赖,你需要在那些依赖中排除module android support module..

    例如,我的列表中已经有 appcompat-v7。所以从第三方库中排除模块 appcompat-v7。

    compile ('uk.co.chrisjenx:calligraphy:2.2.0'){
            exclude group: 'com.android.support', module: 'appcompat-v7'
            transitive = false
    }
    

    【讨论】:

    • 虽然这是一种解决方案,但这是否意味着我必须在从以前版本的 sdk 导入的每个应用程序中都这样做?
    猜你喜欢
    • 2018-05-26
    • 2017-02-13
    • 2012-05-05
    • 2014-07-06
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多