目錄
一、前言
二、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 配置,請進傳送門
如果覺得本篇博文對你有所啓發或是解決了困惑,給個贊或關注我呀,小盆友會繼續分享更多的優質文章。