今天用Android Stuidio打包的时候报了以下错误:
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexIndexOverflowException: Cannot merge new index 65553 into a non-jumbo instruction!
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_31\bin\java.exe'' finished with non-zero exit value 2
原因
最新的ADT和SDK Tool在将jar转化成dex的时候,可能会合并类的代码,这将导致巨大的类;类中的每一个方法都分配有一个id,字节码中以id标识和调用方法;早期的Dalvik VM内部使用short类型变量来标识方法的id,最大值限制在65535。当方法数超过65535,则会报该错误。
解决方法
android studio的解决方案:
在build.gradle中dexOptions增加jumboMode true
elicpse的解决方案:
将dex.force.jumbo=true添加到project.properties文件中。
参考链接:http://blog.csdn.net/goldenfish1919/article/details/33729679