Android下编译OTA升级包

本文详细介绍了Android系统的OTA(Over-The-Air)升级包的编译过程,包括全包升级和差分升级的概念,重点讲解了如何通过执行`make otapackage`命令生成升级包,并分析了编译过程中涉及的Makefile和ota_from_target_files脚本。内容涵盖了从解析选项、生成Edify脚本、设置文件权限到最终生成签名全包升级包的步骤。
摘要由CSDN通过智能技术生成

1)概念介绍    

     我们知道Android系统一般可以通过本地升级和空中升级两种,一般本地升级包括SD卡升级、U盘升级、串口升级等。而所谓的空中升级就是通过网络将升级包下载升级包到本地,进行升级。

      而OTA升级作为Android系统提供的标准软件升级方式,同时支持本地升级如SD卡或U盘 和 空中升级如网络。OTA升级一般分为全包升级和差分升级。

    全包升级:编译当前系统得到的软件包,不依赖于当前手机里的软件版本

    差分升级:对手机两个软件版本做差分,在第一个版本上打patch得到第二个升级包,所以差分升级只能对第一个版本的机器进行升级

 

2)编译方法

       在源码根目录下执行: make otapackage

       注意:执行这句命令之前需要在根目录下make编译整个源码。

       在out/target/product/$(PRODUCT_NAME)/$(BUILD_NAME)-target-files-$(BUILD_NUMBER).zip文件,其中$(PRODUCT_NAME)是编译产品名字,$(BUILD_NAME)是编译的版本名字,$(BUILD_NUMBER)一般是编译的版本号。以我的fsl的Qiyi版本为例。

    生成文件目录为:out/target/product/sabresd_6dq/Qiyi-target-files-20130725.zip文件

    拷贝到U盘下的upgrade目录下即可(有的是直接拷贝到U盘根目录下,各个代码不一样)。

3)编译过程

    我们主要分析build/core/Makefile,以我飞思卡尔Android sabresd_6dq 奇异版本为例。

# -----------------------------------------------------------------
# OTA update package

name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
  name := $(name)_debug
endif
name := $(name)-ota-$(FILE_NAME_TAG)
#$(FILE_NAME_TAG)就是$(BUILD_NUMBER)编译版本号,一般为build/core/build_id.mk文件中设置
name := $(BUILD_NAME)-target-files-$(BUILD_NUMBER)
#$(BUILD_NAME)就是编译名字,我的为Qiyi,所以最后升级包名字为:Qiyi-target-files-20130725.zip
INTERNAL_OTA_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip

# 编译升级包依赖于 $(KEY_CERT_PAIR)文件,我这里build/target/product/security/testkey文件
$(INTERNAL_OTA_PACKAGE_TARGET): KEY_CERT_PAIR := $(DEFAULT_KEY_CERT_PAIR)

# 编译升级包依赖于$(BUILT_TARGET_FILES_PACKAGE) 和 $(OTATOOLS)
# 这是编译核心,通过一个python脚本ota_from_target_files 将前面生成的zip包打成ota升级包文件
$(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE) $(OTATOOLS)
	@echo "Package OTA: $@"
	$(hide) ./build/tools/releasetools/ota_from_target_files -v \
	   -p $(HOST_OUT) \
           -k $(KEY_CERT_PAIR) \
		   -n \
           $(BUILT_TARGET_FILES_PACKAGE) $@

#-n 去掉时间戳标志,去掉该参数则不能回退版本
# 整个这句命令就是:./build/tools/releasetools/ota_from_target_files -v \
#		-p out/host/linux-x86 \
#		-k build/target/product/security/testkey \
#		-n \
#		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值