Android Studio 错误 com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

来源:互联网 发布:python 3程序开发指南 编辑:程序博客网 时间:2024/04/30 22:27
 

http://blog.csdn.net/janronehoo/article/details/48053203

Android Studio 错误 com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

 1271人阅读 评论(0) 收藏 举报
 分类:

第1步 
添加依赖于你的build.gradle支持MultiDex库

dependencies { ... compile 'com.Android.support:multidex:1.0.1' ... }

第2步 
在buildType或productFlavor中开启multiDexEnabled。

defaultConfig { ... multiDexEnabled true ... }

现在,根据你的项目情况,你有3种选择:

  1. 如果你没有创建自己的Application 类,在你的清单文件AndroidManifest.xml中配置android.support.multidex.MultiDexApplication就可以了。

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

  2. 如果你有自己的Application类了,让它继承 android.support.multidex.MultiDexApplication而不是android.app.Application
  3. 如果你的Application继承了其他的类,并且你不想改变或者没办法改变。按照下面的方法重写attachBaseContext()

    [java] view plain copy
    1. <span style="font-size:18px;color:#ff6666;"@Override  
    2.      protected void attachBaseContext(Context base) {  
    3.          super.attachBaseContext(base);  
    4.          MultiDex.install(this);  
    5.      }</span>  


不论你选择上面哪种,都会创建多个大小差不多的dex文件代替单个庞大的dex文件。运行的时候回同事加载所有的这些dex文件。

当年编译app的时候,Gradle会生成很多个dex文件和一个apk文件让你可以在设备或者模拟器上运行。

enter image description here
你可以从这个项目看到上面的效果


如果出现了64k 限制 那么应该也会出现  Out of memory 问题 
对于有很多依赖的项目,编译可能因为下面的错误中断

Error:Execution failed for task ':app:dexDebug'. ... Error Code: 3 Output: UNEXPECTED TOP-LEVEL ERROR: Java.lang.OutOfMemoryError: GC overhead limit exceeded at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:326) ...

在build.gralde android标签下面添加下面代码可以解决

dexOptions { incremental true javaMaxHeapSize "4g" }



http://stackoverflow.com/questions/27377080/after-update-of-as-to-1-0-getting-method-id-not-in-0-0xffff-65536-error-i

0 0