点击上方“刘望舒”,选择“星标”
多点在看,就是真爱!
作者 : 刘望舒 | 来源 :刘望舒的博客 地址:http://liuwangshu.cn/framework/aosp/3-compiling-aosp.html前言
在上一篇文章是时候下载Android 9.0系统源码了
中,我们顺利的将AOSP下载了下来,很多时候我们不仅仅需要去查看源码,还有以下的几个需求:
动态调试Android系统源码
定制Android系统
将最新版本的Android系统刷入到自己的Android设备中
为了实现这些需求,就需要我们去编译系统源码。
1.编译系统概述
了解以下一些概念,会对Android编译系统有大概的了解。Makefile
Android平台的编译系统,其实就是用Makefile写出来的一个独立项目。它定义了编译的规则,实现了“自动化编译”,不仅把分散在数百个Git库中的代码整合起来、统一编译, 而且还把产物分门别类地输出到一个目录,打包成手机ROM,还可以生成应用开发时所使用的SDK、NDK等。
因此,采用Makefile编写的编译系统,也可以称为Makefile编译系统。Android.mk
Makefile编译系统的一部分,定义了一个模块的必要参数,使模块随着平台编译。通俗来讲就是告诉编译系统,以什么样的规则编译你的源代码,并生成对应的目标文件。
Ninja
Ninja是一个致力于速度的小型编译系统,如果把其他的编译系统看作高级语言,那么Ninja 目标就是汇编。
Soong
Soong是谷歌用来替代此前的Makefile编译系统的替代品,负责解析Android.bp文件,并将之转换为Ninja文件
Blueprint
Blueprint用来解析Android.bp文件翻译成Ninja语法文件。
kati
kati是谷歌专门为了Android而开发的一个小项目,基于Golang和C++。 目的是把Android中的Makefile,转换成Ninja文件。
Android.bp
Android.bp,是用来替换Android.mk的配置文件。
Android.mk、Ninja、Soong、Blueprint、kati、Android.bp的概念之间的联系为:
![12cb80a0f2c77660fb68c481ae5b86cf.png](https://img-blog.csdnimg.cn/img_convert/12cb80a0f2c77660fb68c481ae5b86cf.png)
Blueprint负责解析Android.bp文件内容,Blueprint类似一个处理