android ota不打包_OTA打包工具

在build/tools/releasetools文件夹中提供的 ota_from_target_files工具可以构建两种包:全镜像包和增量包.这些工作把Android构建系统提供的目标文件.zip文件作为他们的输入.

全更新

全更新就是把编译后设备的所有的状态(system,boot和recovery分区)都被包含到包里.只要设备能够接受更新包并且启动recovery系统,不管当前设备的状态是什么样的,包就能够安装整个系统.

例子:使用release工具为假设的tardis设备构建一个完整的更新包:

# first, build the target-files .zip

% . build/envsetup.sh && lunch tardis-eng

% mkdir dist_output

% make dist DIST_DIR=dist_output

[...]

% ls -l dist_output/*target_files*

-rw-r----- 1 user eng 69965275 Sep 29 15:51 tardis-target_files.zip

目标文件.zip包含你需要的构建OTA包的所有东西.

% ./build/tools/releasetools/ota_from_target_files \

dist_output/tardis-target_files.zip ota_update.zip

unzipping target target-files...

done.

% ls -l ota_update.zip

-rw-r----- 1 user eng 62236561 Sep 29 15:58 ota_update.zip

ota_update.zip现在已经可以用于测试设备了.对于用户设备来说,要生成和使用你自己的密钥.(后面介绍)

增量更新

一个增量更新包含着要应用到设备中已存在的数据的补丁.这会使得更新包比较小:

没有被改变的文件不必包含在更新包中

被改变的文件如果和之前版本比较相似的话,更新包仅仅需要包含两个文件不同部分的编码即可.

你仅仅可以在使用之前版本构建的设备上安装增量更新包.为了构建一个增量更新包,你需要来自上一个版本的目标文件.zip和新要构建的目标文件.zip.

% ./build/tools/releasetools/ota_from_target_files \

-i PREVIOUS-tardis-target_files.zip \ # make incremental from this older version

dist_output/tardis-target_files.zip incremental_ota_update.zip

unzipping target target-files...

unzipping source target-files...

[...]

done.

% ls -l incremental_ota_update.zip

-rw-r----- 1 user eng 1175314 Sep 29 16:10 incremental_ota_update.zip

这次构建和上一个非常相似,增量更新包比相应的全更新包要小的多.

注意:为了为后续的更新包生成基于块的OTA,向ota_from_target_files中传递–block选项.

仅仅向运行相同的上一个版本包的设备发行增量包才能正常运行.如果在运行其他构建版本的设备中尝试安装增量包的花就会导致在recovery模式中的错误.在这个时候重启设备就会返回用户之前的系统;在创建他们的时候,更新包验证所有文件的之前的状态,如果发生这种情况,该设备不会留在半升级状态。

更新包

一个更新包(ota_update.zip,incremental_ota_update.zip)是一个.zip文件,他包含可执行二进制文件META-INF/com/google/android/update-binary.在验证完成更新包的签名之后,recovery将这个二进制文件提取到/tmp目录下并运行该程序,同时,将下面的参数传递过去:

更新二进制API版本号.如果传递到更新二进制的参数改变了,这个号就会被增加

命令管道的文件描述符.更新程序可以使用这个管道来想recovery二进制发送命令(大多数都是UI改变,例如更新进度条等)

更新包.zip文件的文件名

一个recovery包可以使用任何静态链接的二进制文件作为更新二进制包.OTA包构建工具使用updater程序(源码位于bootable/recovery/updater),该文件提供了一个简单的可以做任何安装工作的脚本语言.你可以替代任何运行在设备上的其他二进制程序.

对于updater程序的细节,编写语法和内置函数,后面会有详细介绍.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值