原因
最新的ADT和SDK Tool在将jar转化成dex的时候,可能会合并类的代码,这将导致巨大的类;类中的每一个方法都分配有一个id,字节码中以id标识和调用方法;早期的Dalvik VM内部使用short类型变量来标识方法的id,最大值限制在65535。当方法数超过65535,则会报该错误。
AS中的解决方案:
方案1:
在当前Module的gradle文件的android{ }中添加如下内容:
android {
.......
dexOptions { //添加这两行
jumboMode true
}
方案2 (google推荐使用这种)
在当前Module的gradle文件中添加如下内容:
defaultConfig {
......
multiDexEnabled true //添加这一行
}
Eclipse中的解决方案
将 dex.force.jumbo=true 添加到project.properties文件中。