您的位置:首页 > 移动开发 > Android开发

【笔记】Android Studio Gradle配置dex分包

2016-11-20 19:01 316 查看

原因

当app的方法数超过65535时生成的apk将无法安装,此时需要进行分包,在打包时将应用的代码分成多个dex,使住dex的方法数不超过系统限制。应用在启动或运行过程中,首先是主dex启动运行,再加载从dex。

分包

Gradle是android studio的构建工具。随着Gradle的升级完善,功能越来越强大,但改变也随之而来。具体不知道是从哪个Gradle版本开始的原先使用的在afterEvaluate区域配置分包的方式没法使用了,更加简单化的dexOptions分包配置出现了。

某Gradle版本之前

afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
def listFile = projectDir+'/maindexlist.txt'
if (dx.additionalParameters == null) {
dx.additionalParameters = []
} else {
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += '--main-dex-list='+listFile
dx.additionalParameters += '--minimal-main-dex'
}
}
}

某Gradle版本之后

dexOptions {//dex配置
javaMaxHeapSize "4g"
preDexLibraries = false
additionalParameters = [//dex参数详见 dx --help
'--multi-dex',//多分包
'--set-max-idx-number=60000',//每个包内方法数上限
'--main-dex-list='+projectDir+'/maindexlist.txt',//打包进主classes.dex的文件列表
'--minimal-main-dex'//使上一句生效
]
}


其中打包进主classes.dex的文件列表放在build.gradle同目录下的maindexlist.txt中

com/sjl/multidexdemo/MainActivity.class


Demo下载

参考

http://www.jianshu.com/p/b38124d332be
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息