OTA打包工具

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49883975 在buil...
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49883975

在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程序的细节,编写语法和内置函数,后面会有详细介绍.

目录
相关文章
|
3月前
|
开发工具 Windows
OpenHarmony 3.2:制作OTA升级包,附脚本及配置
本文介绍了在OpenHarmony 3.2版本中手动制作OTA升级包的详细流程,包括编译镜像、创建OTA文件目录、编写配置文件、运行脚本制作升级包、推送验证以及OTA升级成功的标志和完整打印过程,并提供了一个基于RK3568的简要OTA打包脚本。
98 0
|
前端开发 开发工具 git
cimi——一款全自动发布NPM包的工具
博主最近的时间一直投入concis组件库的开发工作,每次改完bug或者是新增完一些组件功能后都需要去发包、更新线上文档,这样一步步下来其实是比较麻烦的。
219 1
cimi——一款全自动发布NPM包的工具
|
JavaScript 开发工具
使用vite打包libary模式打包sdk
使用vite打包libary模式打包sdk
533 0
|
Linux iOS开发 MacOS
使用Electron生成安装包并打包为不同平台的应用格式
导言: 使用Electron开发桌面应用后,我们需要将其打包成适用于不同平台的安装包,例如 Mac 的`dmg`和 Windows 的`exe`。本文将介绍如何使用 Electron-forge 自动生成项目文件,并通过简单的步骤实现打包过程。
6395 0
|
Java 开发工具 Android开发
Ant 打包安卓apk(1)-手动档
Ant 打包安卓apk(1)-手动档
148 0
|
算法 Java 开发工具
openHarmony系统打包应用程序
经过一段时间的学习,打包应用并安装应该是最激动人心的一环了,所以今天带大家完成openHarmony应用的安装,正文即将开始~~
431 0
openHarmony系统打包应用程序
|
Java 编译器 开发工具
cocos打包安卓: gradlew打包Android环境搭建
cocos打包安卓: gradlew打包Android环境搭建
546 0
|
Android开发
关于安卓集成Bugly热更新后,补丁包合成失败问题
安卓集成Bugly热更新后,补丁包合成失败问题
311 0
|
安全 Java API
Ant打包安卓apk(4)-多渠道(配置)打包方案
目标 虽然用不上渠道的概念, 其实其实和渠道的概念类似, 其实就是多几个可以变更的字段配置 目前我需要一个boolean, 一个请求的url, config.url =http://10.1.64.42:9082/insure-pad/padServer.do, config.bool = false 我想加快apk打包速度啊, 一方面是还在用eclipse, 二来如果用普通的gradle的farvor方式还是不够快,美团都有v2方案了, 自己搞一搞比较有意思而已 META-INF目录下添加额外信息(不推荐) 然后从代码中读取需要的字段即可 探测敌情 我的思考 我写出了这种形式,htt
317 0
Ant打包安卓apk(4)-多渠道(配置)打包方案