解决android系统进行OTA升级失败时进入recovery界面不能自动重启问题

时间:2022-09-07 11:16:29

1.前言

         在使用android系统中我们肯定需要对其进行OTA升级,因项目原因,我们机器升级频率比较高,android系统升级出现失败的情况肯定是有的,原因用多方面,下面会说到。升级失败问题,对于手机用户来说可以选择重启手机即可,当我们使用机器及环境不允许人为对其经常操作,所以如果升级失败,就是卡在recovery模式中,进入机器人界面出不了,这时我们需要机器自动处理故障,自动重启机器,恢复正常界面。


2.Android系统升级失败

      对于android系统的升级流程大概流程为拷贝升级包,写命令“--update_package=update file path”到/cache/recovery/command中,重启进入recovery模块,我这边就不进行多说了,网上一搜一大堆。

      升级失败原因主要有两点,一、拷贝的升级包不完整,二、写入/cache/recovery/command丢失,这两个问题归根到底就是数据没写入系统硬件磁盘中,导致系统重启没有读取到完整数据,这里我们使用同步指令sync进行磁盘同步,最终还是无效。因此我们使用比较极端方法,不能解决失败原因,我们就在出现失败时让系统重新跑起来。


3.退出recovery模式

    前面说过当系统进入recovery模式下即退出来,需要修改代码:bootable\recovery\recovery.c程序中,具体函数prompt_and_wait()。进入机器人界面其实就是调用该函数,我们可以在这里直接让系统重启或者延时重启。具体重启函数不同安卓版本都不同,这里就不概述了。

      以上是我防止android系统升级失败卡死在recovery模式下,当然可要考虑应用场景,我们用的场景是不需要认为操作。