【问题标题】:AOSP incremental OTA failed to applyAOSP增量OTA申请失败
【发布时间】:2020-11-06 07:30:05
【问题描述】:

我可以成功创建OTA增量包,但尝试申请时失败。 下面的步骤,我已经按照创建OTA增量包。

1. $ Source...
2. $ lunch...
3. $ make -j32
  //Flash the images in the device which are generated inside of "{root}/out/target/product/<device_name>/*.img" directory.
4. $ make target-files-package -j4
  // this will generate the previously changed target file in "{root}/out/target/product/<device_name>/obj/PACKAGING/target_files_intermediates/" directory
          Copy the PREVIOUS-target_files.zip to ${root}
- Apply the changes in the source
5. $ make target-files-package -j4
  // this will generate the previously changed target file in "{root}/out/target/product/<device_name>/obj/PACKAGING/target_files_intermediates/" directory
          Copy the NEW-target_files.zip to ${root}
6. ./build/tools/releasetools/ota_from_target_files -i PREVIOUS-target_files.zip NEW-target_files.zip incremental_ota_update.zip

现在使用 UpdateEngine 从我的 SYSTEM 应用程序应用 incremental_ota_update.zip,我在日志中收到以下错误:

I/update_engine: [1104/150913.184104:INFO:delta_performer.cc(126)] Caching writes.
I/update_engine: [1104/150913.184201:INFO:delta_performer.cc(386)] Applying 5 operations to partition "dtbo"
I/update_engine: [1104/150913.184251:INFO:delta_performer.cc(601)] Starting to apply update payload operations
E/update_engine: [1104/150913.216482:ERROR:delta_performer.cc(990)] The hash of the source data on disk for this operation doesn't match the expected value. This could mean that the delta update payload was targeted for another version, or that the source partition was modified after it was installed, for example, by mounting a filesystem.
E/update_engine: [1104/150913.216674:ERROR:delta_performer.cc(995)] Expected:   sha256|hex = 54BC8E00C1F26A869E08F861678E1083A71B6386E89BD2A68341F08BA0BB7ADD
E/update_engine: [1104/150913.216723:ERROR:delta_performer.cc(998)] Calculated: sha256|hex = 58D0BD75BCF5FC74E68F26D7EEB2D2C3F1845445AF66F8140476DB9F5B7E07CD
E/update_engine: [1104/150913.216773:ERROR:delta_performer.cc(1009)] Operation source (offset:size) in blocks: 12:1
E/update_engine: [1104/150913.216860:ERROR:delta_performer.cc(1191)] ValidateSourceHash(source_hash, operation, source_fd_, error) failed.
E/update_engine: [1104/150913.216957:ERROR:delta_performer.cc(298)] Failed to perform BROTLI_BSDIFF operation 1, which is the operation 1 in partition "dtbo"
E/update_engine: [1104/150913.217010:ERROR:download_action.cc(337)] Error ErrorCode::kDownloadStateInitializationError (20) in DeltaPerformer's Write method when processing the received payload -- Terminating processing

I/update_engine: [1104/150913.270618:INFO:delta_performer.cc(314)] Discarding 162 unused downloaded bytes
I/update_engine: [1104/150913.270816:INFO:multi_range_http_fetcher.cc(172)] Received transfer terminated.
I/update_engine: [1104/150913.270860:INFO:multi_range_http_fetcher.cc(124)] TransferEnded w/ code 200
I/update_engine: [1104/150913.270900:INFO:multi_range_http_fetcher.cc(126)] Terminating.
I/update_engine: [1104/150913.270943:INFO:action_processor.cc(116)] ActionProcessor: finished DownloadAction with code ErrorCode::kDownloadStateInitializationError
I/update_engine: [1104/150913.270986:INFO:action_processor.cc(121)] ActionProcessor: Aborting processing due to failure.
I/update_engine: [1104/150913.271033:INFO:update_attempter_android.cc(431)] Processing Done.
I/update_engine: [1104/150913.271730:INFO:update_attempter_android.cc(450)] Resetting update progress.
D/OTAService: StatusUpdate - status=IDLE/0
D/UpdateManager: onPayloadApplicationComplete invoked, errorCode=20
 D/UpdateManager: setUpdaterState invoked newState=1
D/OTAService: PayloadApplicationCompleted - errorCode=DOWNLOAD_STATE_INITIALIZATION_ERROR/20 FAILURE

从上面的日志:

E/update_engine: [1104/150913.216482:ERROR:delta_performer.cc(990)] The hash of the source data on disk for this operation doesn't match the expected value. This could mean that the delta update payload was targeted for another version, or that the source partition was modified after it was installed, for example, by mounting a filesystem.

任何帮助将不胜感激。

【问题讨论】:

  • 刷机后你在做 adb root / adb remount 吗?
  • @RickSanchez:不,我没有在刷机后进行 adb root / adb remount。

标签: android android-source ota


【解决方案1】:

它应该可以工作,但对你对初始图像所做的事情非常挑剔。

Flashing with fastboot - disable verity = incremental fail,
Disabling verity afterwards = same
Remounting = fail

在某些板 BSP 中,可以创建一些与目标文件不匹配的快速/方便的 flashfile。

解决问题的最佳方法是检查 vbmeta 是否一致。

【讨论】:

    【解决方案2】:
    • 首先为任何更改提供完整的 OTA。
    • 然后为任何更改提供增量 OTA。

    安卓推荐"For the best user experience, offer a full update for every 3–4 incremental updates. This helps users catch up to the latest release and avoid a long install sequence of incremental updates."

    欲了解更多信息:https://source.android.com/devices/tech/ota/tools#incremental-updates

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 1970-01-01
      • 2020-01-25
      • 2020-06-01
      • 1970-01-01
      • 2022-01-03
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多