OTA多版本升级方案
2014-01-03 16:02
465 查看
在做OTA升级的时候,遇到一问题,当OTA多版本存在的时候,用户每更新一个detail包,就需要重启一次手机,如果有100个detail包,用户就需要重启100次么?
项目中的实际情况是,项目X出厂时刷的是版本100,项目每周都要定时推送用户升级,也就是有后续的101,102,103...,也就是说商店正在出售的手机还是100版本,而用户拿到手机的时候版本是出厂的时候的版本,连接网络后需要更新升级,也就是当检测到有101时,下载101版本,重启进入升级模式,更新101版本,重新启动后,检测到有102版本,又下载101版本,重启进入升级模式,再更新102版本。
那么有什么解决方案呢?
方案1
检测到如果是版本差有一定大时,直接下载最新版的full包,然后更新升级。
缺点:一般full包比较大,当网络情况不好时,用户下载更新包时间较长。
方案2
检测到所有的更新包,然后下载,合并成一个更新包,然后更新升级。
缺点:合并成一个更新包时,合并时间较长,如果出现合并错误,将导致不可预估的异常。
方案3
检测到所有的更新包,然后下载,通过修改升级模式代码,能够升级多个更新包。
缺点:暂无
优点:用户不需要在下载更新后,等待大量的时间用于合并更新包,方案3占用的时间为方案2占用时间的一半。
占用时间说明:
方案2: 下载更新包时间 + 合并时间 + 更新时间
方案3: 下载更新包时间 + 更新时间
方案2 和 方案3 由于更新包大小一样,所以理论上更新时间一样。
所以方案3胜出。
项目中的实际情况是,项目X出厂时刷的是版本100,项目每周都要定时推送用户升级,也就是有后续的101,102,103...,也就是说商店正在出售的手机还是100版本,而用户拿到手机的时候版本是出厂的时候的版本,连接网络后需要更新升级,也就是当检测到有101时,下载101版本,重启进入升级模式,更新101版本,重新启动后,检测到有102版本,又下载101版本,重启进入升级模式,再更新102版本。
那么有什么解决方案呢?
方案1
检测到如果是版本差有一定大时,直接下载最新版的full包,然后更新升级。
缺点:一般full包比较大,当网络情况不好时,用户下载更新包时间较长。
方案2
检测到所有的更新包,然后下载,合并成一个更新包,然后更新升级。
缺点:合并成一个更新包时,合并时间较长,如果出现合并错误,将导致不可预估的异常。
方案3
检测到所有的更新包,然后下载,通过修改升级模式代码,能够升级多个更新包。
缺点:暂无
优点:用户不需要在下载更新后,等待大量的时间用于合并更新包,方案3占用的时间为方案2占用时间的一半。
占用时间说明:
方案2: 下载更新包时间 + 合并时间 + 更新时间
方案3: 下载更新包时间 + 更新时间
方案2 和 方案3 由于更新包大小一样,所以理论上更新时间一样。
所以方案3胜出。
相关文章推荐
- Android7.0 MTK方案 编译OTA升级包错误Could not append verity data!
- 汉字改革循序渐进方案(修改整理升级版本V1.1)
- 可在线OTA升级的嵌入式系统设计方案
- MySQL主从架构由5.5版本升级到5.6方案
- React-Native版本升级的实践方案
- 升级CentOS 7.4内核版本的三种方案
- Android OTA升级新旧版本任意升级
- mongos分片集群版本升级方案
- android ble OTA升级(Ti OAD 方案)
- WEB实现在线版本升级工具的一些想法[WEB OTA]
- xUtils框架DBUtils数据库版本升级方案
- Linux下Tomcat版本升级方案
- L版本开启MTK_SHARED_SDCARD后OTA包放入内卡如何MOTA升级成功
- Visual Studio 2010 Web项目的jQuery版本升级方案
- 关于OTA升级从高版本到低版本升级后,数据库无法降级引起的异常分析
- 切合OTA升级的版本升级包自动生成脚本
- OTA升级Google官方文档翻译——对要发布的版本进行签名
- Hbase版本升级之数据迁移方案汇总
- 可在线OTA升级的嵌入式系统设计方案
- 一起谈.NET技术,Visual Studio 2010 Web项目的jQuery版本升级方案