解决“Cannot merge new index xxx into a non-jumbo instruction”的问题

https://developer.android.com/studio/build/multidex

配置方法数超过 64K 的应用

 

http://www.flysnow.org/2016/09/18/android-dex-jumbo-mode.html

解决“Cannot merge new index xxx into a non-jumbo instruction”的问题

今天遇到Jenkins报告收到一个比较奇怪的问题,从日志上看,提示如下:

 

Cannot merge new index xxx into a non-jumbo instruction

 

xxx一般是一个整数,比如66345等,从这个提示看,和Dex方法超过64K的限制一样,应该是同一个问题。不过App已经解决了这个64K方法的问题,怎么还会提示呢。

从提上看,是一个non-jumbo,让我想到了Dex的jumbo模式,这是一个用来配置制定该Dex是不是一个巨大的Dex的。报错的日志里显示是一个模块,从这可以推断出基本的问题:该模块需要生成一个Dex放进AAR包里给App使用,现在这个Dex生成不了啦,提示太大,这个是根本原因,所以只要解决了这个就可以了。

那么以前为什么不会出现这个问题呢,我们从git提交的历史来看,发现昨天的需求新增了一个第三方包,导致该模块的方法变多,超过了限制,所以今天就有了这个错误的提示。。

既然知道了原因,那么就很好解决了。

使用Gradle构建的,在模块的build.gradle里配置:

 

android {

dexOptions {

jumboMode true

}

}

如果是使用Eclipse+Ant构建的,在project.properties文件中增加如下配置:

 

dex.force.jumbo=true

就可以解决如上问题了。。

关于超过64K方法分Dex的解决办法可以参考官方的Configure Apps with Over 64K Methods这篇文章。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值