错误:将字节码转换为dex时出错:原因:com.android.dex.DexException: - main-dex-list中的类太多,超出了主要的dex容量

时间:2017-10-14 16:53:59

标签: android android-gradle proguard dex

我正在尝试为我的应用生成已签名的apk,并收到以下错误

  

错误:将字节码转换为dex时出错:   原因:com.android.dex.DexException: - main-dex-list中的类太多,主要的dex容量超出

     

错误:任务':app:transformClassesWithDexForRelease'执行失败。   com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:执行java进程时出错main class com.android.dx.command.Main with arguments {--dex --force-jumbo --num-threads = 4 --multi-dex --main-dex-list C:\ Users \ user \ Desktop \ Mystuff \ GetALifFitness \ WonderStree-Production \ app \ build \ intermediates \ multi-dex \ release \ maindexlist.txt --output C:\ Users \ user \ Desktop \ Mystuff \ GetALifFitness \ WonderStree-Production \ app \ build \ intermediates \ transforms \ dex \ release \ folders \ 1000 \ 1f \ main C:\ Users \ user \ Desktop \ Mystuff \ GetALifFitness \ WonderStree-Production \ app \ build \ intermediates \ transforms \ proguard \ release \ jars \ 3 \ 1f \ main.jar }

我已经从这个链接尝试了一些解决方案Too many classes in --main-dex-list, main dex capacity exceeded但它对我不起作用。 你们能告诉我可能出现的问题或向我提供解决方案吗?谢谢。

我已经尝试过 - 这就是我的proguard文件的样子:

-keepclassmembers class toan.android.floatingactionmenu.FloatingActionsMenu$RotatingDrawable { void set*(***);   *** get*(); }

-ignorewarnings

-keep class * {    public private *; }

-dontwarn okio.**

-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**

-dontwarn com.mixpanel.**

我添加的build.gradle文件:

dexOptions {
        javaMaxHeapSize "4g"
        keepRuntimeAnnotatedClasses false
}

另外,我删除了不需要的库。然而这个问题没有解决。

1 个答案:

答案 0 :(得分:1)

我通过从build.gradle文件

中删除此特定行来解决此问题
  

multiDexKeepProguard文件(' proguard-rules.pro')

这就是我的build.gradle文件现在的样子

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        ext.enableCrashlytics = true
    }
}