★★★ 友情链接 : 个人博客导读首页—点击此处 ★★★

1、整编译
当中android根目录下敲击make时候,根目录下的Makefile就一句话include build/core/main.mk,即调用main.mk,以下为main.mk的依赖规则

2、模块编译
模块编译依赖各个模块目标。

3、recovery.img

(1)在TARGET_NO_RECOVERY=false,TARGET_NO_KERNEL=false时候
INSTALLED_RECOVERYIMAGE_TARGET := $(PRODUCT_OUT)/recovery.img
依赖关系如下,则会生成revovery.img

(2)在AB分区功能打开,即TARGET_NO_KERNEL=true时,INSTALLED_RECOVERYIMAGE_TARGET等于空,则后面的依赖关系不复存在,也就不会生成revovery.img了

4、boot.img
.PHONY: bootimage
bootimage: $(INSTALLED_BOOTIMAGE_TARGET)
INSTALLED_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img
(1)无AB分区功能时的boot.img的依赖规则如下

(2)启用AB分区时候,BOARD_USES_RECOVERY_AS_BOOT=true,此时的依赖规则变成如下:

可以看出,此时boot.img的生成规则,与无AB分区时生成revovery.img时候的规则一样。即现在的boot.img就是以前的recovery.img

5、system.img
system.img的依赖关系

build-systemimage-target函数最终调用到build_image.py用户创建镜像

此前boot.img里面的ramdisk是recovery系统的recovery ramdisk,那之前boot.img里的ramdisk呢?系统如何来挂着system分区的呢??? 看下面代码,可知,原boot.img里的ramdisk挪到system.img里面了。
build_image.py 调用了BuildImage函数
BuildImage函数部分内容如下:


6、userdateimage

7、cache.img
启用AB分区时候,BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE 没有定义,这里条件不能满足,所以不会生成cache.img

8、vendor.img
和BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE宏是否定义相关。

9、有关AB分区的总结如下:
recovery.img,不再单独生成,传统方式的recovery.img现在叫做boot.img
boot.img,包含kernel和recovery模式的ramdisk
system.img,传统方式下system.img由(PRODUCTOUT)/system文件夹打包而成,A/B系统下,制作时将(PRODUCT_OUT)/system文件夹打包而成,A/B系统下,制作时将(PRODUCTO​UT)/system文件夹打包而成,A/B系统下,制作时将(PRODUCT_OUT)/root和(PRODUCTOUT)/system合并到一起,生成一个完整的带有rootfs的system.imguserdata.img,跟原来一样,打包(PRODUCT_OUT)/system合并到一起,生成一个完整的带有rootfs的system.img userdata.img,跟原来一样,打包(PRODUCTO​UT)/system合并到一起,生成一个完整的带有rootfs的system.imguserdata.img,跟原来一样,打包(PRODUCT_OUT)/data文件夹而成
cache.img,A/B系统下不再单独生成cache.img
vendor.img,文件的生成跟是否A/B系统无关,主要有厂家决定

Android Makefile编译流程相关推荐

  1. Android makefile编译流程(二)

    ★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ 在build/core/main.mk中找到第一个目标,其makefile树关系如下: 然后我们逐一分析这些目标. ============= ...

  2. linux源文件编译工具Makefile编译流程

    一.Makefile介绍 个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至 ...

  3. android apk 自动编译器,Android APK编译流程

    apk 是Android Package的简写, 在平时的开发过程中,通过点击Run app 按钮 或者 在命令行中输入 ./gradlew ***(taskName) 这样Android Studi ...

  4. 高通Android智能平台环境搭建_编译流程分析

    高通Android智能平台环境搭建_编译流程分析 高通平台环境搭建,编译,系统引导流程分析 TOC \o \h \z \u 1. 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境 ...

  5. Mac 从Makefile 编译 Rocksdb 源码的一些注意事项

    文章目录 前言 Makefile 编译流程 1. 平台变量/环境变量的初始化. 2. 编译需要的源码文件变量初始化. 3. include 目录的设置. 4. 编译的执行逻辑. 问题记录1:可能的打包 ...

  6. Android编译流程

    目录 一.编译流程 1.初始化编译环境 2.选择编译平台 3.开始编译 二.Soong工具 1.Soong工作原理 2.转换关系 三.make流程 1.编译开端main.mk 2.编译配置config ...

  7. android uefi 编译报错,【Android SDM660开机流程】- UEFI XBL 代码流程分析

    [Android SDM660开机流程]- UEFI XBL 代码流程分析 一.UEFI XBL 1.1 boot_images代码目录 1.2 UEFI代码运行流程 1.3 SEC (安全验证) 1 ...

  8. Linux——Linux驱动之Makefile编译总结(编译器路径设置、编译流程分析、编译试验测试)

    目录 0 引言 1 编译器路径设置 2 Makefile编译文件 3 Linux内核编译流程分析 4 编译试验测试

  9. TDA4VM 8.4 RTOS SDK 中 SBL 的编译流程解析与makefile 分析笔记

    目录 0. TDA4VM 8.4 RTOS SDK 中 SBL 的编译流程解析 TI SDK 的可执行文件后缀名是 .xer5f 的原因 sbl_ospi_img 的 .xer5f 可执行文件的生成过 ...

最新文章

  1. vs2010给c语言文件添加头注释
  2. RAISE_APPLICATION_ERROR用法
  3. Hibernate与JDBC、EJB、JDO的比较
  4. 参数MEMORY_MAX_TARGET 和MEMORY_TARGET 的修改
  5. 不实用额外变量 交换_变量交换:巧用异或运算
  6. WPF:Documents文档--Annomation批注(1)
  7. 收缩Vcenter数据库
  8. .netcore 判断是否 ajax 请求_第3部分-异步使用2-2:Ajax 之 状态码
  9. 编程之美-2.4 1的数目
  10. Linux系统安装sentaurus,Synopsys Sentaurus_vA_2008.09-SP1安装详解.pdf
  11. thinkphp下载MP4视频
  12. java framemaker教程_Freemarker入门案例
  13. LeetCode面试热题十二
  14. 网络编程、正则表达式
  15. UNIX和Linux Shell正则表达式语法介绍
  16. 360个人图书馆 轻松解除网页防复制
  17. 【投屏】Scrcpy源码分析一(编译篇)
  18. Node读写Excel文件(txt文件)
  19. 华硕计算机u盘启动不了怎么办,华硕笔记本做系统读不了u盘启动不了怎么办-笔记本u盘装系统无法使用,怎么办?...
  20. 【转】word常用技巧精选

热门文章

  1. ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测
  2. 成功解决TypeError: __init__() got an unexpected keyword argument 'n_iterations'
  3. CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss、Center Loss)简介、使用方法之详细攻略
  4. Py之pywin32:Python库之pywin32的简介、安装、使用方法之详细攻略
  5. Hyperopt中文文档:Cite引用
  6. P2730 魔板 Magic Squares (搜索)
  7. brew改源无效问题之一
  8. AOP实践--利用MVC5 Filter实现登录状态判断
  9. 【NOI2013】向量内积
  10. Python Socket 编程——聊天室示例程序