1.前言
之前Android9的时候公司自己写了一个简单的OTA在线升级,调用Recovery升级系统。后来Android12的时候想使用AB升级,发现我这套代码AB升级完成了之后,重启却无法切到B,所以造成升级一直是失败的。后来想着要不还是把AB关掉直接用Recovery升级。
这时候才发现调用Recovery的时候user版本却报No Command。
一直百思不得其解。后来查了一下发现很多人也有这个问题。但是有解决方案的都是需要会员才能看的,然后自己看了一下Recovery发现其实就只需要修改几句代码就可以让Recovery显示出来。
2.修改
其实本意就是把Recovery检测user版本的位置给他拿掉。
diff --git a/bootable/recovery/recovery.cpp b/bootable/recovery/recovery.cpp
old mode 100644
new mode 100755
index 07b14c8..ad31342
--- a/bootable/recovery/recovery.cpp
+++ b/bootable/recovery/recovery.cpp
@@ -842,11 +842,11 @@ Device::BuiltinAction start_recovery(Device* device, const std::vector<std::stri
// If this is an eng or userdebug build, automatically turn on the text display if no command
// is specified. Note that this should be called before setting the background to avoid
// flickering the background image.
- if (IsRoDebuggable()) {
+ //if (IsRoDebuggable()) {
ui->ShowText(true);
- }
+ //}
status = INSTALL_NONE; // No command specified
- ui->SetBackground(RecoveryUI::NO_COMMAND);
+ //ui->SetBackground(RecoveryUI::NO_COMMAND);
}
修改过后就可以正常看到recovery菜单了,并且升级正常。