Android工程方法数超过65535的解决办法

宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述Android工程方法数超过65535的解决办法相关的知识,希望能为你提供帮助。

  • Error:Execution failed for task ‘:ttt:transformClassesWithDexForDebug‘.
    com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
    很不幸,今天被我遇到了,集成了一个Udesk客服功能,导入它的moudle,里面乱七八糟导入了一大堆第三方。作为一个第三方客服,你这样真的好么?
解决方案
  1. Gradle 配置:app的build.gradle中
    android { defaultConfig { applicationId "com.xxx.xxx" minSdkVersion 14 targetSdkVersion 21multiDexEnabled true//加上这句话 } }

  2. Gradle 配置:app的build.gradle中
    dependencies { compile ‘com.android.support:multidex:1.0.1‘ }

  3. 自己的Application 类重写方法:
    @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }

    也可以继承android.support.multidex.MultiDexApplication类,不用重写上面方法
  4. 如果你的应用中包含引用的lirary工程或moudle,需要将预编译设置为false:
    android { // ... dexOptions { preDexLibraries = false } }

  5. 【Android工程方法数超过65535的解决办法】当运行时如果看到如下错误:
    UNEXPECTED TOP-LEVEL ERROR:
    java.lang.OutOfMemoryError: Java heap space
    在dexOptions中有一个字段用来增加java堆内存大小:
    android { // ... dexOptions { javaMaxHeapSize "2g" } }




    推荐阅读