使用multidex问题,显示在dexpathlist中找不到类

时间:2017-03-21 10:35:30

标签: android crash multidex

我在我的应用程序中使用Multidex,这导致一些问题导致我的应用程序在安装后立即打开它意外崩溃,当我通过我的android工作室运行它但我尝试使用安装应用程序时工作正常我的apk在某些设备上崩溃,我认为这是设备特定的东西,但它每次我使用APK文件安装在任何设备上时崩溃。我已经尝试了很多方法来解决这个问题,

  • 我尝试清理项目并再次构建它来生成apk 并安装它,但没有工作

  • 我尝试使缓存失效并重新启动Android工作室但仍然无法正常工作

  • 然后我开始在互联网上寻找解决方案,我发现了许多建议,我尝试了所有这些建议。我浏览了各种帖子,博客和文档,包括64K limitMultidex android documentation等等......

我的应用程序的min sdk版本是16,所以我做了这个,

defaultConfig {
    ......
    minSdkVersion 16
    targetSdkVersion 25
    .......
    multiDexEnabled true
    proguardFiles 'proguard-rules.pro'
    ........        
    vectorDrawables.useSupportLibrary(true)

    // default scheme variables
    buildConfigField "String", "DEFAULT_SCHEME", "\"http\""
    buildConfigField "String", "REDIRECT_SCHEME", "\"https\""
}

我将此行添加到依赖项

 compile 'com.android.support:multidex:1.0.1'

我试图通过gradle文件中的dexoptions来理解和实验很多,

dexOptions {
    preDexLibraries = false
    javaMaxHeapSize "4g"
}

我创建了一个名为multidex.keep的文件,其内容如下:

android/support/multidex/BuildConfig/class
android/support/multidex/MultiDex$V14/class
android/support/multidex/MultiDex$V19/class
android/support/multidex/MultiDex$V4/class
android/support/multidex/MultiDex/class
android/support/multidex/MultiDexApplication/class
android/support/multidex/MultiDexExtractor$1/class
android/support/multidex/MultiDexExtractor/class
android/support/multidex/ZipUtil$CentralDirectory/class
android/support/multidex/ZipUtil/class

然后我将这些行添加到应用程序的gradle文件中,

afterEvaluate {
tasks.matching {
    it.name.startsWith('dex')
}.each { dx ->
    if (dx.additionalParameters == null) {
        dx.additionalParameters = []
    }
    dx.additionalParameters += '--multi-dex'
    dx.additionalParameters += "--main-dex-      list=$projectDir/multidex.keep".toString()
}
}

我仍然无法解决问题并仍在寻找解决方案,欢迎任何帮助/建议,谢谢你们的补充!

1 个答案:

答案 0 :(得分:0)

在清单文件的应用标记中添加以下行:

android:name="android.support.multidex.MultiDexApplication"