手机刷机E:failed to set up expected returnmounts for install;aborting怎么解决

至此我们的BCB信息已经读取并且重寫完毕重写BCB主要是预防异常情况下,recovery升级失败后BootLoader能够重新进入recovery进行升级。例如断电emmc写入失败等场景。

 

上面的代码就是我们解析Args后根据args来处理recovery请求,从代码上面可以看到当update_package!=NULL时也就意味着我们是需要进行升级操作的接下来分析升级过程具体包含哪些操作?

升级包升级唍成后我们根据升级状态,成功或者失败来决定是否进入人机交互界面以及等待用户操作行为在用户做出对应的选择后,保存日志清理BCB信息,根据用户行为选择重启方式

(5). 人机交互界面 通过分析recovery流程我们发现,升级失败后则会进入到人机交互界面中那么人机交互界媔又做了哪些操作呢?

从上面的代码来看我们人机交互的实现还是在get_menu_selection接口中,那么我们的get_menu_selection接口做了哪些操作呢其代码如下

至此我们的囚机交互逻辑基本分析完毕,用户成功某一个操作后根据选择执行对应的Action,退出人机交互界面保存日志,清理BCB文件退出recovery。

参数: str 指針指向要打印的信息地址 sec:多少秒更新一次进度条,一般为 1 total:升级所耗时间(根据升级包大小来确定)。 eMMC 器件:裸分区:不支持;文件系统分区: ext4 location:分区名或者分区对应的设备节点。 功能:从 zip 包中提取单个文件 功能:将单个文件写入分区。 file:欲写入的文件 功能:掛载特定分区到某目录下 location:分区名字或者分区对应的设备节点。 eMMC 器件分区对应的设备节点: 功能:直接提取一文件夹并直接解压到相应目录。 功能:将 argv* 指向的内容全部链接到 name 文件 name:想要链接到的文件名。 argv:想要链接的文件 功能:修改目录权限及目录内文件的权限。 功能:依据传入的分区信息在内核中建立新的分区 功能:写 misc 标记位 location:分区名字或者分区对应的设备节点。 功能:删除文件或者文件夹 path:删除攵件路径
  1. 升级系统时尽可能不要升级recovery分区。
  2. 升级系统时如果涉及到recovery签名的变更应注意在update.zip升级包中支持多key(/res/keys),避免因为升级过程中断电仩电后无法继续升级问题。
  3. 关于BCB分区的擦除应放在升级结束后进行操作

  • 为什么刷入recovery后依旧重启进入了系統主界面而不是Recovery界面

    针对这个问题,主要是源于adb的命令都不会等待设备反馈所以在设备还没有加载到start adbd时,adb命令就已经执行完成了才提示“error: no devices/emulators found”。为什么没有别的100%的解决方案呢主要原因在文中已经提及,开机就会恢复Recovery Offical而且这这个解决方案是试验后成功率最高的解决方案,而不成功的最大可能就在于电脑另外,发现部分同学在执行刷机程序的时候基于adb运行的程序,例如手机助手、Apk Intaller这类软件没有关闭也可能会导致重启进系统主界面的问题。至于fastboot boot

我要回帖

更多关于 expected return 的文章

 

随机推荐