android的A/B到底是什么?OTA升级又是什么?
最近在做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升级又是什么?相关推荐
- 小米4刷android wear,小米手表第四次OTA升级:最强安卓手表迎来全新功能+百款表盘...
[dogkeji-科技犬] 作为小米首款智能手表产品--小米手表自去年双十一发布即成为史上最畅销的Wear OS手表,仅去年双十一单日销售额破亿,有业内人士表示小米手表一天的销量是过去所有安卓手表一年 ...
- Android OTA 升级专栏文章导读
Android OTA 升级专栏文章导读 文章目录 Android OTA 升级专栏文章导读 1. 快速入口 2. 简要介绍 1. 基础入门:<Android A/B 系统>系列 2. 核 ...
- Android OTA升级(1):编译升级全包
Android原生系统中就已经支持OTA升级.所谓OTA升级就是通过空中接口获取升级包,然后更新系统固件.一般地,升级包无论如何获取,哪怕是直接TCard本地升级,也被称为OTA升级. ...
- 在线升级:OTA升级的原理和实现方式
目录 1.OTA 在线升级 2.实现方式 3.操作方式 3.1.后台式升级 3.2.非后台式式更新 4.STM32 的在线升级 4.1.划分 Flash 区域 4.2.实操1 - Flash空间地址的 ...
- android ota 版本校验,OTA升级签名校验简析
1. 概要 如果进行过OTA升级的开发者,都或多或少有这样的疑问,如何确定该OTA升级包是可以信任的呢?这其中其实涉及到一个签名验证的流程. 2. 签名生成 在生成正规的固件时,一般会运行生成新key ...
- 【转】Android OTA 升级之一:编译升级包
Android OTA 升级之一:编译升级包 作者: 宋立新 Email : zjujoe@yahoo.com 前言 OTA 升级是 Android 系统提供的标准软件升级方式. 它功能强大,提供了完 ...
- Android OTA 升级之三:生成recovery.img
Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...
- android怎么ota升级,Android OTA升级过程
通过网络或直接本地获取到OTA升级包之后,通过程序就可开始Android的升级.本文描述这一过程. 在获取到OTA升级包之后,可以直接通过android.os.RecoverySystem.insta ...
- Android 8.0 (35)----Android8.0.0-r4的OTA升级流程
Android8.0.0-r4的OTA升级流程 原网址:https://blog.csdn.net/dingfengnupt88/article/details/52875228 Android系统 ...
最新文章
- ★核心关注点_《信息系统项目管理师考试考点分析与真题详解》
- SVN-项目 XXX 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何修改...
- centos7最小安装没有 ifconfig netstat 命令
- DevExpress的PdfViewer添加工具栏实现PDF打开、预览、保存、打印
- hdu_1007_Quoit Design(最近点对)
- java 后端 验证码逻辑_Java后端产生验证码后台验证功能的实现代码
- 关于游戏平衡性——王者荣耀英雄伤害数值参考
- 如何随机选取1000个关键字
- 宝塔服务器管理助手Linux面版-使用教程
- webAudioAPI
- ETL工具 DataX数据同步,LINUX CRONTAB 定时调度
- SQL调优技巧:统计信息(文末福利)
- SQL语句练习-入门篇
- 开放PLM——Aras Innovator编程学习(一)简介
- R 语言消除pdf图片的空白
- 4G DTU和4G工业路由器有哪些区别?
- css white-space属性总结
- 这5个免费音效素材网站,你一定要收藏好~
- SpreadJS 表格控件相关基础知识
- 【面试总结】面试前不得不刷一下的硬核总结。