aaptOptions——安卓gradle

11,237 阅读2分钟

目录
一、前言
二、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 配置,请进传送门

如果觉得本篇博文对你有所启发或是解决了困惑,给个赞或关注公众号呀,小盆友会继续分享更多的优质文章。

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