IntelliJ - 64K方法dex问题的动态类加载

时间:2014-01-15 19:55:40

标签: android intellij-idea dex

我正在开发一个快速接近dex文件的64K方法限制的项目。这个Android Developer blog post(自2011年7月起)解释了如何使用Ant驱动的命令行构建来动态加载类,但是没有探讨如何在IDE中使用它(除了说它不能在蚀)。

我环顾四周,找不到任何关于让这个系统在IntelliJ中工作的东西。 IntelliJ是否支持使用多个dex文件构建应用程序?如果是这样,如何设置它?

5 个答案:

答案 0 :(得分:3)

尝试使用ProGuard从项目中删除未使用的类和方法,您应该(希望)发现您不需要多个dex文件。

如果你这样说:IntelliJ和Eclipse只是IDE--它们不直接构建你的代码 - 所以你需要确定你的项目是如何构建的 - 很可能是Ant或Gradle。

如果您的项目是Gradle项目,那么项目根目录中将会有一个build.gradle文件 - 如果是这种情况,那么您将需要了解如何使用Android Gradle插件完成相同的操作,这是一个好地方开始时将是http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Manipulating-tasks

答案 1 :(得分:0)

有两种选择:

  1. 分解现有的课程。或
  2. 将您的课程移至另一个项目并将其构建为库(.jar)。正如博客帖子(在查询中提到)建议的那样,使用他们的类分别在项目中加载这个库(.jar)。

答案 2 :(得分:0)

您能提供有关项目的详细信息吗?

将PlayN库连接到项目后,我最近遇到了同样的问题。首先,我阅读了你提到的所有帖子和相关内容,但最终我通过从依赖的Pythagoras jar中排除部分类来解决问题(我删除了pythagoras.d包,这是为了#34; double",因为pythagoras.f," float",在PlayN中使用而不是它,这是PlayN中最大的依赖项之一。

也许你可以在项目依赖项中找到类似的弱点。

答案 3 :(得分:0)

Eclipse可以启动外部ant脚本,但这对工具没有帮助。最好的建议是Android Studio和Gradle,因为所有命令都在IDE外部运行,然后将此Ant脚本http://code.google.com/p/android-custom-class-loading-sample/source/browse/trunk/android-custom-class-loading-sample/build.xml移植到gradle。

请注意以下方面的一些官方支持:https://groups.google.com/forum/#!topic/gradle-android-plugin-users/zG_xUeVaV7s

答案 4 :(得分:0)

Multidex似乎是解决65K方法限制的最佳(也是最快)选项。 Google提供了有关设置Multidex here

的精彩文档