最近在做AVB校验,学习的时候就看到AVB里面有A/B系统。就挺纳闷这个是什么?

这个有什么用?在学习的时候看到了这个和OTA升级有关系?

下面看看为什么需要A/B系统,A/B是什么?

在这里、感谢这个时代的便捷性,感谢前辈精彩的blog,原文内容更加丰富哦。

为什么需要A/B系统?

什么是OTA升级

这就得了解一下OTA升级。

OTA(Over-the-AirTechnology)升级是指手机终端通过无线网络下载远程服务器上的升级包,对系统或应用进行升级的技术。

想想你每次手机升级是不是推送就来了,没说让你把手机寄回去嘛。

OTA(Over The Air)是一项基于短消息机制,通过手机终端或服务器(网上)方式实现SIM卡内业务菜单的动态下载、删除与更新,使用户获取个性化信息服务的数据增值业务(简称OTA业务),是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。

通过OTA空中下载技术,手机用户只要进行简单操作,就可以按照个人喜好把网络所提供的各种业务菜单利用OTA机制下载到手机中,并且还可以根据自己的意愿定制具体业务。

(技术还是要结合具体得场景会更加容易理解,脑子里能感性的想到手机升级的场景就好了)

二、ota升级方式有哪几种

1、乒乓升级

两个大小相同的分区APP1、APP2,如果当前在APP1分区执行代码,升级时就把固件下载到APP2分区。升级成功后设备重启,模组切换到APP2分区执行;下次再升级就切换到APP1分区,一直这样轮询。

2、拷贝升级

两个大小相同的分区APP、OTA。 APP分区存放要执行的固件,当OTA升级时会先把OTA数据包写入OTA分区,然后再将OTA数据搬移到APP数据区,最后从APP数据区启动执行。

3、压缩升级

两个大小相同的分区APP、OTA。 APP分区存放要执行的固件,OTA分区存放OTA数据的压缩包,bootload启动时会先将OTA压缩包解压,再搬移到APP分区。
其中,APP分区会比OTA分区要大,可以大大节省空间。

4、差分升级

差分升级又叫增量更新,是将旧版本与新版本的数据文件做差分,得到升级部分的补丁即差分包;用户下载了差分包之后,将旧版本数据与差分包进行组合,以得到新版本的数据文件,多数采用BSDiff差分算法。(这个游戏里面很多都是这样)

然后当我们把上面的APP1、APP2、OTA分区切成A/B两个分区的时候,是不是就好理解了。

下面进入A/B分区

A/B系统

A/B系统是什么?

顾名思义,A/B系统就是设备上有A和B两套可以工作的系统(用户数据只有一份,为两套系统共用),简单来讲,可以理解为一套系统分区,另外一套为备份分区。其系统版本可能一样;也可能不一样,其中一个是新版本,另外一个旧版本,通过升级,将旧版本也更新为新版本。当然,设备出厂时这两套系统肯定是一样的。

之所以叫套,而不是个,是因为Android系统不是由一个分区组成,其系统包括boot分区的kernel和ramdisk,system和vendor分区的应用程序和库文件,以及userdata分区的数据

A/B系统实现了无缝升级(seamless updates),有以下特点:

  • 出厂时设备上有两套可以正常工作的系统,升级时确保设备上始终有一个可以工作的系统,减少设备变砖的可能性,方便维修和售后。
  • OTA升级在Android系统的后台进行,所以更新过程中,用户可以正常使用设备,数据更新完成后,仅需要用户重启一次设备进入新系统(这场景熟不熟悉)
  • 如果OTA升级失败,设备可以回退到升级前的旧系统,并且可以尝试再次更新升级。

A/B系统前身-Android主系统和一个Recovery系统

Android 7.0上传统OTA方式和新的A/B系统方式都存在,只是编译时只能选择其中的一种OTA方式。由于A/B系统在分区上与传统OTA的分区设计不一样,二者无法兼容,所以7.0以前的系统无法通过OTA方式升级为A/B系统。

在Android 7.0之前,设备上有一个Android主系统和一个Recovery系统,Android主系统运行时检测是否需要升级,如果需要升级,则将升级的数据包下载并存放到cache分区,重启系统后进入Recovery系统,并用cache分区下载好的数据更新Android主系统,更新完成后重新启动进入Android主系统。如果更新失败,设备重启后就不能正常使用了,唯一的办法就是重新升级,直到成功为止。(想起当年按着开机键和音量键,进入recovery模式没)

A/B系统的不一样

与传统OTA方式相比,A/B系统的变化主要有:

1、系统的分区设置

  • 传统方式只有一套分区

  • A/B系统有两套分区,称为slot A和slot B

2、跟bootloader沟通的方式

  • 传统方式bootloader通过读取misc分区信息来决定是进入Android主系统还是Recovery系统

  • A/B系统的bootloader通过特定的分区信息来决定从slot A还是slot B启动

3、系统的编译过程

  • 传统方式在编译时会生成boot.img和recovery.img分别用于Android主系统和Recovery系统的ramdisk

  • A/B系统只有boot.img,而不再生成单独的recovery.img

4、OTA更新包的生成方式

  • A/B系统生成OTA包的工具和命令跟传统方式一样,但是生成内容的格式不一样了

由于内容较多,分多篇文章来详细分析整个A/B系统。(大家点击参考链接二进入前辈原文全系列学习,我只是做个学习笔记)

本文主要从分区和总体操作流程上来描述A/B系统,也可以参考Android官方对A/B系统的说明:“A/B System Updates”。

A/B系统的优势

整个A/B系统的升级更新在后台完成,升级中任何时间点都是可中断和可恢复的,相当于下载中的断点续传,更新操作对用户是透明的,在不影响用户操作的情况下完成升级。

设备可以设置数据下载、更新升级的场景和策略,例如:

只有在WiFi连接时才下载数据
电量较少时不下载数据、不进行更新
用户没有活动时才进行数据下载和更新等
具体有哪些策略依赖于开发者和用户的设置。

到这里大家应该有个感性的认识对于A/B系统,这就是本文的目的。对于更多的详细的内容,大家可以访问参考链接二继续学习。

参考链接:
https://m.eefocus.com/e/510559
https://blog.csdn.net/guyongqiangx/article/details/71334889

android的A/B到底是什么?OTA升级又是什么?相关推荐

  1. 小米4刷android wear,小米手表第四次OTA升级:最强安卓手表迎来全新功能+百款表盘...

    [dogkeji-科技犬] 作为小米首款智能手表产品--小米手表自去年双十一发布即成为史上最畅销的Wear OS手表,仅去年双十一单日销售额破亿,有业内人士表示小米手表一天的销量是过去所有安卓手表一年 ...

  2. Android OTA 升级专栏文章导读

    Android OTA 升级专栏文章导读 文章目录 Android OTA 升级专栏文章导读 1. 快速入口 2. 简要介绍 1. 基础入门:<Android A/B 系统>系列 2. 核 ...

  3. Android OTA升级(1):编译升级全包

         Android原生系统中就已经支持OTA升级.所谓OTA升级就是通过空中接口获取升级包,然后更新系统固件.一般地,升级包无论如何获取,哪怕是直接TCard本地升级,也被称为OTA升级.    ...

  4. 在线升级:OTA升级的原理和实现方式

    目录 1.OTA 在线升级 2.实现方式 3.操作方式 3.1.后台式升级 3.2.非后台式式更新 4.STM32 的在线升级 4.1.划分 Flash 区域 4.2.实操1 - Flash空间地址的 ...

  5. android ota 版本校验,OTA升级签名校验简析

    1. 概要 如果进行过OTA升级的开发者,都或多或少有这样的疑问,如何确定该OTA升级包是可以信任的呢?这其中其实涉及到一个签名验证的流程. 2. 签名生成 在生成正规的固件时,一般会运行生成新key ...

  6. 【转】Android OTA 升级之一:编译升级包

    Android OTA 升级之一:编译升级包 作者: 宋立新 Email : zjujoe@yahoo.com 前言 OTA 升级是 Android 系统提供的标准软件升级方式. 它功能强大,提供了完 ...

  7. Android OTA 升级之三:生成recovery.img

    Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...

  8. android怎么ota升级,Android OTA升级过程

    通过网络或直接本地获取到OTA升级包之后,通过程序就可开始Android的升级.本文描述这一过程. 在获取到OTA升级包之后,可以直接通过android.os.RecoverySystem.insta ...

  9. Android 8.0 (35)----Android8.0.0-r4的OTA升级流程

    Android8.0.0-r4的OTA升级流程 原网址:https://blog.csdn.net/dingfengnupt88/article/details/52875228  Android系统 ...

最新文章

  1. ★核心关注点_《信息系统项目管理师考试考点分析与真题详解》
  2. SVN-项目 XXX 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何修改...
  3. centos7最小安装没有 ifconfig netstat 命令
  4. DevExpress的PdfViewer添加工具栏实现PDF打开、预览、保存、打印
  5. hdu_1007_Quoit Design(最近点对)
  6. java 后端 验证码逻辑_Java后端产生验证码后台验证功能的实现代码
  7. 关于游戏平衡性——王者荣耀英雄伤害数值参考
  8. 如何随机选取1000个关键字
  9. 宝塔服务器管理助手Linux面版-使用教程
  10. webAudioAPI
  11. ETL工具 DataX数据同步,LINUX CRONTAB 定时调度
  12. SQL调优技巧:统计信息(文末福利)
  13. SQL语句练习-入门篇
  14. 开放PLM——Aras Innovator编程学习(一)简介
  15. R 语言消除pdf图片的空白
  16. 4G DTU和4G工业路由器有哪些区别?
  17. css white-space属性总结
  18. 这5个免费音效素材网站,你一定要收藏好~
  19. SpreadJS 表格控件相关基础知识
  20. 【面试总结】面试前不得不刷一下的硬核总结。

热门文章

  1. 推荐几本适合初学者的Java书籍
  2. Java斐波那契数列
  3. Modbus协议应用纪实
  4. 基于盲估计和ICA的单通道盲分离算法–Matlab仿真
  5. 对Xcode7真机调试的无力吐槽
  6. uniapp 手机端时禁止输入框弹出键盘,使用自定义键盘
  7. 阿里云狂揽国际朋友圈,集体融入数字中国新时代
  8. Python递归小案例,斐波那契,阶乘等小案例
  9. 【Scratch-文字朗读模块】Scratch-文字朗读模块分析——人工智能的基础
  10. IT 通信类客户分析