一、应用层流程分析
设置模块中恢复出厂设置,不管是否删除SD卡,最终都会执行如下两步:
1、 往/cache/recovery/command文件中写入命令字段
2、 重启系统,进入recovery模式
具体可参考framework/base/core/java/android/os/RecoverySystem.java文件,代码片段如下:
![Android恢复出厂设置流程分析 - 唐敏 - Hello World](http://img6.ph.126.net/SNX6Gk-W6qg2yvz3zrZHbQ==/2531585940552666916.jpg)
在rebootWipeUserData方法中,会调用bootCommand方法,并传入参数--wipe_data命令字段,重启进入recovery模式后,recovery服务会通过读取此参数来擦除data和cache分区,详细流程见下文。
二、恢复模式流程分析
重启后,从recovery模式的init.rc文件中可以看到启动recovery服务,具体可参考bootable/recovery/etc/init.rc文件,代码片段如下:
![Android恢复出厂设置流程分析 - 唐敏 - Hello World](http://img5.ph.126.net/yf7DYemCcJ8wN145YpwGPA==/1119425982395302675.jpg)
ui_init()
说明:初始化ui,recovery模式的交互界面
get_args(&argc, &argv);
说明:读取/cache/recovery/command文件,并根据命令字段进行相应操作,因为恢复出厂设置的时候/cache/recovery/command的内--wipe_data,所以它会擦除data和cache分区,代码片段如下:
![Android恢复出厂设置流程分析 - 唐敏 - Hello World](http://img5.ph.126.net/hvn0IYeBYuhHJUNZlFZMow==/3082432469975424735.jpg)
![Android恢复出厂设置流程分析 - 唐敏 - Hello World](http://img2.ph.126.net/Opi4JBIgCXaJkZswNePl_w==/995014042689194102.jpg)
至此,恢复出厂设置流程完毕。