Makefile、.mk、.bp、Blueprint、Soong、kati工具链的关系

一、Android版本相应的发展演变过程:
Android 7.0引入ninja和kati
Android 8.0使用Android.bp来替换Android.mk,引入Soong
Android 9.0强制使用Android.bp

二、生成.ninja工具链关系:Android.bp、Blueprint、Soong、kati:总之都是用来把Makefile、.bp、.mk生成.ninja的,只是用了不同的工具生成而已.
1.Android.bp --> Blueprint --> Soong --> Ninja
2.Makefile or Android.mk --> kati --> Ninja
3.Android.mk --> Soong --> Blueprint --> Android.bp
注意:androidmk工具可以使Android.mk生成Android.bp

三、Blueprint是生成、解析Android.bp 的工具,是Soong的一部分。
 Soong是专门为Android的编译而设计的工具,blueprint只是解析文件的形式,而soong则解释内容的含义。
 Blueprint和Soong都是有Go语言写的项目,从7.0开始在prebuilts/go/目录下新增了go语言的运行环境,在编译是使用。

1. Ninja
ninja是一个编译框架,会根据相应的ninja格式的配置文件进行编译,但是ninja文件一般不会手动修改,而是通
过将Android.bp文件转换成ninja格文件来编译。

2. Android.bp
Android.bp的出现就是为了替换Android.mk文件。bp跟mk文件不同,它是纯粹的配置,没有分支、循环等流程控
制,不能做算数逻辑运算。如果需要控制逻辑,那么只能通过Go语言编写。

3. Soong
Soong类似于之前的Makefile编译系统的核心,负责提供Android.bp语义解析,并将之转换成Ninja文件。Soong
还会编译生成一个androidmk命令,用于将Android.mk文件转换为Android.bp文件,不过这个转换功能仅限于没
有分支、循环等流程控制的Android.mk才有效。

4. Blueprint
Blueprint是生成、解析Android.bp的工具,是Soong的一部分。Soong负责Android编译而设计的工具,而
Blueprint只是解析文件格式,Soong解析内容的具体含义。Blueprint和Soong都是由Golang写的项目,从
Android 7.0,prebuilts/go/目录下新增Golang所需的运行环境,在编译时使用。

5. Kati
kati是专为Android开发的一个基于Golang和C++的工具,主要功能是把Android中的Android.mk文件转换成
Ninja文件。代码路径是build/kati/,编译后的产物是ckati。
发布了748 篇原创文章 · 获赞 458 · 访问量 243万+

猜你喜欢

转载自blog.csdn.net/u010164190/article/details/104905667