Android.bp 简介
大部分内容来自官方文档,本文目的为用于备份查询。
Android 编译系统
从 Android 7.0 开始,Ninja 成为默认的编译框架。Ninja 是一个致力于速度的小型编译系统(类似于Make),它的设计就是为了更快的编译。Ninja 可以通过其他高级的编译系统生成其输入文件,Android 使用 Kati 把 makefile 转换成 Ninja 文件。
Soong 编译系统是在 Android 7.0 中引入的,旨在取代 Make。Soong 使用与 JSON 类似的 Blueprint 文件(即 .bp 文件)来对要编译的模块进行简单的声明性描述。Soong使用 Android.bp 做为配置文件,使用 Blueprint 框架来解析,最终通过 Soong 转换成 Ninja 文件。
Android.mk 、Android.bp 和 Ninja 三者的关系可以用下图来表示。
Android.mk 和 Android.bp 代表高级编译系统的配置文件,其最终都要转化为 Ninja 文件。
如果 Android.mk 和 Android.bp 在编译目录中同时存在,Android.mk 会被忽略。
Android.mk 可以通过 androidmk 转化为 Android.bp。
Makefile编译系统终将不再使用,尽量使用 Android.bp。
Android.bp 文件格式
根据设计,Android.bp 文件很简单。它们不包含任何条件语句,也不包含控制流语句;所有复杂问题都由用 Go 编写的编译逻辑处理。Android.bp 文件的语法和语义类似于 Bazel BUILD 文件(如有可能