#apk #android #build-system #aosp #rust

构建 genapkbuild

用于生成 AOSP 的 Android APK 构建系统文件的工具

2 个稳定版本

1.5.0 2021 年 11 月 1 日
1.4.0 2021 年 9 月 24 日

#382 in 构建工具

MIT/Apache

36KB
825

从 APK 生成 AOSP 构建系统文件

⚠️ 该库仍在开发中!⚠️

一个命令行工具,可以从 Android APK 中自动生成 Android.mkAndroid.bp

genapkbuild 工具将分析 APK 的架构,找到其中的 NDK 生成的库,并为其生成 makefile (Android.mk) 或 soong (Android.bp) 文件。默认情况下,它将生成 make 文件,但可以通过传递不同的标志来将其更改为生成 soong 文件 (Android.bp)。

此工具还支持预先 Kit-Kat 风格的 makefile 生成,通过从 APK 中提取 .so 库并将其自动链接到 makefile 中来实现。

有关更多信息,请参阅下方的 标志

受 northbright 编写的工具启发,该工具是用 Go 编写的,并将其移植到 Rust 中,构建在它之上,与该工具不兼容(大部分情况下)。

二进制文件

如果您已安装 Cargo,可以通过运行 cargo install genapkbuild 来安装此工具。要从源代码构建,您需要 Rust 编译器,克隆此仓库并运行 cargo build --release。二进制文件 genapkbuild 将在 target/release/ 中生成。

如果您没有安装编译器,可以从 发布标签 下载二进制文件。

标志

输入标志 [必需]


-i--输入<APK 路径>

此标志是必需的,它提供了我们想要生成 makefile 或蓝图所需的 APK 路径。

Soong (Android.bp) 标志


-s--soong

此标志将创建 Android.bp 而不是 Android.mk

提取标志


-e--extract

此标志将创建 Android 5.0 之前的风格的 makefile,通过提取/复制 APK 外部的本地库到 /lib/<abi>/lib<name>.so 并将其链接到 makefile。默认情况下禁用。

架构(ABI)标志


-a--arch<ABI>

此标志允许您为在 BSP 中捆绑的 APK 设置默认架构。当发现多个架构且工具不知道选择哪个时,这是必要的。如果只支持一个架构,则将自动选择该架构。

特权标志


-p--privileged

此标志将使 apk 成为位于 priv-app 中的特权系统应用。

Dex 预优化


-d--dex<truefalse>

也可以通过指定此标志在单个应用程序的基础上启用或禁用预优化。

名称标志


-n--name<APKname>

如果 apk 名称与 -i --input 标志提供的名称不同,您可以使用此标志更改它。如果没有提供,它将获取输入标志中传递的内容。

详细标志


-v--verbose<APKname>

启用详细调试日志,默认情况下禁用。

版本标志


-V--version

打印版本信息。

帮助标志


-h--help

打印有关工具的用法信息。

许可证

许可方式为以下之一

任选其一。

许可

除非您明确表示,否则根据 Apache-2.0 许可证定义的,您提交的旨在包含在作品中的任何有意贡献,将如上所述双许可,不附加任何额外条款或条件。

依赖项

~5–7MB
~116K SLoC