什么是FOTA
FOTA升级是指通过无线网络对设备进行升级的技术。FOTA是Firmware Over-The-Air的简称,翻译成中文为“空中固件升级”。通过FOTA升级,设备的固件可以远程升级,无需人工干预,可以提高设备的稳定性和可靠性。
FOTA升级流程
FOTA流程升级流程说明
1.设备开机后,请求固定地址,获取升级配置文件;
2.根据升级配置文件,匹配升级配置,确认本机是否需要升级,设置升级方式(如是否强制升级,是否静默升级);
3.确定需要升级后,根据升级包地址下载升级包,完成升级
注意事项及问题
1.升级策略配置,需要能够满足各种升级要求,能够轻松控制各设备的升级情况,要求至少可配置地区,mac地址(范围),目标版本号。
2.升级过程中断,需要有容错机制,下次开机提醒用户继续升级。
3.支持断点续传。
差分包升级
差分包升级也就是增量更新,是一种将旧版本系统镜像与新版本系统镜像进行比较,提取出不同之处,并生成一个小差分包来更新系统的方法。这种差分更新方法可以显著减少更新包的大小和下载时间,并减少对带宽和存储资源的占用。
步骤
- make出第一个升级包:make otapackage生成升级包A:systemA.zip,注意:制作差分包的原始包目录是这个:out/target/product/[项目名]/obj/PACKAGING/target_files_intermediates/
- make出第二个升级包:systemB.zip
- 生成差分包:system.zip 在源码根目录下新建文件夹OTA,把systemA.zip和systemB.zip放进去,然后执行命令./build/tools/releasetools/ota_from_target_files -i ~/OTA/systemA.zip ~/OTA/systemB.zip ~/OTA/update.zip 生成差分包。
- 对差分包进行升级
遇到的问题
- OTA文件目录问题,我这边需要放到源码工程目录外,否则找不到,不同源码版本可能目录要求不一样,具体根据错误提示修改即可
- 执行差分包命令时报错:RuntimeError: Downgrade detected based on timestamp check: pre: 1666250183, post: 1665538833. Need to specify --override_timestamp OR --downgrade to allow building the incremental. 原因时我systemB.zip升级包是先生成的,升级包时间校验不通过,这种情况按正常顺序生成升级包时不会出现,或在生成systemB.zip前先执行命令 find out/ -name *.prop | xargs rm -rf
- 升级过程报错。升级到一半出错,出现了机器人躺下的界面,查看升级日志cache/recovery/last_logo,发现有疑是文件检验不通过之类的错误,网上说原系统的system文件不能被修改,我这里为了测试确实修改了一个apk,重新来还是失败,在日志中发现remount time :1的字样,应该是不能remount系统,重来之后升级成功过,systemB新增的文件成功添加到新系统。差分包升级完成。
网友评论