一、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。

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

  1. 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远程 ...

  2. 开发环境搭建---交叉工具链、makefile编写、连接器脚本、Eclipse调试

    交叉工具链 安装: 将arm-linux-gcc-4.3.2.tgz文件解压到linux根目录/下,可以发现解压后的文件在/usr/local/arm/4.3.2/文件下. 然后修改环境变量:执行命令 ...

  3. 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台

    什么是 NDK? Android NDK 是一套可以让开发者在安卓应用开发中使用 C/C++ 实现特定模块的工具集,不是所有应用都需要用到,但是正确地使用可以有效提高应用运行效率和安全性. 为什么要在 ...

  4. Smoothieware_best-for-pnp 工具链的升级尝试

    文章目录 Smoothieware_best-for-pnp 工具链的升级尝试 概述 实验 工具链安装的思路 更换工具链的工作 备注 补充 给原始工程换了工具链之后, 编译过了 补充 END Smoo ...

  5. 方舟编译器只能编译Java_方舟编译器学习笔记8 工具链可运行(helloworld编译成功)...

    前面的文章 方舟可执行文件简介和 对java2jar及方舟工具链的进一步分析 对工具链中的可执行文件以及测试用例的编译都进行了分析,并对java2jar进行了修改,保证了其可运行.但是后续的jbc2m ...

  6. HC32L110(三) HC32L110的GCC工具链和VSCode开发环境

    目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...

  7. java交叉编译安卓可用,Android开发实践:Android交叉编译工具链的使用

    前面2篇文章分别介绍了Android NDK编译的命令行参数,以及如何在任意目录使用Android.mk来编译本地c/c++代码,Andriod.mk和ndk-build只不过是Android官方提供 ...

  8. linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...

    点击上方蓝字关注我吧! 为什么内推更靠谱?内推是基于人脉关系链的推荐,其背后有一定的信用背书,靠谱的人推荐的人相对也会比较靠谱,所以企业一般职位都是从内部开始分享的,相较于自己海投简历,内推的效率和成 ...

  9. arm-linux交叉编译工具链的制作(基于S3C2440)【转】

    本文转载自:http://eric-gao.iteye.com/blog/2160622 制作arm-linux交叉编译工具链一般通过crosstool工具或者crosstool-NG,前者使用方便, ...

最新文章

  1. 代码开源!激光雷达 SLAM 的闭环检测:OverlapNet
  2. SQL2K数据库开发二十三之索引操作重建索引
  3. sparse double型矩阵转为full矩阵
  4. Python Django创建项目命令
  5. 百度数据可视化图表套件echart实战
  6. entitymanager_实体管理器的类型:应用程序管理的EntityManager
  7. php知识点_php中一些重要的php知识点分享
  8. java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable
  9. 【渝粤教育】国家开放大学2018年春季 3924T★汽车电器设备构造与检修 参考试题
  10. C语言练习——数据加密
  11. 1-3年Android开发工程师面试经验分享,面试建议
  12. 18-Halcon机器视觉实例入门:图像滤波-各向异性滤波
  13. win7系统计算机无最小化,win7我的电脑图标没了win7我的电脑不见解决方法(图)
  14. 计算机考试分值2017,2017计算机二级考试应试技巧
  15. 【flutter 起步走】Flutter 布局解决消消乐,谁说只会写写布局不能做游戏?
  16. 市面上常见模拟器比对
  17. phpcms 添加顶踩功能
  18. NC文件的处理【netcdf】
  19. 操作系统(第四章)——思维导图总结
  20. 4天完成一个物联网项目

热门文章

  1. 信号的捕捉与sigaction函数
  2. 聊聊spring for kafka对consumer的封装与集成
  3. 扩展Python模块系列(四)----引用计数问题的处理
  4. SNMP学习(2)——SNMP实战
  5. iOS开发 - 利用js去除webview广告
  6. Sql Server 事务日志(二)
  7. Oracle控制文件操作
  8. ASP.NET中实现二级或多级域名(修改UrlRewrite)
  9. Python是Python的web框架
  10. asp.net zero