当出现Error:The number of method references in a .dex file cannot exceed 64K. 错误的时候,我们很容易在网上查到解决方案。常见的就是在build.gradle的defaultConfig中添加 multiDexEnabled true,即:
defaultConfig {
applicationId "com.chinaums.commoncheck"
minSdkVersion 17
targetSdkVersion 25
versionCode 2201
versionName "2.2.0.1"
multiDexEnabled true
}
那 multiDexEnabled true这句话是什么意思呢?
我们知道,我们平常写代码,写的是.java文件。在Android虚拟机中(Dalvik或ART),.java文件是不能运行的,我们这些.java文件最终会编译成能在Android虚拟机上运行的.dex文件。一般小项目程序,最终会编译成一个的.dex文件,但是Android又有一个硬性要求,项目中的所有类的总方法数不能超过65536个。超过了,报错。
那为什么有的人没手动写几个类,方法数不多,却报了错呢?
这里大家要知道的是,总方法其实包括Android framwork method, lib method,还有你自己写的代码方法(code method)。如果你导入了太多包,很有可能总方法数超过65536个,就报错了。
multiDexEnabled true就是告诉编译器,哎呀,那我就配置说默认分包吧,这样当方法数太多时,分多个包处理。
网上还看到其他Error:The number of method references in a .dex file cannot exceed 64K. 的解决方法,但因为我自己没亲手试过,就不在这阐述了。发个链接,大家可以试试。
http://www.cnblogs.com/zhaoyanjun/p/5390690.html
http://blog.csdn.net/lvshuchangyin/article/details/51803154
网友评论