我有一个非常大的 Android 项目,其中包含多个大型 3rd 方 jar(作为 Android 库)。
我相信我已经达到了 Dex 的最大方法数限制(通过 eclipse 编译):
[2012-11-18 02:28:45 - 在文件中查找] Dx 处理 classes.dex ...
[2012-11-18 02:28:48 - Dex Loader] 无法执行 dex:无法将新索引 66774 合并到非巨型指令!
[2012-11-18 02:28:48 - 在文件中查找] 转换为 Dalvik 格式失败:无法执行 dex:无法将新索引 66774 合并到非巨型指令中!
因此,我利用 SDK 工具 21(平台工具 16)将我的主项目 project.properties 编辑为 set dex.force.jumbo=true
。
该标志允许我生成 APK。但我无法正确安装它(在物理和模拟器上)。似乎有一个 dex 优化器故障:
11-18 20:11:05.338: I/PackageManager(103): 运行 dexopt: com.mypackage.myapp
11-18 20:11:08.577: E/dalvikvm(868): 无序 method_idx: 0x2ae0 然后0x1
11-18 20:11:08.577: E/dalvikvm(868): 项目 1544 出现问题@偏移量 0xf7ae24
11-18 20:11:08.577: E/dalvikvm(868): 部分类型 2006 的交换失败
11-18 20 :11:08.577:E / dalvikvm(868):错误:字节交换+验证失败
11-18 20:11:08.597:E / dalvikvm(868):优化失败
11-18 20:11:08.597:W / installd( 39): DexInv: --- END '/data/app/com.mypackage.myapp-1.apk' --- status=0xff00, 进程失败
11-18 20:11:08.597: E/installd(39): dexopt 在“/data/dalvik-cache/data@app@com.mypackage.myapp-1.apk@classes.dex”上失败 res = 65280
11-18 20:11:08.697: W/PackageManager(103): 包无法安装在 /data/app/com.mypackage.myapp-1.apk
11-18 20:11:09.018: D/dalvikvm( 103): GC_EXPLICIT 释放 1698K, 13% 释放 17034K/19463K, 暂停 7ms+135ms
11-18 20:11:09.068: D/AndroidRuntime(780): 关闭 VM
我是否试图将dex.force.jumbo
标志用于它不打算用于的目的,或者这个错误是不可预测的?
如果是这样,是否有更好的策略来生成包含大量类/方法的项目?