一、问题描述
最近处理了一个amlogic 7.1 AB项目,升级出现system不匹配的问题,对比发现刷机包中的system与obj包中的不一致,那么就要从编译流程方面排查,将刷机和做包使用的固件进行同步
二、解决思路
说实话一开始其实没什么思路,从编译log入手也看的不是很明白,所以最好的办法就是拆分问题,1、了解make otapackage的大致流程 2、amlogic刷机包的大致生成流程,这两个方面确认好后,再回来看问题,有了些自己的想法去处理
1、make otapackage流程
总体流程其实应该是两个:
$(BUILT_TARGET_FILES_PACKAGE) 生成obj下的target文件
$(INTERNAL_OTA_PACKAGE_TARGET) 生成ota整包文件
otapackage 执行从build/core/Makefile 开始
$(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE)
@echo "Package OTA: $@"
$(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH MKBOOTIMG=$(MKBOOTIMG) \
./build/tools/releasetools/ota_from_target_files -v \
--block \
$(UPDATE_DTB) \
-p $(HOST_OUT) \
-k $(KEY_CERT_PAIR) \
$(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
$(BUILT_TARGET_FILES_PACKAGE) $@
.PHONY: otapackage
otapackage: $(INTERNAL_OTA_PACKAGE_TARGET)
otapackage依赖 $(INTERNAL_OTA_PACKAGE_TARGET) 通过ota_from_target_files 生成ota整包
而$(INTERNAL_OTA_PACKAGE_TARGET) 仅依赖$(BUILT_TARGET_FILES_PACKAGE)
$(BUILT_TARGET_FILES_PACKAGE): \
$(HOST_OUT_EXECUTABLES)/bsdiff \
$(INSTALLED_BOOTIMAGE_TARGET) \
$(INSTALLED_RADIOIMAGE_TARGET) \
$(INSTALLED_RECOVERYIMAGE_TARGET) \
$(INSTALLED_SYSTEMIMAGE) \
$(INSTALLED_USERDATAIMAGE_TARGET) \
$(INSTALLED_CACHEIMAGE_TARGET) \
$(INSTALLED_VENDORIMAGE_TARGET) \
$(INSTALLED_SYSTEMOTHERIMAGE_TARGET) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET) \
$(SELINUX_FC) \
$(APKCERTS_FILE) \
$(HOST_OUT_EXECUTABLES)/fs_config \
| $(ACP)
@echo "Package target files: $@"
......
......
$(hide) (cd $(zip_root) && zip -qX ../$(notdir $@) META/*filesystem_config.txt)
$(hide) PATH=$

本文详细解析Amlogic设备在升级过程中遇到的system不匹配问题,通过分析编译流程,调整makefile设置,最终实现刷机包与升级包中system的一致性。
最低0.47元/天 解锁文章
7万+

被折叠的 条评论
为什么被折叠?



