Android.mk和Android.bp宏对应关系

本文简要探讨Android构建系统中Android.mk和Android.bp文件的宏对应关系,虽然具体细节未展开,但暗示将深入讨论这两个文件在Android开发中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

至于每个宏是干什么的,有空了来慢慢解释吧~

类型 Android.mk Android.bp 解释

module

  type

BUILD_STATIC_LIBRARY cc_library_static 生成静态库
BUILD_SHARED_LIBRARY cc_library_shared 生成共享库
BUILD_HOST_SHARED_LIBRARY cc_library_host_shared
BUILD_HOST_STATIC_LIBRARY cc_library_host_statis
BUILD_HEADER_LIBRARY cc_library_headers
BUILD_EXECUTABLE cc_binary
BUILD_HOST_EXECUTABLE cc_binary_host
BUILD_NATIVE_TEST cc_test
BUILD_HOST_NATIVE_TEST cc_test_host
BUILD_NATIVE_BENCHMARK cc_benchmark
BUILD_HOST_NATIVE_BENCHMARK cc_benchmark_host
BUILD_JAVA_LIBRARY java_library
BUILD_STATIC_JAVA_LIBRARY java_library_static
BUILD_HOST_JAVA_LIBRARY java_library_host
BUILD_HOST_DALVIKJAVA_LIBRARY java_library_host_dalvik
BUILD_PACKAGE android_app
prebuilt type SHARED_LIBRARIES cc_prebuilt_library_shared
STATIC_LIBRARIES cc_prebuilt_libr
### Android.mkAndroid.bp 文件语法对比 #### 定义模块 在 `Android.mk` 中,通过调用函数如 `include $(CLEAR_VARS)` 来初始化变量集合,并使用 `LOCAL_PATH := $(call my-dir)` 设置当前路径。而 `Android.bp` 使用更为简洁的方式,在文件顶部直接声明模块类型并设置属性。 对于库的定义: - **Android.mk** ```makefile include $(CLEAR_VARS) LOCAL_MODULE := libexample LOCAL_SRC_FILES := example.c include $(BUILD_SHARED_LIBRARY) ``` - **Android.bp** ```bp cc_library_shared { name: "libexample", srcs: ["example.c"], } ``` #### 变量赋值方式差异 `Android.mk` 支持多种赋值运算符 (`:=`, `=`, `+=`) 并允许条件判断;而在 `Android.bp` 中仅支持简单的键值对形式,不允许复杂的逻辑表达式[^1]。 #### 源文件列表处理 当涉及到多个源文件时: - **Android.mk** 需要手动罗列所有 `.c/.cpp` 文件或将它们放入数组中; - **Android.bp** 则可以利用通配符自动匹配特定模式下的所有文件,简化维护工作。 ```bp cc_binary { name: "hello_world", srcs: glob(["*.cpp"]), } ``` #### 编译选项配置 两者都提供了丰富的编译参数设定能力,不过具体写法有所区别: - 在 `Android.mk` 中通常采用追加的形式给定标志位或其他编译器指令; - 对于 `Android.bp` ,这些信息被封装成独立字段,更加直观易读。 例如开启调试信息: - **Android.mk** ```makefile LOCAL_CFLAGS += -g ``` - **Android.bp** ```bp cflags: ["-g"], ``` #### 子目录遍历机制不同 为了递归加载子目录内的 Makefiles 或 Blueprint files, - `Android.mk` 常见做法是在合适位置加入 `$(call all-subdir-makefiles)`, - `Android.bp` 自动扫描同级及其下层蓝prints文件无需额外编码实现此功能[^2]。 #### 总结 尽管两种格式存在诸多异同之处,但从长远来看,由于 JSON-like 的 BP 文件具有更好的可扩展性解析效率,因此官方推荐逐步向其迁移。然而考虑到兼容性以及现有项目的延续性,短期内二者仍将共存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值