Android Recovery 代码分析(2)

if (wipe_flags) {          if( wipe_data(wipe_flags) != 0 )          {              status = INSTALL_ERROR;              ui_print("Data wipe failed.\n");              // 不擦除misc中的命令,重启后再次格式化               g_reset_blmsg = false;              g_enable_item_move = false;          }      }  

这部分是擦除数据,就是格式化需求,根据擦除flags记录,分别去擦除需要格式化的分区或者磁盘,如果擦除失败,g_reset_blmsg 这个变量在擦除boot时候作为判别依据,false表示不擦出,这样,misc分区的内容还是recovey,下次重启后,boot引导进入recovery模式 prompt_and_wait()函数里面,关键部分

  for (;;) {         int key = 0;   INFO("wait an key\n");   key = ui_wait_key();   INFO("end wait\n");  

这个函数作用就是一直在等待用户输入是一个不断的循环,可以选择五个条目,包括恢复出厂设置和重启等;maybe_install_firmware_update(send_intent);是给用户一个机会,写入你的intent,做一些谷歌没有做的事这个就是完成升级的最后一个函数,

// Reset the bootloader message to revert to a normal main system boot.        if(g_reset_blmsg)       {       INFO("ready to clear cmd in misc \n");           struct bootloader_message boot;           memset(&boot, 0, sizeof(boot));           set_bootloader_message(&boot);       }  

在这之前是针对intent的一个处理,这里g_reset_blmsg是根据上文提到的清除boot的一个判据,如果需要清除boot,表明下次重启后正���启动,不进入recovery模式 6、reboot处理完boot和misc分区,重启

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwzsgs.html