当我在
Android Studio中启用
MultiDex feature时就像文档所说的那样,它会自动转换为两个或更多dex文件.我无法配置它.似乎在主dex文件中,方法的数量非常接近限制(65536).
问题是如何配置它,使主dex文件中的方法数量减少到一定数量,比如60k.我必须将apk上传到亚马逊appstore,亚马逊的人会在主要的dex文件中添加一些方法并使其超过65536的限制.
解决方法
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.