有没有办法在Android Studio中使用MultiDex功能时限制主dex文件中的方法数量

时间:2014-12-24 04:31:25

标签: android android-studio android-gradle multidex android-multidex

当我在Android Studio中启用MultiDex feature时,就像文档所说的那样,它会自动转换为两个或多个dex文件。我无法配置它。似乎在主dex文件中,方法的数量非常接近限制(65536)。

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

1 个答案:

答案 0 :(得分:11)

dx工具有以下选项:

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

您必须通过指定这两个选项来自定义 build.gradle 脚本。在示例中(source):

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中。我在博客上写了here

编辑(1-9-2016):
Android插件1.5版不允许在dx中添加其他参数,但在即将推出的版本中添加it seems that it will be fixed