在做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胜出。