本文为洛奇看世界(guyongqiangx)原创,转载请注明出处。
原文链接:https://blog.csdn.net/guyongqiangx/article/details/133691683
0. 导读
上一篇《Android Update Engine分析(二十五)升级状态 prefs 是如何保存的?》 主要分析了 Update Engine 中 prefs 的实现,以及对所有使用 prefs 的统计。在最后打算以 kPrefsBootId 为例,提供一些研究 prefs 的方法。
但随着学习的深入,发现 kPrefsBootId 的变化涉的内容很多。这个过程包括,系统升级,成功更新各分区镜像,接着写入 prefs 状态标记,设备重启,系统启动 Update Engine 服务进程,Update Engine 通过 prefs 数据检查 OTA 状态(包括 Slot 槽位切换)。
在我的 OTA 讨论群中曾经出现过一个问题,系统更新成功以后,不切换 Slot 槽位,重启后系统会提示升级失败。这到底是怎么回事呢?
图 1. OTA 更新数据成功但不切换 Slot
其实这里升级成功,但不切换槽位导致的失败,和系统重启前对 pre