android Cannot merge new index 66221 into a non-jumbo instruction(Android studio)bug

更新Gradle,重编变异安装的时候出现了如下的问题:

?
1
com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.dex.DexIndexOverflowException:Cannot merge new index 66221 into a non-jumbo instruction!

问题的根源

?
一个vm最多只能有 65536 个方法,那么是否真的是你的项目方法总数超过了这个数?对于我来说不是,那是为什么呢?Gradle插件将jar转化成dex的时候,可能会合并类的代码,这将导致巨大的类,类中的每一个方法都分配有一个id,字节码中以id标识和调用方法;早期的Dalvik VM内部使用 short 类型变量来标识方法的id,最大值限制在 65535 ;综合上述因素,代码在安装的时候,不能通过验证,所以安装失败。

于是找了好久,网上普遍的解决办法是说在project.properties文件里面添加一行:dex.disable.merger=true,然后clean一下项目接着重新变异就不会报错了。

需要注意的是,网上的该解决办法是针对Eclipse,而对于Android Studio来说却没有找到相应的资料。
于是我试了上面的办法,问题还是存在,大家可以试一下,不敢保证此方法对于任一版本的Android studio都是无效的。

解决我问题的办法:

在builde.gradle(Moudle:app)中添加如下代码:问题得到解决

?
android {
     .....
     //解决问题的代码
     dexOptions {
         jumboMode true
     }
 
}</code>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值