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方法计数.
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
小智 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 来修复.
| 归档时间: |
|
| 查看次数: |
55069 次 |
| 最近记录: |