我已经使用aapt p
来打包资源并生成R.java
。
但当我升级到安卓24时,我发现了aapt2.exe
。
我应该使用aapt2.exe
吗?我该如何使用它?我找不到任何关于它的文件。
AAPT和AAPT2的工作方式有一些很大的不同
编译并链接
除了新功能外,AAPT2的主要思想是将"包"步骤分为两步:"编译"one_answers"链接"。它提高了性能,因为如果只有一个文件更改,则只需要重新编译该文件并使用"link"命令链接所有中间文件
限制性更强
AAPT2试图尽早发现大多数错误。这就是为什么当从AAPT切换到AAPT2时,您可能会遇到许多错误,指出某些元素嵌套不正确或某些引用不正确。有关新限制的更多信息,请参阅Android Studio 3.0文档
用法
Android Studio 3.0默认启用了AAPT2(带有Android Gradle插件3.0.0)。但如果你想在自己的脚本中使用AAPT2,你需要改变处理资源的方式。对于带有AAPT的"package"命令,您将使用-S传递资源目录。使用AAPT2,您需要首先使用"compile"命令编译每个资源,然后使用-R标志传递所有已编译的文件。
例如:
aapt package -S app/src/main/res/ ...
改为使用:
aapt2 compile -o compiled/res/ app/src/main/res/values/values.xml
aapt2 compile -o compiled/res/ app/src/main/res/drawable/myImage.png --no-crunch
...
aapt2 link -R compiled/res/values_values.arsc.flat -R compiled/res/drawable_myImage.flat ...
标志
在标志的使用上还有更多的差异,例如,在"编译"步骤中,每个文件都使用"--pseudo-localize"one_answers"--no crunch"标志。有关AAPT2标志的完整信息,请键入:
aapt2 compile -h
aapt2 link -h
注意:将其视为对Izabela的答案的添加
Android O中Overlay Manager服务的作者在幻灯片中介绍了他们的工作并谈论了AAPT2(有关上下文,请参见幻灯片12-14)。该工具的官方文档现在在这里(由@Shrijana提供)
此外,如果有疑问,请查看源代码:https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r7/tools/aapt2.
除了上面给出的答案,AAPT2的文档终于出来了。你可以在这里找到文档。如果您发现任何错误,请针对这些错误报告错误。