Android.bp文件分析

本文介绍了Soong构建系统如何替代AndroidMake,使用Android.bp文件代替Android.mk,支持多种module类型,如cc_binary,并提供了转换工具androidmk。文章还提到了模块的属性如name, srcs等。

Soong取代了旧的基于Android Make的构建系统。 它将Android.mk文件替换为Android.bp文件,这些文件是类似于JSON的要构建模块的简单声明性描述。


Modules
Android.bp 里面的module有很多种类型, 每个都必须有个name property
cc_binary {
name: “gzip”,
srcs: [“src/test/minigzip.c”],
shared_libs: [“libz”],
stl: “none”,
}
如果想查看所有支持的module类型, 可以访问google的官方地址:
https://ci.android.com/builds/submitted/6430522/linux/latest/view/soong_build.html目前支持的所有类型的module


Comments
Android.bp文件可以包含C样式多行/ * * /和C ++样式单行//。


Convert Android.mk files
Soong 提供了一个tool(androidmk)可以将androidmk转换为android.bp
androidmk Android.mk > Android.bp


Examples

### Android 构建配置文件 Android.mk 和 Android.bp 的主要区别 Android 构建系统使用 `Android.mk` 和 `Android.bp` 两种不同格式的配置文件来定义模块的构建规则。它们在语法、结构、可维护性以及未来发展趋势上存在显著差异。 #### 语法和格式差异 `Android.mk` 是基于 GNU Makefile 的传统构建配置文件,采用命令式语法,依赖于变量赋值和宏展开机制。这种语法风格较为冗长,且容易因环境变量或路径问题导致构建行为不一致[^3]。 ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello_aosp LOCAL_SRC_FILES := main.cpp LOCAL_SHARED_LIBRARIES := liblog include $(BUILD_EXECUTABLE) ``` 相比之下,`Android.bp` 使用 Starlark 语言的一种子集,是一种声明式的配置方式,语法更简洁、结构化更强,支持嵌套数据结构和条件判断,便于大规模项目管理[^2]。 ```starlark cc_binary { name: "hello_aosp", srcs: ["main.cpp"], shared_libs: ["liblog"], } ``` #### 可维护性和扩展性 由于 `Android.mk` 基于 Make 工具链,其逻辑复杂度随着模块数量增加而迅速上升,难以进行自动化分析与重构。此外,Makefile 的隐式依赖关系也增加了调试和维护成本[^3]。 `Android.bp` 文件则通过扁平化的模块定义和显式的依赖声明,提升了构建系统的可读性和一致性。它还支持模块级别的继承与组合,使得大型项目中的配置复用更加高效[^2]。 #### 编译效率与性能 `Android.bp` 被设计为 Soong 构建系统的一部分,能够并行处理多个模块的依赖关系,从而显著提升编译速度。Soong 在解析 `Android.bp` 文件时会生成 Ninja 构建脚本,进一步优化了构建流程[^2]。 而 `Android.mk` 文件仍然依赖传统的 `make` 工具,其串行执行特性限制了多核 CPU 的利用率,导致在大型项目中构建效率较低[^3]。 #### 系统如何选择 Android.mk 或 Android.bp 在一个目录中同时存在 `Android.mk` 和 `Android.bp` 时,AOSP 构建系统会优先使用 `Android.bp` 来定义模块。这是因为在现代 AOSP 构建流程中,Soong(负责解析 `Android.bp`)是主构建引擎,而遗留的 `Android.mk` 文件会被自动转换为中间表示形式(Starlark 格式),以便统一处理[^1]。 #### 未来趋势 Google 官方已明确将 `Android.bp` 作为 Android 构建系统的未来发展方向。随着 AOSP 的持续演进,越来越多的模块正在从 `Android.mk` 迁移到 `Android.bp`。因此,若项目支持,建议尽早采用 `Android.bp` 以获得更好的构建性能和开发体验[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值