Android Makefile编译流程
★★★ 友情链接 : 个人博客导读首页—点击此处 ★★★
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系统下,制作时将(PRODUCTOUT)/system文件夹打包而成,A/B系统下,制作时将(PRODUCT_OUT)/root和(PRODUCTOUT)/system合并到一起,生成一个完整的带有rootfs的system.imguserdata.img,跟原来一样,打包(PRODUCT_OUT)/system合并到一起,生成一个完整的带有rootfs的system.img userdata.img,跟原来一样,打包(PRODUCTOUT)/system合并到一起,生成一个完整的带有rootfs的system.imguserdata.img,跟原来一样,打包(PRODUCT_OUT)/data文件夹而成
cache.img,A/B系统下不再单独生成cache.img
vendor.img,文件的生成跟是否A/B系统无关,主要有厂家决定
Android Makefile编译流程相关推荐
- Android makefile编译流程(二)
★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ 在build/core/main.mk中找到第一个目标,其makefile树关系如下: 然后我们逐一分析这些目标. ============= ...
- linux源文件编译工具Makefile编译流程
一.Makefile介绍 个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至 ...
- android apk 自动编译器,Android APK编译流程
apk 是Android Package的简写, 在平时的开发过程中,通过点击Run app 按钮 或者 在命令行中输入 ./gradlew ***(taskName) 这样Android Studi ...
- 高通Android智能平台环境搭建_编译流程分析
高通Android智能平台环境搭建_编译流程分析 高通平台环境搭建,编译,系统引导流程分析 TOC \o \h \z \u 1. 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境 ...
- Mac 从Makefile 编译 Rocksdb 源码的一些注意事项
文章目录 前言 Makefile 编译流程 1. 平台变量/环境变量的初始化. 2. 编译需要的源码文件变量初始化. 3. include 目录的设置. 4. 编译的执行逻辑. 问题记录1:可能的打包 ...
- Android编译流程
目录 一.编译流程 1.初始化编译环境 2.选择编译平台 3.开始编译 二.Soong工具 1.Soong工作原理 2.转换关系 三.make流程 1.编译开端main.mk 2.编译配置config ...
- android uefi 编译报错,【Android SDM660开机流程】- UEFI XBL 代码流程分析
[Android SDM660开机流程]- UEFI XBL 代码流程分析 一.UEFI XBL 1.1 boot_images代码目录 1.2 UEFI代码运行流程 1.3 SEC (安全验证) 1 ...
- Linux——Linux驱动之Makefile编译总结(编译器路径设置、编译流程分析、编译试验测试)
目录 0 引言 1 编译器路径设置 2 Makefile编译文件 3 Linux内核编译流程分析 4 编译试验测试
- TDA4VM 8.4 RTOS SDK 中 SBL 的编译流程解析与makefile 分析笔记
目录 0. TDA4VM 8.4 RTOS SDK 中 SBL 的编译流程解析 TI SDK 的可执行文件后缀名是 .xer5f 的原因 sbl_ospi_img 的 .xer5f 可执行文件的生成过 ...
最新文章
- vs2010给c语言文件添加头注释
- RAISE_APPLICATION_ERROR用法
- Hibernate与JDBC、EJB、JDO的比较
- 参数MEMORY_MAX_TARGET 和MEMORY_TARGET 的修改
- 不实用额外变量 交换_变量交换:巧用异或运算
- WPF:Documents文档--Annomation批注(1)
- 收缩Vcenter数据库
- .netcore 判断是否 ajax 请求_第3部分-异步使用2-2:Ajax 之 状态码
- 编程之美-2.4 1的数目
- Linux系统安装sentaurus,Synopsys Sentaurus_vA_2008.09-SP1安装详解.pdf
- thinkphp下载MP4视频
- java framemaker教程_Freemarker入门案例
- LeetCode面试热题十二
- 网络编程、正则表达式
- UNIX和Linux Shell正则表达式语法介绍
- 360个人图书馆 轻松解除网页防复制
- 【投屏】Scrcpy源码分析一(编译篇)
- Node读写Excel文件(txt文件)
- 华硕计算机u盘启动不了怎么办,华硕笔记本做系统读不了u盘启动不了怎么办-笔记本u盘装系统无法使用,怎么办?...
- 【转】word常用技巧精选
热门文章
- ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测
- 成功解决TypeError: __init__() got an unexpected keyword argument 'n_iterations'
- CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss、Center Loss)简介、使用方法之详细攻略
- Py之pywin32:Python库之pywin32的简介、安装、使用方法之详细攻略
- Hyperopt中文文档:Cite引用
- P2730 魔板 Magic Squares (搜索)
- brew改源无效问题之一
- AOP实践--利用MVC5 Filter实现登录状态判断
- 【NOI2013】向量内积
- Python Socket 编程——聊天室示例程序