OTA 软件包工具

build/tools/releasetools 中提供的 ota_from_target_files 工具可以构建两种类型的软件包:完整更新软件包和增量更新软件包。该工具将 Android 构建系统生成的 target_files .zip 文件作为输入文件。

完整更新

完整更新是指软件包将对设备的整个最终状态(系统分区、启动分区和恢复分区)进行更新。只要设备能够接收软件包并启动恢复系统,软件包就可以安装所需的版本,而不受设备当前状态的影响。

示例:使用发布工具为假设的 tardis 设备构建完整更新:

# first, build the target-files .zip . build/envsetup.sh && lunch tardis-eng mkdir dist_output make dist DIST_DIR=dist_output

target_files .zip 包含构建 OTA 软件包所需的所有内容。

./build/tools/releasetools/ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip

ota_update.zip 现已准备就绪,可以发送到测试设备(所有内容均使用测试密钥进行签名)。对于用户设备,请生成并使用自己的私钥,有关详情,请参阅签名版本以供发布。

增量更新

增量更新包含一组要应用于设备上的已有数据的二进制补丁程序。以下原因可能会导致此类更新软件包非常小:

  • 未更改的文件不需要包含在其中。
  • 更改的文件通常与之前的版本非常相似,因此软件包中只需包含针对两个文件之间的不同之处进行的编码。

只有当设备具有构建相应软件包所使用的旧版本或源版本时,您才能在设备上安装增量更新软件包。要构建增量更新,您需要拥有上一个版本(您要更新的版本)中的 target_files .zip 以及新版本中的 target_files .zip。

./build/tools/releasetools/ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip
# make incremental from the older version

该版本与上一个版本非常类似,而且增量更新软件包(约 1 MB)比对应的完整更新软件包 (60 MB) 小得多。

注意:要为后续更新生成基于块的 OTA,请将 --block 选项传递到 ota_from_target_files

仅当设备运行的上一个版本与相应增量更新软件包的起点版本完全一样时,才向其分发该增量更新软件包。如果尝试在运行其他版本的设备上安装该增量包,系统将会显示恢复错误图标。此时用户只要重新启动设备,即可回到旧系统;软件包会先验证它要更新的所有文件是否已回到之前的状态,然后再对其执行操作,因此,如果发生上述情况,设备不应留在半升级状态。

更新软件包

更新软件包(ota_update.zipincremental_ota_update.zip)是包含可执行二进制文件 META-INF/com/google/android/update-binary 的 .zip 文件。对软件包上的签名进行验证后,恢复进程会将该二进制文件解压到 /tmp 并运行它,然后传递以下参数:

  • 更新二进制 API 版本号。如果向更新二进制文件传递的参数发生变化,此数字将递增。
  • 命令管道的文件描述符。更新程序可以使用此管道将命令发送回恢复二进制文件(主要用于界面变化,例如向用户指示进度)。
  • 更新软件包 .zip 文件的文件名

恢复软件包可以使用任何静态链接的二进制文件作为更新二进制文件。OTA 软件包构建工具使用更新程序(bootable/recovery/updater 中的源),该程序提供一种可以执行很多安装任务的简单脚本语言。您可以替换设备上运行的任何其他二进制文件。

要详细了解更新程序二进制文件、edify 语法和内建函数,请参阅 OTA 软件包内部探秘。

Android 系统(230)---OTA 软件包工具相关推荐

  1. 如何选取 android 系统上的编译工具链

    https://mdgsf.github.io/2020/07/23/miscellanea-cpu/ 先介绍一些基础背景知识. Intel. 我们一般买的电脑都是 Intel 的 CPU. AMD. ...

  2. android otaupdate源码路径,Android学习之OTA Update

    之前需要处理一些应用程序用到的update相关问题, 了解到android build system会利用开源的bsdiff进行一些关于package的更新动作. 这篇文章就分析一下android系统 ...

  3. android流量控制的实现,Android系统中P2P应用数据包捕获及流量控制研究

    摘要: P2P应用产生的流量正大肆吞噬着网络带宽,增加了网络运营商的管理压力.同时随着以Android为主的移动设备用户群变得越来越庞大,相应的流量吸费问题也随之产生,特别是Android手机上的P2 ...

  4. sd卡linux错误检测,android系统正在准备SD卡正在检测是否有错误且SD卡无法读取解决办法...

    手机android系统,也许您会碰到这样的情况. 错误提示:正在准备SD卡 正在检测是否有错误.这时sd卡(即内存卡)不能正常使用,不管手机自带的程序,还是通过usb口连接到电脑都无法识别sd卡. 这 ...

  5. 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上

    博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813  本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 A ...

  6. Android系统框架

    转自:网络 Android系统是基于Linux和Java技术,它在底层采用Linux内核和本地库,在上层提供Java支持框架和开发接口.它借助于 Linux强大的稳定性.开放性和可移植性,Java语言 ...

  7. android ota 服务器搭建,构建 OTA 软件包  |  Android 开源项目  |  Android Open Source Project...

    您可以使用 build/make/tools/releasetools 中提供的 ota_from_target_files 工具,针对使用 A/B 系统更新或非 A/B 系统更新的设备构建完整 OT ...

  8. android 系统(154)----OTA制作及升级过程

    OTA制作及升级过程 1.概述 1.1   文档概要 前段时间学习了AndroidRecovery模式及OTA升级过程,为加深理解和防止以后遗忘,所以写这篇文档进行一个总结和梳理,以便日后查阅回顾.文 ...

  9. Android系统手机的ROOT的那些事儿~ 附主流手机的ROOT图文教程和工具下载

    ROOT,相信这个词,对于Android手机用户来说并不陌生,有些同学买来Android手机的第一件事是,就是ROOT手机,去掉系统自带的一些自己不喜欢的应用程序等等.那么到底什么是ROOT呢?ROO ...

最新文章

  1. 2020未来科学大奖获奖名单揭晓
  2. linux系统下pid的取值范围了解一下
  3. bootstrap 模态窗口按钮位置_Bootstrap 模态框(Modal)插件的使用
  4. c# 异常处理 try-catch-finally
  5. 字节跳动单点恢复功能及 Regional CheckPoint 优化实践
  6. 3806. 最小化字符串-AcWing题库
  7. 软件测试作业随笔之二:Homework 2
  8. 一篇博文让C盘瘦身!清理内存!
  9. SIFT特征提取原理
  10. abaqus编写本构方程vumat_abaqus vumat sdv
  11. HTML5海报生成器源码,原生js小项目 - canvas海报生成器
  12. LOL各大服务器所在位置,LOL各大服务器所在地,8个大区全都在广东,是其他省的两倍...
  13. gitter 卸载_最佳Gitter渠道:iOS开发人员
  14. web test LoadRunner docs / loadrunner license、cd-key、download
  15. 期货的暴富逻辑是什么?
  16. 人脸、指纹、虹膜、行为,你需要的人工智能生物识别AI数据集全在这里
  17. Mysql断流_彻底解决ROS网页断流问题
  18. 读书笔记(被讨厌的勇气一)
  19. 建设全功能团队——实践篇
  20. 427. Construct Quad Tree

热门文章

  1. deepin v20桌面bug_深度操作系统 Deepin V20
  2. 物联网-移远M26模块OpenCPU开发第2讲(FLASH处理)
  3. Linux操作系统下三种配置环境变量的方法
  4. mysql linux安装百度经验_MySQL 安装(Windows Linux)
  5. 计算机技术在风景园林中的应用和选择,数字技术在风景园林设计中的应用
  6. 力控批量添加变量_力控组态软件的变量操作函数1
  7. 【LeetCode】剑指 Offer 58 - II. 左旋转字符串
  8. JavaScript-面试 表单验证
  9. Java的四种引用方式
  10. logstash 使用glusterfs网络存储偶发性文件解析异常的问题