在Android sdk下,之前都是使用Android.mk,想着换Android.bp 试试,结果遇到一些错误和误解。是一样整理一下自己的学习过程。
在 Android 的构建系统中,Android.bp
文件使用 Soong
构建系统来管理,其中每个模块类型(如 cc_binary
、cc_library
等)都有一组支持的属性。要查看特定模块类型支持哪些属性或在 SDK 中编写 Android.bp
文件的规则,可以参考以下几种方法:
1. 官方文档
Google 的官方 Soong 文档是最权威的参考资料,包含 Android.bp
文件的基本格式、模块类型、常用属性等信息。常用文档包括:
- Soong Build System Documentation
- Blueprint Reference (Soong uses Blueprint as its build configuration language)
在文档中,你可以找到 cc_binary
及其他模块类型的属性说明。
2. 查看 SDK 的源代码(.bp
文件)
在 Android SDK 中的 build/soong/cc/cc_binary.go
文件中定义了 cc_binary
模块。查看源码可以帮助你深入了解 cc_binary
支持的属性和它们的作用。你可以使用以下命令来查找模块文件:
grep -r "cc_binary" build/soong/
通常会找到类似 cc_binary.go
文件的实现,其中包含模块的所有配置项。
3. 使用 soong_docs
生成属性文档
在 Android 构建系统中,有一个 soong_docs
工具,用于生成所有模块类型的支持属性文档。可以执行以下命令来生成 Soong
文档:
m soong_docs
这会在 out/soong/docs/
目录下生成 HTML 格式的文档,例如 modules.html
,其中列出了各模块的支持属性及其详细说明。
4. 查看已有的 Android.bp
示例文件
在 SDK 中查找 Android.bp
文件,可以参考其他已定义的模块。例如在 external
、frameworks
、system
等目录下,有许多示例文件,涵盖了常用模块配置和规范。
find . -name "Android.bp"
5. 使用 m help
查看 Android.bp
帮助
在 SDK 环境中运行以下命令,可以查看有关 Soong
和 Blueprint
的一些帮助信息:
m help
这会显示可用的构建系统命令,有助于理解 Soong 的构建规则和模块设置。
6. 常用 cc_binary
属性简介
name
: 模块名称,生成的二进制名称。srcs
: 源文件列表。include_dirs
: 包含的头文件目录。shared_libs
: 共享库链接。static_libs
: 静态库链接。cflags
: 添加到编译命令中的编译标志。ldflags
: 添加到链接命令中的链接标志。stl
: 指定 STL 使用方式。arch
: 架构特定的编译配置。
通过这些步骤方法,基本可以全面了解并掌握Android.bp的编写了。^_^