我正在尝试将我的应用程序与 Box、Dropbox 和 Google Drive 集成。所有这 3 项服务都需要许多 3rd 方 jar。此外,我的应用程序已经需要一些 3rd 方 jar。现在,当我尝试从 eclipse 运行我的应用程序时,出现以下错误:
无法执行 dex:方法 ID 不在 [0, 0xffff] 中:65536 转换为 Dalvik 格式失败:无法执行 dex:方法 ID 不在 [0, 0xffff] 中:65536
似乎发生此错误是因为我的应用程序有太多方法。我相当肯定这些方法中的大部分来自第 3 方 jar,因此尝试通过简化我的代码来解决这个问题是不现实的。我在网上找到了这两个建议。
添加
dex.force.jumbo=true
到 project.properties(并使用 adt 版本 21)。我这样做了,但仍然得到错误。使用多个 dex 文件,如下所述:http ://android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.html 。这似乎可能是唯一的选择,但我不明白它如何适用于我的情况。问题是像 Drive 这样的服务有太多的依赖关系。在引用其依赖项时,此解决方案是否不需要我修改 Drive 源以使用变形?(这显然不是一种选择)。
使用 proguard 缩小删除未使用的代码/方法。使用 proguard 导出我的应用程序确实有效,并且文档服务集成在 >4.0 设备上按预期工作。但是,在 2.3 设备上进行测试时会引发 classnotfound 错误。
所以,我希望对这个问题有一些建议。选项 2 是我的情况的解决方案吗?我应该考虑另一种解决方案吗?