实用的AAPT 命令详解
当你来到这里,说明你aapt的命令使用也感到迷惑,那么我们一起学习下,以下都是一些实用性比较大的命令,没啥作用或者作用不大就没写出来了。感兴趣可以在看下官方文档(https://developer.android.com/studio/command-line/aapt2?hl=zh-cn#dump_syntax)
AAPT 简介
aapt 是一个apk资源构建工具,在SDK安装目录下的build-tools工具下,aapt2是aapt的升级版,对资源的检索有了更高的要求,避免资源配置不正确导致的问题。
编译命令:compile
不压缩png 图片(默认压缩)
–no-crunch
指定在当前目录下寻找资源文件
–dir
将使用早期版本的 AAPT 时允许的错误视为警告。(忽略不正确的配置or资源)
–legacy
生成默认字符串的伪本地化版本,如 en-XA 和 en-XB。(基本不需要)
–pseudo-localize
输出日志信息
-v
关联命令:link
指定AndroidManifest.xml
–manifest
指定android.jar
-I
指定Assets目录
-A
传递要链接的单个 .flat 文件 (基本不使用)
-R
指定要用于应用的软件包 ID(值必须在0x7f-0xff,没啥用)
–package-id
指定生成R.java 文件目录(跟随Androidmanifest.xml的包名设置)
–java
生成相同的R.java文件(但是包名不同)
–extra-packages
查看包体信息:dump
输出从 APK 的清单中提取的基本信息。
badging
输出 APK 中的资源使用的每项配置(如v21、 v24、mdpi-v4、hdpi-v4)
configurations
输出从 APK 的清单提取的权限。
permissions
输出 APK 的资源表字符串池的内容。所有的资源索引名(res/drawable/ic_launcher_background.xml,Aapt)
strings
查看包名
packagename
实例:
基础命令编译资源文件
aapt2 compile --dir ./aapt/res -o output/ -v
编译的资源添加到压缩文件夹(在link时如果不采用zip文件方式,需要一个个.flat添加)
aapt2 compile --dir ./aapt/res -o output/res.zip -v
单个文件(不知为何没有输出文件)
aapt2 compile ./aapt/res/values/strings.xml -o output/
link资源,并且生成apk(apk不包含dex文件,也会生成R.java)
aapt2 link -A ./aapt/assets --package-id 0xff --extra-packages com.my.test ./output/res.zip -I Local\Android\Sdk\platforms\android-30\android.jar -o ./outputfilename.apk --manifest ./aapt/AndroidManifest.xml --java ./test -v
查看apk信息(命令有先后顺序)
aapt2 dump badging outputfilename.apk
问题:
1、output/: error: 设备不识别此命令。 (22).
答:需要先创建一个输出目录 output,他不会自动创建
2、resource file cannot be a directory. bad resource path.
资源的目录不正确,相对路径需要加 ./
3、failed to open file: 数据无效。 (13).
资源路径搞错