Skip to content

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.";
  }

上次更新于: