1 升级功能
2 升级流程
3 OTA包结构和配置文件
4 增量升级
5 全量升级
6 升级包设计
7 功能实现
7.1 升级包生成(通用)
7.2 升级流程实现(示例)
8 最后
9 参考资料
1 升级功能
-
OTA升级 -
升级方式 -
根据升级配置文件指定升级内容 -
全覆盖升级 -
支持全量升级 -
支持增量升级 -
支持tar、zip打包方式 -
支持升级失败版本回滚 -
支持版本OTA降级 -
支持增量降级版本 -
支持全量降级到指定版本
2 升级流程
主应用:
-
收到云端升级指令和升级包信息 -
开始下载升级包 -
发送升级信息(升级包绝对路径+校验和)到独立的升级管理程序 -
如果升级成功,启动时发送当前版本至云端
升级管理及状态监控应用:
-
校验升级包 -
解压缩升级包 -
备份原程序和相关资源(包含中间生成文件) -
开始升级(前提是待升级程序需停止运行) -
全量升级:目前较为粗暴,删除所有旧文件,替换新文件,如果配置相关文件在程序根目录范围内,配置也会被重置 -
增量升级:需要校验旧版本是否与升级要求的旧版本号一致 && 要求升级前后应用根路径一致 -
升级完成重启应用 -
监控升级后应用启动运行状态,是否升级成功 -
失败,外部做回滚操作 -
升级成功,删除原备份版本和升级包及中间临时文件
注意:
主应用
和升级管理及状态监控应用
不能放于同一根目录下,防止操作冲突。
3 OTA包结构和配置文件
主要包含三个部分:
-
主程序 -
其他资源和配置文件 -
当前版本升级信息文件:ota_info.json
4 增量升级
对于增量升级我们需要考虑有:
-
支持最小单位的增量升级,比如具体到某个模型或者某个配置文件 -
升级完成,保证整个应用程序包是一个最小内容,即无升级后的遗留 垃圾
文件存在 -
确保增量升级过程中的版本管理,即不会出现升级后出现无法启动,最小升级单位不匹配的问题 -
做到减少版本管理的复杂度,免除人工校验的工作 -
版本回滚时,升级包的完整性 -
版本升级过程的衔接 -
升级备份
5 全量升级
对于全量升级我们需要考虑有:
-
升级后前版本的配置能够决定是否保留 -
升级备份
6 升级包设计
核心:
-
必须拥有前一个OTA包信息,保证版本的无缝升级 -
当前OTA包信息
本文分享自微信公众号 - 别打名名(biedamingming)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。