使用命令行工具构建 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Xcode 的命令行构建工具存档(xcodebuild 存档)