★★★ 个人博客导读首页—点击此处 ★★★

一、OTA中是如何编译system.img和system.map的
在制作OTA包时(make otapackage)会重新编译system.img,并生成system.map文件,系统编译system的流程如下:
(1)OutputFile是将system.map参数写入到了block_list参数中,后续在打包system.img时会根据block_list来确定是否需要制作system.map.

(2)、调用了BuildImage来准备制作images所需的具体参数

(3)调用了mkuserimg_mke2fs.sh脚本,开始制作system.img

(4)、mke2fs打包了system.img,e2fsdroid生成了system.map

mke2fs对应的源码:external/e2fsprogs/misc/mke2fs.c
e2fsdroid对应的源码 : external/e2fsprogs/contrib/android/e2fsdroid.c

二、正常的android编译是如何打包制作system.img的
当敲击make命令时,会找到第一个目标droid,droid依赖droid_targets,droid_targets依赖droidcore和dist_files,droidcore的依赖关系如下:
.PHONY: droidcore
droidcore: files
systemimage
$(INSTALLED_BOOTIMAGE_TARGET)
$(INSTALLED_RECOVERYIMAGE_TARGET)
$(INSTALLED_VBMETAIMAGE_TARGET)
$(INSTALLED_USERDATAIMAGE_TARGET)
$(INSTALLED_CACHEIMAGE_TARGET)
$(INSTALLED_BPTIMAGE_TARGET)
$(INSTALLED_VENDORIMAGE_TARGET)
$(INSTALLED_PRODUCTIMAGE_TARGET)
$(INSTALLED_SYSTEMOTHERIMAGE_TARGET)
$(INSTALLED_FILES_FILE)
$(INSTALLED_FILES_FILE_VENDOR)
$(INSTALLED_FILES_FILE_PRODUCT)
$(INSTALLED_FILES_FILE_SYSTEMOTHER)
soong_docs

当敲击make systemimage时,systemimage依赖INSTALLED_SYSTEMIMAGE,INSTALLED_SYSTEMIMAGE依赖BUILT_SYSTEMIMAGE(=system.img), BUILT_SYSTEMIMAGE的命令行中,调用了build_image.py来打包制作system.img.

systemimage: $(INSTALLED_SYSTEMIMAGE)

BUILT_SYSTEMIMAGE := $(systemimage_intermediates)/system.img

继续分析,同上一节中OTA中是如何编译system.img的方法一致。

三、总结
有上述分析可以,make otapackage会重新编译system.img,这和make systemimage编译的方法基本一致,除了在准备参数时略有不同,如在make otapackage时,准备了block_list参数,所以make otapackage会生成system.map,而make systemimage就不会生成。
打包制作system.img的核心就是:mke2fs、e2fsdroid 两个android的工具。

四、相关常用工具
1、simg2img system.img system_raw.img //将压缩形式system.img解压
2、sudo mount -t ext4 system_raw.img /mnt/systemtest //将解压后的system_raw.img进行mount。
mount后,就可以看到system.img中的文件了,这和进入到手机adb shell中看到的文件一致,也和out目录下system目录下的文件一致。
3、二进制读取system_raw.img中的数据,其中count=1表示读取1个块(4k),skip=25016表示从25016块处开始读取。
dd if=./system_raw.img of=test01.dd bs=4K count=1 skip=25016 conv=sync
4、显示二进制文件
hexdump test01.dd | more

system.img格式打包学习相关推荐

  1. COCO和 PASCAL VOC标注格式的学习笔记

    1 致谢 感谢网友"嘿芝麻"的帮助, 原文链接如下: https://blog.csdn.net/zw__chen/article/details/82856231 2 前言 感觉 ...

  2. 2018-11-14 MIDI音乐格式笔记学习

    2018-11-14 MIDI音乐格式笔记学习 梁子20163933 reference: https://www.midifan.com/modulearticle-detailview-901.h ...

  3. 使用AppImage格式打包独立运行的Qt-Linux程序

    在windows平台上,我们可以将Qt程序和依赖的动态库打包到一起独立运行.这种方式虽然使安装包的体积变大了,但也简化了打包流程,使得执行程序更加独立自主,不再依赖系统库. 在Linux下我们也可以采 ...

  4. python 函数参数传递 格式_Python学习6.1_函数参数及参数传递

    大多数编程语言都绕不开一个名词,那就是--函数(function).而函数很重要的部分则是参数(arguments)的使用.Python的参数传递总体来说是根据位置,传递对应的参数.阐述如下: 1.位 ...

  5. Webpack 打包学习

    前段时间项目主管让测试组长研究webpack打包方式,闲暇时自己想学习一下,留着备用,本周日学习一下. https://www.jianshu.com/p/42e11515c10f 转载于:https ...

  6. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  7. C# System.Runtime.InteropServices 相关学习总结

    System.Runtime.InteropServices.COMException的解决方法 http://www.jb51.net/article/17629.htm 完美解决"换另一 ...

  8. sam格式的结构和意义_SAM格式的学习

    Sam格式在NGS中是一个不可或缺的格式,所以我们必须对其有一定了解.网上有很多文章对其有讲解,我当初也是看了那些文章入门的,当然最后只懂了每列是干嘛用的,但是具体每个标识代表什么含义却一知半解.虽然 ...

  9. local service system账户_systemd.service学习和使用总结

    公众号:暮北林 Q Q 群 :  一起学前端 Systemd Service 学习和使用总结 什么是Systemd service system就是系统,d的意思是daemon,systemd就是系统 ...

最新文章

  1. 薅百度GPU羊毛!PaddlePaddle大升级,比Google更懂中文,打响AI开发者争夺战
  2. C/C++中退出线程的四种解决方法
  3. camera中文版软件 ip_ip camera网络摄像机
  4. android 输出字节数组,Android蓝牙通信字节数组的数据类型转换 求教!
  5. 如何在树莓派中设置本地时区的问题解决
  6. 第45届ICPC 昆明站 临时模板补充
  7. d3.js中点可以用图片吗_WebGL 直线直吗?
  8. codeforces 1728E
  9. 实验三 交换机的配置
  10. 正則表達式基本使用方法简单介绍
  11. Hadoop实战记录-目录
  12. Lunatic状态(疯狂之力)
  13. 综合评价方法(一)------基础知识
  14. 基于 xbot 实现微信关键词自动回复
  15. 构建开放的软件团队文化
  16. Android布局优化之ViewStub、include、merge使用与源码分析
  17. php 读取word文档_如何使用PHP制作Microsoft Word文档
  18. anbu三年模拟_暗部共享三年模拟软件库
  19. 【AI视野·今日Robot 机器人论文速览 第七期】Tue, 15 Jun 2021
  20. TOPSIS法(优劣解距离法)介绍及 python3 实现

热门文章

  1. 数据中心运营:内包还是外包?
  2. 数据中心如何减少人为故障发生率
  3. 正宁天气预报软件测试,正宁天气预报15天
  4. python可变参数的特点_可变参数**kwargs传入函数时的存储方式为( )_学小易找答案...
  5. Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略
  6. ML之FE:基于BigMartSales数据集利用Featuretools工具实现自动特征工程之详细攻略daiding
  7. Dataset:Big Mart Sales数据集的简介、下载、案例应用之详细攻略
  8. Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件
  9. DL之SSD:SSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  10. Hyperopt 入门指南