目录
一、前言
二、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 配置,请进传送门
如果觉得本篇博文对你有所启发或是解决了困惑,给个赞或关注公众号呀,小盆友会继续分享更多的优质文章。
或是请我喝杯咖啡吧,小盆友会更加信心百倍的写下去