dexOptions——安卓gradle

目录
1、前言
2、dexOptions 的结构简析
3、dexOptions的属性
4、写在最后
java

1、前言

今天分享 dexOptions 配置,这个配置用于控制咱们代码编译打包成dex的细节。android

2、dexOptions 的结构简析

一、dexOptions 存在位置

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
复制代码

3、dexOptions的属性

一、additionalParameters

  • 类型:List< String >
  • 描述:用于添加 dex 的命令。能够经过 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

二、javaMaxHeapSize

  • 类型:String
  • 描述:设置运行 dx 的最大内存
  • 使用:
dexOptions {
	// 设置了 2G
	javaMaxHeapSize '2048m'
}
复制代码

三、jumboMode

  • 类型:boolean
  • 描述:每一个 dex 的字符串索引也有限制,正常状况下为 2^16 个。但开启jumboMode 模式,能够支持到 2^32可是值得注意的是,这个并非 64K方法数量限制问题的一种方案。
  • 使用:
dexOptions {
	jumboMode true
}
复制代码

四、keepRuntimeAnnotatedClasses

  • 类型:boolean
  • 描述:将全部带有运行时注解的类保留在主dex中。默认开启,主要是解决java.lang.reflect.Field.getDeclaredAnnotations致使没法获取崩溃问题。
  • 使用:
dexOptions {
	keepRuntimeAnnotatedClasses false
}
复制代码

五、maxProcessCount

  • 类型:Integer
  • 描述:可用于dex的最大并发进程数,默认为4。值得注意的是,dx使用的内存大小将为 maxProcessCount*javaMaxHeapSize
  • 使用:
dexOptions {
	maxProcessCount 4
}
复制代码

六、preDexLibraries

  • 类型:boolean
  • 描述:预编译 dex 库。在咱们build的时候会快些,但clean时便会慢,默认开启
  • 使用:
dexOptions {
	preDexLibraries true
}
复制代码

七、threadCount

  • 类型:Integer
  • 描述:运行dx时使用的线程数。 默认为4。
  • 使用:
dexOptions {
	threadCount 4
}
复制代码

4、写在最后

Gradle项目地址:Github传送门 (若是对你有所帮助或喜欢的话,赏个star吧,码字不易,请多多支持)ide

本篇博文的 dexOptions 配置,请进传送门post

若是以为本篇博文对你有所启发或是解决了困惑,给个赞或关注我呀,小盆友会继续分享更多的优质文章。gradle

或是请我喝杯咖啡吧,小盆友会更加信心百倍的写下去 zincPay.jpg

相关文章
相关标签/搜索