赞
踩
- 一、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。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。