本文主要探讨了Android系统的OTA升级流程,特别是第Ⅰ阶段,即从下载到引导设备进入Recovery模式的过程。这个流程通常发生在用户通过官方渠道获取新版本更新时,涉及多个关键步骤。
1. **下载**:
OTA升级的第一步是下载新的软件包,通常是一个名为`OTA_PKG_PATH`的ZIP文件,如`/sdcard/googleota/update.zip`。这个过程涉及使用Android Package Manager(PkgManagerBaseActivity)来下载并保存更新文件。
2. **升级检查**:
下载完成后,系统会检查更新,确认其适用于当前设备,并且在用户设备上执行必要的安装准备工作。
3. **菜单事件监听器**:
在菜单操作中,比如在系统更新Activity中,监听器用于处理用户选择升级操作,可能包括确认对话框或自动安装选项。
4. **SystemUpdate Activity**:
这个Activity负责管理和展示升级过程,当用户选择升级后,会启动相关的服务来执行安装。
5. **F:installPackage**:
这部分代码执行实际的安装操作,调用`PkgManagerBaseActivity`中的方法来安装软件包。
6. **Reboot Intent**:
安装完成后,通常会发送一个Reboot Intent到`RebootRecoveryService`,告知系统重启进入Recovery模式。Recovery模式允许进行高级的系统维护操作,如格式化内部存储和恢复出厂设置。
7. **设置Recovery标志**:
在`GoogleOtaAgent`中,会设置`setRebootFlag`,以便后续执行特定的Recovery步骤。
8. **写入Recovery Flash**:
将特定的字符串,如`boot-recovery`,写入到`/dev/misc`分区设备,这是引导设备进入Recovery的标志。
9. **添加命令文件**:
`WriteCommandService`会将`--update_package`与OTA软件包路径合并,形成完整的命令行参数,准备在Recovery模式下执行安装。
10. **Recovery自身流程**:
Recovery模式具有自己的基础结构和功能,如支持清除数据、格式化内部存储以及执行预定义的命令(如`reboot`)。
11. **恢复出厂设置流程**:
文档中详细描述了三种不同的方式来恢复出厂设置,包括通过触摸监听器触发的逻辑,以及通过Java和Native代码路径实现的系统级重启命令。
12. **Recovery与MainSystem的交互**:
Recovery作为独立的系统分区,与MainSystem(主系统)有明确的界限。在出厂设置过程中,会卸载外部存储、格式化内部存储,然后通过`recovery`命令重启到Recovery模式。
本文深入剖析了Android系统中OTA升级流程的一部分,特别是涉及Recovery模式的引导和出厂设置恢复,这对于理解Android系统更新机制和进行更深层次的系统调试都至关重要。