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

Posted dongweiq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 21  
    
          multiDexEnabled 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. 当运行时如果看到如下错误:

    UNEXPECTED TOP-LEVEL ERROR:
    java.lang.OutOfMemoryError: Java heap space

    在dexOptions中有一个字段用来增加java堆内存大小:

      android {  
          // ...  
          dexOptions {  
              javaMaxHeapSize "2g"  
          }  
      }


以上是关于Android工程方法数超过65535的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

使用android-support-multidex解决Android方法数超过65535的问题

APK方法数超过65535及MultiDex解决方案

解决安卓中单个dex方法数超过65535的方法

解决Android单个dex文件不能超过65535个方法问题

Android_65535问题的解决

导出Excel功能,如果行数超过65535行,怎么解决