安卓镜像文件编译打包过程

本文详细介绍了安卓系统中system.img的编译打包过程,包括在build/core/Makefile中的编译设置,如何通过make systemimage命令触发编译,以及build-systemimage-target方法中的操作,如创建软链接和打包system目录。同时,文章还讲解了system.img的打包过程,涉及build_image.py脚本的执行,以及在Linux环境中如何手动打包和解包镜像文件。
摘要由CSDN通过智能技术生成

安卓系统中有system.img,boot.img,userdata.img等镜像文件,那么这些镜像文件是怎么形成的呢?下面我们以system.img为例来描述系统镜像文件的编译打包过程。

(一)system.img的编译生成过程

build/core/Makefile中相关变量的定义:

INSTALLED_SYSTEMIMAGE := $(PRODUCT_OUT)/system.img
							// system.img实际产生的位置,即out/target/product/~/system.img

编译的target :

$(INSTALLED_SYSTEMIMAGE): $(BUILT_SYSTEMIMAGE) $(RECOVERY_FROM_BOOT_PATCH) | $(ACP)
 $(hide) $(call assert-max-image-size,$@ $(RECOVERY_FROM_BOOT_PATCH),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))
 $(copy-file-to-target)
 @echo "Install system fs image: $@"

systemimage: $(INSTALLED_SYSTEMIMAGE)


安卓系统编译时,会including 相关的MK文件,因此可以通过make systemimage来单独编译system.img。当$(INSTALLED_SYSTEMIMAGE)执行时,会先进行$(BUILT_SYSTEMIMAGE)的编译,即:

$(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE)
 $(call build-systemimage-target,$@)
(1)FULL_SYSTEMIMAGE_DEPS
FULL_SYSTEMIMAGE_DEPS := $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEPS)

INTERNAL_SYSTEMIMAGE_FILES := $(filter $(TARGET_OUT)/%, \
    $(ALL_DEFAULT_INSTALLED_MODULES) \
    $(RECOVERY_RESOURCE_ZIP))
    $(PDK_FUSION_SYSIMG_FILES) \
    $(ALL_PREBUILT) \
    $(ALL_GENERATED_SOURCES) \


这部分基本就是system所包含的内容了,有兴趣的可以根据TARGET跟下去。

编译过程中在Linux的终端上可以看到"Install system fs image:" 的输出,在上面两个TARGET执行后,会调用build-systemimage-target方法,如下:

define build-systemimage-target
  @echo "Target system fs image: $(1)"
  $(call create-system-vendor-symlink)
  @mkdir -p $(dir $(1)) $(systemimage_intermediates) && rm -rf $(systemimage_intermediates)/system_image_info.txt
  $(call generate-userimage-prop-dictionary, $(systemimage_intermediates)/system_image_info.txt, \
      skip_fsck=true)
  $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \
      ./build/tools/releasetools/build_image.py \
      $(TARGET_OUT) $(systemimage_intermediates)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值