添加厂商二进制文件后,AOSP12/13执行sign_target_files_apks因缺失vendor.img报错
解决AOSP构建OTA签名时缺失vendor.img的问题
问题原因
添加厂商二进制文件后,其修改了vendor分区的构建逻辑,导致make dist生成的targetfiles包中未包含vendor.img,而签名工具sign_target_files_apks默认会从targetfiles的IMAGES目录读取该镜像,因此触发找不到文件的错误。
修复步骤
1. 手动补充vendor.img到targetfiles目录
- 编译完成后,在AOSP构建输出目录(通常是
out/target/product/sargo/)找到vendor.img - 将该文件复制到错误提示中的
/tmp/targetfiles-xxx/IMAGES/目录下 - 重新执行
sign_target_files_apks命令
2. 修改构建配置,确保make dist自动包含vendor.img
- 打开设备对应的BoardConfig文件(
device/google/sargo/BoardConfig.mk),确认以下配置存在:TARGET_COPY_OUT_VENDOR := vendor - 打开设备的产品配置文件(
device/google/sargo/sargo.mk),添加dist规则以包含vendor.img:$(call add-dist-files, $(PRODUCT_OUT)/vendor.img) - 重新执行
make dist生成完整的targetfiles包,再进行签名操作
3. 检查厂商二进制文件的脚本影响
- 解压厂商提供的二进制文件,查看其中的
setup.sh或相关配置脚本,确认是否有修改TARGET_COPY_OUT_VENDOR或镜像输出路径的逻辑 - 如果存在此类修改,调整脚本使其与AOSP默认的镜像收集逻辑兼容
验证方法
完成上述操作后,重新执行make dist,解压生成的targetfiles压缩包,检查IMAGES目录下是否存在vendor.img,再运行签名命令即可确认问题是否解决。
内容的提问来源于stack exchange,提问作者Dean
相关产品推荐
相关产品推荐

