我有一个简单的 android项目。此命令编译资源并在没有 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
从文档中引用:
但是,生成的 APK 不包含 DEX 字节码并且是未签名的
……
您可以使用其他命令行工具,例如 d8 将 Java 字节码编译为 DEX 字节码和 apksigner 对您的 APK 进行签名。
好的。我可以:
d8 project/compiled_classes/com/illuzor/buildtest/*.class --output project/dex
但是如何将这个 dex 打包到 apk 中呢?aapt2 无法识别 classes.dex:
我可以通过压缩将 classes.dex 添加到我的 apk 中:
zip -uj project/apk/unsigned_app.apk project/dex/classes.dex
它在对齐和签名后起作用。但必须是另一种方式,更合适。