基于块的OTA

原创 2015年11月20日 11:38:00

你可以使能运行Android5.0的新设备启动基于块的OTA升级.OTA是设备运营商远程更新一个设备的部分系统的机制.

  • Android 5.0和后续版本使用块设备OTA升级来确保每一个设备使用精确的相同的分区.块OTA处理整个分区作为一个文件并且计算一个单一的二进制补丁,而不是比较单独的文件和计算二进制补丁,确保生成的分区保存精确的目的位.这允许设备系统镜像通过fastboot或者是OTA实现相同的状态.

  • Android4.4和之前的版本使用文件OTA更新,文件OTA确保设备包含相同的文件内容,权限和模式,但是他以更新方法为基础,允许元数据例如时间戳和底层的存储分布去分辨设备.

由于块OTA确保每一个设备使用相同的分区,他允许使用DM验证来加密系统分区.后面会在”验证Boot”一节讲到dm验证.

注意:在使用dm验证之前,你一定要有一个可用的块OTA系统.

建议



对于Android5.0或者是后续版本的设备来说,在出厂ROM中使用的就是块OTA更新.为了为后续更新生成一个基于块的OTA,向ota_from_target_files中传递–block参数.

对于Android4.4或者是之前的版本,使用文件OTA更新.虽然有可能通过发送一个完整的Android5.0或后续版本的块OTA去转换设备,但是他需要发送一个完整的OTA,完整的OTA比一个增量OTA大很多.

因为dm验证需要Android 5.0或者是后续版本的新设备中的bootloader支持,对于现有设备,你不能使用dm验证.

工作在Android OTA系统(recovery镜像和生成OTA的脚本)上的开发者可以通过订阅 android-ota@googlegroups.com 的邮件列表来保持变化.

文件 VS 块OTA


在一个基于文件的OTA更新期间,Android尝试去改变位于文件系统层(以文件为基础的文件)的系统分区的内容.更新并没有保证以一致的顺序去写入文件,拥有一个一致的上次的修改时间和超级块,甚至是将块置于块设备上相同的位置.这个原因,基于文件的OTA在dm验证使能的设备上就会失败;在OTA尝试之后,设备就启动不起来了.

在基于块的OTA更新期间,Android提供设备的两个块镜像(而不是两套文件的集合)的不同.更新程序使用下面的方法检查位于块设备层(位于文件系统下面)的相应的构建服务:

  • 全更新.复制整个系统镜像是简单的,并且生成补丁也很简单.但是生成一个大镜像能够使制作应用补丁非常昂贵的.

  • 增量更新.使用二进制求异工具生成更小的镜像,并且使得生成补 丁应用也很简单,但是在生成补丁程序的时候是内存密集型的.
    注意:adb fastboot将位于device中的完全相同的位作为一个完整的 OTA,所以flashing对块OTA是兼容的.

更新未被改进的系统


对于运行Android 5.0的带有未被修改的系统分区的设备,对于块OTA的下载和安装和文件OTA是一样的.然而,OTA更新可能包含一个或者是更多下面的不同:

  • 下载大小.全块OTA更新大约和全文件OTA更新的大小是一样的,但是增量更新可能会大那么几M

    这里写图片描述
    比较Android 5.0和Android 5.1发行版的Nexus 6 OTA的大小

  • 总体上,增量块OTA更新比增量文件OTA更新要大一些,因为:

    • 数据保存.基于块的OTA比基于文件的OTA保存更多的数据(文件元数据,dm验证数据,ext4分布等).
    • 计算算法不同.在一个文件OTA更新中,如果在这两个构建版本中,文件路径是相同的,OTA包不为那个文件包含数据.在一个块OTA更新中,在一个文件中决定很小或者是没有变化取决于补丁计算算法的质量和源与目标系统中的文件数据布局.
  • 故障flash和RAM的敏感性.如果一个文件损坏了,如果他不接触损坏的文件的话,文件OTA还是会进行;但是如果块OTA检测到在系统分区上有损坏的话,块OTA就会失败.

更新改进的系统


对于运行Android 5.0的带有改进系统分区的设备来说:

  • 增量块OTA更新失败.系统分区可能会在adb重新挂载期间或者是被恶意软件所修改.文件OTA容忍分区的一些改变,例如添加不是源码或构建目标的额外文件.然而,块OTA更新不容忍分区的任何附加,所以用户需要安装一个全OTA来覆盖系统分区或者是烧入一个新的系统镜像来使能以后的OTA更新.

  • 尝试去改变改进的文件导致更新失败.对于文件和块OTA更新来说,如果OTA尝试去修改一个已经被改进的文件,OTA更新就会失败.

  • 尝试去访问该改进的文件可能生成错误(仅仅是dm验证).对于文件和块OTA更新来说,如果dm验证被使能了,并且OTA尝试去访问改进的文件系统的部分内容的话,OTA就会生成错误.

版权声明:您好,转载请留下本人博客的地址,谢谢

OTA升级包制作

1.差分升级 差分包(版本A差分升级到版本B,要先分别制作版本A的资源包A,和版本B的资源包B)的制作步骤 source build/envsetup.sh  lunch MULTILANGU...
  • qzh870808
  • qzh870808
  • 2016年12月06日 09:19
  • 591

iOS通过OTA方式分发应用的实现

转:http://blog.sina.com.cn/s/blog_6afb7d800101fa16.html   苹果的企业级证书发布的应用,是不用设备授权即可直接安装,并且不限设备上限。为了方便分...
  • zhangmiaoping23
  • zhangmiaoping23
  • 2015年07月20日 23:12
  • 3787

OTA本质与实现流程分析

接触OTA也有段时间了,是时候总结下了。所谓OTA(Over-the-AirTechnology)是指手机终端通过无线网下载远程服务器上的升级包,对系统或应用进行升级的技术。有关网络部分不做过多讨论,...
  • bi511304183
  • bi511304183
  • 2013年07月16日 10:38
  • 8190

OTA服务器和android客户端添加HTTPS协议

有段时间没总结了,这期间主要学习三个问题: 一是https协议,OTA HTTPS 协议可以工作了。 二是消息推送,推送用的是openfire+asmack方案,目前只能给所有用户广播消息,如果针对不...
  • tww85
  • tww85
  • 2016年11月30日 12:15
  • 1072

Android OTA升级原理和流程分析

Android OTA升级原理和流程分析(一)--update.zip包的制作 转载自:http://blog.chinaunix.net/uid-22028566-id-3533848.htm...
  • pan0755
  • pan0755
  • 2016年05月31日 16:25
  • 604

iOS 7.1 OTA 局域网部署

自从升级了ios 7.1,原来使用http方式的ota已经不行了。苹果真是蛋疼。jing gu
  • microchenhong
  • microchenhong
  • 2014年05月23日 11:35
  • 2835

OTA制作及升级过程笔记

1、概述 1.1   文档概要 前段时间学习了AndroidRecovery模式及OTA升级过程,为加深理解和防止以后遗忘,所以写这篇文档进行一个总结和梳理,以便日后查阅回顾。文档主要包括两部分,第一...
  • teliduxing1029
  • teliduxing1029
  • 2016年05月30日 11:29
  • 3901

Android 5.x OTA Update官方文档(三、模块式OTA)

OTA是原始制造商用来远程升级系统分区的一种机制,在Android5.0的设备上我们可以使用模块式OTA来更新我们的设备。 .Android5.x及其之后的版本都可以使用模块式OTA来保证每个设备使用...
  • huangyabin001
  • huangyabin001
  • 2015年04月04日 10:48
  • 6487

Android OTA升级原理和流程分析(六)---Recovery服务流程细节

Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节 转载自:http://blog.chinaunix.net/...
  • ylyuanlu
  • ylyuanlu
  • 2015年03月19日 14:50
  • 4415

Android OTA升级原理和流程分析(九)---updater-script脚本语法简介以及执行流程

Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程 转载自:http://blog.cs...
  • ylyuanlu
  • ylyuanlu
  • 2015年03月19日 14:53
  • 2631
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于块的OTA
举报原因:
原因补充:

(最多只允许输入30个字)