aaptOptions——安卓gradle

目錄
一、前言
二、aaptOptions 結構簡析
三、aaptOptions 屬性
四、寫在最後

一、前言

今天進行分享 aaptOptions 配置。aapt 全稱爲 Android Asset Packaging Tool,即爲Android資源打包工具。可以通過其來進行配置打包的細節。

二、aaptOptions 結構簡析

1、存在形式

會映射爲 com.android.build.gradle.internal.dsl.aaptOptions 類。該類比較簡單,沒有繼承任何類

2、所屬位置

android{
	aaptOptions{
		...
	}
}

三、aaptOptions 屬性

1、additionalParameters

  • 類型:List< String >
  • 描述:給 aapt 執行時添加額外參數,添加的參數可通過 aapt --help 進行查看。
  • 使用:

舉個例子,進行更改包名

aaptOptions{
	// 會將包名更改爲 com.zinc.test
	additionalParameters '--rename-manifest-package','com.zinc.test'
}

AndroidManifest.xml 文件如下,包名爲 com.zinc.gradlestudy

在終端運行./gradlew clean aR,進行運行編譯,編譯完的包如下所示,包名更改爲com.zinc.test

2、 cruncherProcesses

  • 類型:int
  • 描述:設置處理的線程數。
  • 使用:
aaptOptions{
	cruncherProcesses 4
}

3、failOnMissingConfigEntry

  • 類型:boolean
  • 描述:設置是否無法找到配置條目,則強制aapt返回錯誤。
  • 使用:
aaptOptions{
	failOnMissingConfigEntry true
}

4、ignoreAssets

  • 類型:boolean
  • 描述:設置忽略的資源
  • 使用:
aaptOptions{
	// 忽略掉 png 後綴的圖像,只會排除 assets 下的資源,res下的資源不會排除
	ignoreAssets "*.png"
}

使用了上面的配置之後,使用

./gradlew app:clean app:aR

進行打包,包中內容如下,t121212.png 的圖片以 ‘png’ 結尾則被過濾掉

5、ignoreAssetsPattern

  • 類型:boolean
  • 描述:設置忽略的資源
  • 使用:
aaptOptions{
	// 忽略掉 png 後綴的圖像,只會排除 res 下的資源,assets下的資源不會排除
	ignoreAssetsPattern '*.png'
}

ignoreAssets 和 ignoreAssetsPattern 區別
從源碼角度來看,兩者是一樣的,如下圖所示(AaptOptions 的源碼段)setIgnoreAssets 方法最終調用了 setIgnoreAssetsPattern。而 getIgnoreAssets 和 getIgnoreAssetsPattern 返回的字段都爲 ignoreAssetsPattern。

6、noCompress

  • 類型:Collection< String >
  • 描述:是否對資源進行壓縮,默認不對"jpg"、"png"壓縮。如果傳入’’,則表明全部資源不會進行壓縮。壓縮後的資源可以通過 aapt l -v apk路徑 進行查看壓縮的細節。
  • 使用:
aaptOptions{
    // 不對 bat 進行壓縮
	noCompress '.bat'
}

不禁用壓縮之前,默認會對 “bat” 後綴的文件進行壓縮。如下圖,使用了 DEFLATE 算法進行壓縮,壓縮比率11%。

禁用壓縮之後,可以看到 同一文件 已經轉爲 store,壓縮比率爲0%

四、寫在最後

Gradle項目地址:Github傳送門 (如果對你有所幫助或喜歡的話,賞個star吧,碼字不易,請多多支持)

本篇博文的 aaptOptions 配置,請進傳送門

如果覺得本篇博文對你有所啓發或是解決了困惑,給個贊或關注我呀,小盆友會繼續分享更多的優質文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章