android - 如何解决 Dalvik 编译器对 64K 方法的限制问题?

标签 android protocol-buffers dalvik dex

我和我的团队从另一个团队继承了一个大型 Android 项目。据报道,包含所有库的整个应用程序有大约 35000 个方法。我们现在的任务是在需要使用 Protocol Buffers 的应用中实现一个新服务。

问题是生成的 .jar 文件包含所有必需的 .proto 文件创建另外几个 35000 个方法,即 70000 个方法。如果您不知道,Android 编译器对每个 .dex 文件有 65536 个方法的限制。我们显然超出了该限制,并且在尝试编译应用程序时遇到以下错误:

Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

是的,应用程序架构可能应该进行重组,但这需要时间。目前,我们正在尝试找出一个临时解决此问题的解决方案。

有什么建议吗?

最佳答案

您可以使用另一个 DEX 文件。这就是你的做法:

http://android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.html

关于android - 如何解决 Dalvik 编译器对 64K 方法的限制问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15436956/

相关文章:

Android Studio 无法解析自定义项目布局中的 androidTestImplementation 依赖项

java - Android & Dalvik - 获取对象的大小

android - ART 沙盒应用程序与 Dalvik 类似吗?

c++ - 将多个 protobuf 编码到文件

python - 如何在 Google 应用引擎上使用 gcloud?

c++ - Protocol Buffers with dll 编程 c++

java - 在Android中实现类Spring包扫描

android - 如何在 Android 中使用 OSMDroid/OSMBonusPack 处理 map 上的长按?

java - 解析 JsonObject 时出错

android - 在应用程序退出时保存 Android 应用程序数据