使用命令行工具构建 Android

Posted

技术标签:

【中文标题】使用命令行工具构建 Android【英文标题】:Android Build with command-line tools 【发布时间】:2021-12-02 14:09:40 【问题描述】:

我试图了解.apk 文件是如何从源代码构建的。我知道使用 android Studio 或使用命令 gradlew 可以轻松完成构建。 Android Sdk 提供了多种用于构建 .apk 的工具,其中大部分我都知道它们是做什么的:

d8: java字节码转dalvik字节码

aapt2:编译资源并链接。此工具会创建一个包含已编译资源的.apk 文件。 (它还会创建R.java 来引用代码中的资源。)

apksigner:获取.apk 并签名。否则无法安装在 Android 设备上。

zipalign:对齐.apk的未压缩数据

最后两个工具用于apk,它已经包含了所有文件。我不明白的是编译代码和编译资源是如何结合的?在aapt2 之前,包装是用aapt 完成的,但它甚至没有在Androids Documentation 上列出。但是,aapt 仍在 Android Sdk 构建工具中。新的aapt2 没有打包选项。

那么,问题是使用哪些命令行工具以及以何种顺序从源代码创建完整的.apk?谢谢!

编辑: 我正在寻找的内容类似于this,其中.apk 是使用命令行逐步创建的。只有答案使用旧的aapt,我认为不再使用了。

编辑 2: 感谢Allen Shaw 给了我缺失的信息。我现在可以使用aapt2 编译一个应用程序。我的问题的答案只是压缩aapt2 输出和classes.dex

【问题讨论】:

【参考方案1】:

您也可以使用aapt2 命令

aapt2 link -o output.apk

参考谷歌文档here

将.dex文件添加到apk中:

zip -ur app-debug.apk classes.dex

【讨论】:

感谢您的回答!从文档中,我读到aapt2 仅使用资源文件创建.apk,而不包括.dex 文件。问题是我如何创建一个同时具有 dex 和资源的.apk 由于apk文件只是一个zip文件,你可以使用zip -ur out.apk classes.dex将dex文件添加到apk中。

以上是关于使用命令行工具构建 Android的主要内容,如果未能解决你的问题,请参考以下文章

打造一个全命令行的Android构建系统

使用 Xcode 的命令行构建工具存档(xcodebuild 存档)

使用 Node.js 构建交互式命令行工具

用于开源编译/构建的 Apple 命令行工具和 XCode?

使用Node.js构建命令行工具

android命令行在哪?