目录
1、前言
2、dexOptions 的结构简析
3、dexOptions的属性
4、写在最后
java
今天分享 dexOptions 配置,这个配置用于控制咱们代码编译打包成dex的细节。android
dexOptions 会映射为 com.android.build.gradle.internal.dsl.DexOptions
类,继承结构以下:git
dexOptions 用于打包时的代码分包,因此咱们须要的是进行apk的打包编译。github
// app:clean 为了先清空以前的文件
// app:aR 进行编译 release 包
// mac 使用 ./gradlew
// window 使用 gradlew
./gradlew app:clean app:aR
复制代码
dx --help
查看支持的命令和描述。咱们都知道 64k 的问题,解决的方案就是将代码分红多个dex包,在 buildTypes 一篇中已经有介绍过如何来实现这一方案。但在这里又涉及到一个问题,由于apk在启动的时候,会先加载主dex(即 classes.dex),如今只想将咱们须要的文件放在主dex中,其他的放在次dex中,就能够借助 dexOptions 来完成。bash
buildTypes {
debug {
// 开启 dex 分包
multiDexEnabled true
// 设置将须要保存至主dex的文件
multiDexKeepFile file('keep/keep_in_main_dex.txt')
}
}
dexOptions {
additionalParameters '--minimal-main-dex'
}
复制代码
keep/keep_in_main_dex.txt 内容并发
com/zinc/gradlestudy/MainActivity.class
复制代码
效果图 app
dexOptions {
// 设置了 2G
javaMaxHeapSize '2048m'
}
复制代码
2^16
个。但开启jumboMode 模式,能够支持到 2^32
。可是值得注意的是,这个并非 64K方法数量限制问题的一种方案。dexOptions {
jumboMode true
}
复制代码
java.lang.reflect.Field.getDeclaredAnnotations
致使没法获取崩溃问题。dexOptions {
keepRuntimeAnnotatedClasses false
}
复制代码
maxProcessCount*javaMaxHeapSize
。dexOptions {
maxProcessCount 4
}
复制代码
dexOptions {
preDexLibraries true
}
复制代码
dexOptions {
threadCount 4
}
复制代码
Gradle项目地址:Github传送门 (若是对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)ide
本篇博文的 dexOptions 配置,请进传送门post
若是以为本篇博文对你有所启发或是解决了困惑,给个赞或关注我呀,小盆友会继续分享更多的优质文章。gradle
或是请我喝杯咖啡吧,小盆友会更加信心百倍的写下去 zincPay.jpg