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

来源:互联网 发布:梯形螺纹编程实例 编辑:程序博客网 时间:2024/06/01 13:23

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

?
1
com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.dex.DexIndexOverflowException:Cannot merge newindex 66221into 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 {
        jumboModetrue
    }
 
}</code>

阅读全文
0 0
原创粉丝点击