实践是知识的母亲,知识是生活的明灯。这篇文章主要讲述Android 解决方法数 65536 (65k) 限制相关的知识,希望能为你提供帮助。
可能出现的错误信息:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
说明:这个方法是谷歌提供的.链接如下:解决步骤:1.步骤1:
https://developer.android.com/studio/build/multidex.html
android { compileSdkVersion 21 buildToolsVersion "21.1.0"defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...// Enabling multidex support.
multiDexEnabled true
}
...
}dependencies { compile ‘com.android.support:multidex:1.0.0‘ }
2.步骤2:
让应用支持多DEX文件。在MultiDexApplication javaDoc中描述了三种可选方法:
1.在AndroidManifest.xml的application中声明
android.support.multidex.MultiDexApplication;
2.如果你已经有自己的Application类,让其继承MultiDexApplication;
3.如果你的Application类已经继承自其它类,你不想/能修改它,那么可以重写attachBaseContext()方法:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
附言:Multidex仍有一些限制:
- DEX文件安装到设备的过程非常复杂,如果第二个DEX文件太大,可能导致应用无响应。此时应该使用ProGuard减小DEX文件的大小。
- 由于Dalvik linearAlloc的Bug,应用可能无法在Android 4.0之前的版本启动,如果你的应用要支持这些版本就要多执行测试。
- 【Android 解决方法数 65536 (65k) 限制】同样因为Dalvik linearAlloc的限制,如果请求大量内存可能导致崩溃。Dalvik linearAlloc是一个固定大小的缓冲区。在应用的安装过程中,系统会运行一个名为dexopt的程序为该应用在当前机型中运行做准备。dexopt使用LinearAlloc来存储应用的方法信息。Android 2.2和2.3的缓冲区只有5MB,Android 4.x提高到了8MB或16MB。当方法数量过多导致超出缓冲区大小时,会造成dexopt崩溃。
Multidex构建工具还不支持指定哪些类必须包含在首个DEX文件中,因此可能会导致某些类库(例如某个类库需要从原生代码访问Java代码)无法使用。
推荐阅读
- iWatch报错: Missing com.apple.developer.healthkit entitlement
- Android WiFi直连并互发图片
- 使用逻辑门的布尔代数简化示例
- 页面SEO(如何使用Yoast SEO优化WordPress网站())
- WordPress如何使用WooCommerce创建电商网站(综合指南)
- 如何在WordPress网站上设置Google AMP(加速移动页面)
- 如何使用Wordfence Security免费保护WordPress网站(深入指南)
- SSHFS(如何通过SSH挂载远程文件系统(分步指南))
- 25个最佳数据库管理系统合集(哪一个最好())