DexException:无法将新索引65536合并到非jumbo指令中

Mar*_*kus 83 android android-studio android-gradle-plugin

由于某些未知原因,我的应用程序突然无法从Android Studio构建.

我一直在接受

> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /home/martynas/android-sdk/build-tools/19.1.0/dx --dex --num-threads=4 --output
...
...
...
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Cannot merge new index 65536 into a non-jumbo instruction!
Run Code Online (Sandbox Code Playgroud)

虽然从命令行成功构建了相同的应用程序.我检查了方法引用计数,它低于可怕的64k.

我现在正在使用AS 0.8.11.

lyd*_*iff 245

在build.gradle中设置jumboMode属性:

android {
    ...
    dexOptions {
        jumboMode true
    }

}
Run Code Online (Sandbox Code Playgroud)

我也发现这很有用:按包显示dex方法计数.

  • 谢谢!它也适合我.但这个"jumboMode"是什么意思呢? (12认同)
  • 像魅力一样工作.节省了我的时间.十分感谢. (4认同)
  • @ yital9你可以在这里了解更多关于jumbo模式的信息:http://stackoverflow.com/a/30517283/4034572 (3认同)

Har*_*ana 56

尝试在project.properties上添加此行

dex.force.jumbo =真

这增加了dex文件中字符串的限制.你的项目可能会编译.

注意:同样使用jumbo set,仅对于单个dex中的方法,另一个限制为64K.如果将来获得此限制,则需要删除一些依赖项.

更新 - Google Play Services 6.5(12-08-14)

在6.5版本中,Google最终拆分了Google Play服务.因此,从现在开始,可以有选择地将API编译到您的可执行文件中.

示例:

compile 'com.google.android.gms:play-services-maps:6.5.+'
compile 'com.google.android.gms:play-services-ads:6.5.+'
Run Code Online (Sandbox Code Playgroud)

对于所有其他个人Google Play服务API,请访问d.android.com上的页面.

更新(2015年4月21日):https: //developer.android.com/tools/building/multidex.html

  • 添加到`project.properties`没有工作,所以我更新了我的gradle这个构建脚本如下所述:http://stackoverflow.com/questions/17320088/android-build-dex-jumbo-mode-in-gradle (11认同)

小智 54

这适合我.我得到了com.android.dex.DexIndexOverflowException: Cannot merge new index 66636 into a non-jumbo instruction!

android {
    ...
    dexOptions {
        jumboMode true
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可能已达到dex中的方法参考限制,这是一个不同的问题.您需要使用multidex或proGuard.


goo*_*oid 13

当合并的dex文件具有超过65536个字符串时,这是合并中的错误.新索引不能适合const-string指令,并且dex merger不支持更改指令(如果它们的大小不同),因此它不能扩展为const-string/jumbo指令.这是修复的jb-mr1通过添加一个新选项: - force-jumbo.这个bug可以通过添加"dex.force.jumbo=true"到project.properties 来修复.