日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

system.img格式打包学习

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 system.img格式打包学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

★★★ 個人博客導讀首頁—點擊此處 ★★★

一、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格式打包学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。