如何使用aapt2构建可运行的APK?

时间:2018-10-06 12:24:42

标签: android aapt2

我有一个简单的Android project。 此命令编译资源并构建没有dex的apk:

aapt2 compile project/res/values/strings.xml project/res/layout/activity_main.xml -o project/compiled_res

aapt2 link -o project/apk/unsigned_app.apk -I sdk/platforms/android-28/android.jar --manifest project/src/AndroidManifest.xml -R project/compiled_res/*.flat --java project/src --auto-add-overlay

引用documentation

  

但是,生成的APK不包含DEX字节码,并且是   未签名
  ...
  您可以使用其他命令行工具,例如d8来   将Java字节码编译为DEX字节码和apksigner对您的签名   APK。

好的。我可以:

d8 project/compiled_classes/com/illuzor/buildtest/*.class --output project/dex

但是如何将dex打包为apk? aapt2无法识别classes.dex:

enter image description here

我可以通过压缩将classes.dex添加到我的apk:

zip -uj project/apk/unsigned_app.apk project/dex/classes.dex

并且它在对齐和签名后可以工作。但是必须是另一种方式,更合适。

1 个答案:

答案 0 :(得分:0)

我也在寻找合适的方法。但是,即使现在是2019年,我也没有运气,我到处搜索了几天。

我想aapt add可以完成工作,但是您使用zip的解决方案还不错。

希望aapt不会很快被弃用,否则aapt2应该得到增强。