解决Android方法数超出限定的问题

在Android项目中引入过多的jar会出现错误:android

android.dex.DexIndexOverflowException: Cannot merge new index xxxx into a non-jumbo instruction!gradle

这个错误出现的缘由是 Android设定的方法数是65536(DEX 64K problem),超过这个方法数,致使dex没法生成,就没法生成APK.code

限制缘由:早期的Dalvik VM内部使用short类型变量来标识方法的id,就有了 最大方法数的限制65536。io

解决方法:变量

删除不用的方法,删除不使用的jar

项目维护时间长了,里面会出现再也不使用的类和再也不使用的方法,建议集中清理下,把再也不使用的方法,再也不使用的类都清除,这样的好处是代码也干净了,若是方法数超出的不是太多的话经过清理就能够让方法数减小到65536如下,通常来讲jar里面的方法数最好,清除一两个无用的jar包就能大大的减小方法数。打包

分包

经过在defaultConfig中设置multiDexEnabled能够开启分包模式,分包以后的Dex就低于了限制数,保证了正常的打包。方法

defaultConfig {
        multiDexEnabled=true
    }

忽略方法数限制的检查

android.dexOptions {
    jumboMode = true

}

设置dexOptions的,不作方法数限制的检查,这样作的缺点是apk没法再低版本的设备上面安装,会出现错误:项目

INSTALL_FAILED_DEXOPT时间

由于咱们项目的 minSdkVersion为14,因此我采用了第三种的解决方案,不支持低版本的Android设备。
以上的解决方法只是针对gradle的设置vi

相关文章
相关标签/搜索