8

当我如文档所述在 Android Studio 中启用MultiDex 功能时,它会自动拆分为两个或多个 dex 文件。我无法配置它。而且似乎在主 dex 文件中,方法的数量非常接近限制(65536)。

问题是如何配置它,使主 dex 文件中的方法数量减少到一定数量,比如 60k。我必须把apk上传到amazon appstore,amazon的人会在主dex文件中添加一些方法,使其超过65536的限制。

4

1 回答 1

12

dx 工具有以下选项:

  • --minimal-main-dex - 仅将 main-dex-list 选择的类放入主 dex 中。
  • --set-max-idx-number - 未记录的选项,用于确定每个 dex 文件的最大方法数。

您必须通过指定这两个选项来自定义您的build.gradle脚本。例如(来源):

tasks.withType(com.android.build.gradle.tasks.Dex) {    dexTask ->
  def command = [] as List
  command << ' --minimal-main-dex'
  command << ' --set-max-idx-number=50000'
  dexTask.setAdditionalParameters(command)
}

请注意,如果您的主 dex 太大,这将无济于事。有一些规则可以控制哪些类应该放在主 dex 中。我在这里写了关于他们的博客。

编辑(1-9-2016):
Android 插件版本 1.5 不允许向 dx 添加其他参数,但似乎它将在即将发布的版本之一中修复。

于 2015-01-04T13:44:04.837 回答