背景

  • Platform: RK3399
  • OS: Android7.1.2
  • Kernel: v4.4.103

产品偶发会进recovery模式,比如升级失败等,进recovery模式后,需要根据提示人为进行操作,但该产品应用场景无人值守,且维护比较麻烦(你懂的那种地方~),所以需要进recovery模式后需要自动重启。

修改

  1. 修改等待用户选择的超时时间10s:
    bootable/recovery/ui.cpp
        //zdd fix,20200915
        //#define UI_WAIT_KEY_TIMEOUT_SEC    120
        #define UI_WAIT_KEY_TIMEOUT_SEC    10
        ```  
    2. 将`get_menu_selection`代码中等待选项超时后,默认选择项改为0,直接返回
    `bootable/recovery/recovery.cpp`
        ```cpp
            if (key == -1) {   // ui_wait_key() timed out
                if (ui->WasTextEverVisible()) {
                    //zdd fix,20200915
                    //continue;
                    return 0;	
                } else {
                    LOGI("timed out waiting for key input; rebooting.\n");
                    ui->EndMenu();
                    return 0; // XXX fixme
                }
            }
    continue; 改为return 0;

根据以上代码,原生android在有菜单选项时android默认等待用户继续输入continue,等待输入超时后return 0,重启,无菜单选项时默认返回的也是重启

参考

https://blog.csdn.net/servermanage/article/details/102229099