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

相關文章
相關標籤/搜索