Android 11 系统OTA升级到旧版本(去除升级时间戳校验)
由于客户要求能够通过OTA升级到旧版本因此探寻反向升级的方法。
方法一:进入recover模式
adb reboot recovery
点击Apply update from SD card
然后选择以前的OTA升级包就可以了。这种方式实测可以升级到旧的版本。但是我们的客户是通过在线升级软件进行更新,这种方式并不适用。
方法二:编译系统的时候去除时间戳校验
build/make/tools/releasetools/ota_from_target_files.py
python
@@ -744,7 +744,7 @@ def WriteFullOTAPackage(input_zip, output_file):
- script.AssertOlderBuild(ts, ts_text)
+ #script.AssertOlderBuild(ts, ts_text)
修改这个文件就可以了
如果还想知道比较时间戳的地方可以看下面这个位置: system/update_engine/payload_consumer/delta_performer.cc
python
@@ -1768,7 +1768,7 @@ ErrorCode DeltaPerformer::ValidateManifest() {
}
}
if (manifest_.max_timestamp() < hardware_->GetBuildTimestamp()) {
LOG(ERROR) << "The current OS build timestamp ("
<< hardware_->GetBuildTimestamp()
<< ") is newer than the maximum timestamp in the manifest ("
<< manifest_.max_timestamp() << ")";
if (!hardware_->AllowDowngrade()) {
return ErrorCode::kPayloadTimestampError;
}
LOG(INFO) << "The current OS build allows downgrade, continuing to apply"
" the payload with an older timestamp.";
}