我們都知道要產生Incremental OTA的方法可以透過下列指令:
$./build/tools/releasetools/ota_from_target_files -v --block -p out/host/linux-x86 -k YOUR_KEY -i target_files-old.zip target_files-new.zip update.zip
|
其中
-k YOUR_KEY指的是你的KEY路徑,通常是vendor/company/security/releasekey
-i target_files-old.zip是上一次build的target file,產生在./out/target/product/device/obj/PACKAGING/target_files_intermediates下;target_files-new.zip則是這次build的,路徑也是在一樣的地方;update.zip則是要產生的差分包。
紅色的部分是依你的project不同則有不同的名稱。
當很理所當然地產生出來後,卻發現升級都會出現ErrorCode::kDownloadStateInitializationError,整體的錯誤內容如下:
08-04 17:45:16.799 ERROR:fec_file_descriptor.cc(30)] No ECC data in the passed file 08-04 17:45:16.800 ERROR:delta_performer.cc(430)] Unable to open ECC source partition boot on slot A, file /dev/block/by-name/boot_a: Invalid argument (22) 08-04 17:45:16.800 ERROR:delta_performer.cc(1135)] 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. 08-04 17:45:16.800 ERROR:delta_performer.cc(1140)] Expected: sha256|hex = 6534AC84D075B5CDA8CDB45CB3B169C86CCB376853EC4E28AA1242B89A440B6A 08-04 17:45:16.800 ERROR:delta_performer.cc(1143)] Calculated: sha256|hex = 464588BD71E535D8E424CF692EF13A574097D673ACB896538FAB5B42E6CD0C5F 08-04 17:45:16.800 ERROR:delta_performer.cc(1154)] Operation source (offset:size) in blocks: 0:2194 08-04 17:45:16.800 ERROR:delta_performer.cc(1435)] source_fd != nullptr failed. 08-04 17:45:16.800 ERROR:delta_performer.cc(296)] Failed to perform BROTLI_BSDIFF operation 0, which is the operation 0 in partition "boot" 08-04 17:45:16.801 ERROR:download_action.cc(336)] Error ErrorCode::kDownloadStateInitializationError (20) in DeltaPerformer's Write method when processing the received payload -- Terminating processing 08-04 17:45:16.802 INFO:delta_performer.cc(313)] Discarding 122 unused downloaded bytes 08-04 17:45:16.802 INFO:multi_range_http_fetcher.cc(177)] Received transfer terminated. 08-04 17:45:16.803 INFO:multi_range_http_fetcher.cc(129)] TransferEnded w/ code 200 08-04 17:45:16.803 INFO:multi_range_http_fetcher.cc(131)] Terminating. 08-04 17:45:16.806 INFO:action_processor.cc(116)] ActionProcessor: finished DownloadAction with code ErrorCode::kDownloadStateInitializationError 08-04 17:45:16.806 INFO:action_processor.cc(121)] ActionProcessor: Aborting processing due to failure. 08-04 17:45:16.806 INFO:update_attempter_android.cc(469)] Processing Done.
這是因為make otapackage時會將out下用給tool燒入的system.img重新打包一次,導致燒錄的和使用OTA的system.img的Hash值不一致。整包升級(Full OTA)會替換system.img,而差分包升級(Increment OTA)則需要保證系統內部的system.img和整包中system.img一致才能升級成功。
因此就要先用Full OTA刷過一次,才可以以這版的target-file為base製作新的Increment OTA
而當你出現的是ErrorCode::kDownloadMetadataSignatureMismatch就代表你用錯加密的key了,只要修正-k參數的KEY路徑指向對的就能解決,整體的錯誤內容如下:
08-02 13:52:23.192 ERROR:payload_verifier.cc(84)] None of the 1 signatures is correct. Expected hash before padding: 08-02 13:52:23.192 INFO:utils.cc(439)] Logging array of length: 32 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000000 : 93 ce 57 06 9e 7e 2e 86 70 c6 52 40 55 e0 ef 2a 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000010 : b4 c4 c9 7c cc 71 65 24 14 8f 8c 57 23 db f5 ae 08-02 13:52:23.192 ERROR:payload_verifier.cc(87)] But found decrypted hashes: 08-02 13:52:23.192 INFO:utils.cc(439)] Logging array of length: 256 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000000 : cb 99 ca ee 49 83 fe 71 95 3a 71 44 68 86 4e 77 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000010 : 82 3c fa b6 40 21 34 c3 48 06 20 c6 b1 0e 67 1d 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000020 : b4 1f 8b 60 bd 24 9d 9c 97 94 6d 85 e3 31 5a 36 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000030 : 4c 02 14 47 ce b3 8e 89 3d d0 15 89 21 86 21 74 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000040 : ef 73 75 b3 aa 1c b2 a0 6a 9b b6 6f 13 be fe 6b 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000050 : 67 7a 7b c6 ab 18 e6 8e 3d e1 e6 6e 5d ed 41 5a 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000060 : 5e 2f f8 91 46 f8 b9 ca 9d e0 d4 b9 af a8 e2 ab 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000070 : f0 ba f1 0a 75 75 8f 77 9d 29 4d 27 fc be 98 30 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000080 : 70 f2 29 35 ec c6 44 a1 85 81 b9 b2 fb fe 76 fa 08-02 13:52:23.192 INFO:utils.cc(456)] 0x00000090 : 64 b3 dc 1f e0 15 4e 1d ae 6e 52 43 a3 f6 e6 8c 08-02 13:52:23.192 INFO:utils.cc(456)] 0x000000a0 : b9 8c 78 1c c1 df 48 20 01 9e 82 3d 6a e1 30 79 08-02 13:52:23.192 INFO:utils.cc(456)] 0x000000b0 : 4b 42 dc f4 b2 38 1d b9 6a ad ff 83 0c 52 89 80 08-02 13:52:23.192 INFO:utils.cc(456)] 0x000000c0 : fd db 24 74 74 b8 92 f8 7d 92 8b 48 be d2 cb fd 08-02 13:52:23.192 INFO:utils.cc(456)] 0x000000d0 : bc f7 2f a5 71 cb 6b f3 b9 24 cc a3 c7 32 9f 2b 08-02 13:52:23.192 INFO:utils.cc(456)] 0x000000e0 : de 41 3d 1d d7 5a d2 d2 3c 9f 49 bf 55 68 72 bb 08-02 13:52:23.192 INFO:utils.cc(456)] 0x000000f0 : 78 81 07 de 7b ed 2d af fc 74 39 45 89 94 82 db 08-02 13:52:23.192 ERROR:payload_metadata.cc(230)] Manifest hash verification failed. 08-02 13:52:23.192 ERROR:delta_performer.cc(544)] Mandatory metadata signature validation failed 08-02 13:52:23.193 ERROR:download_action.cc(336)] Error ErrorCode::kDownloadMetadataSignatureMismatch (26) in DeltaPerformer's Write method when processing the received payload -- Terminating processing 08-02 13:52:23.193 INFO:delta_performer.cc(313)] Discarding 96843 unused downloaded bytes 08-02 13:52:23.193 INFO:multi_range_http_fetcher.cc(177)] Received transfer terminated. 08-02 13:52:23.193 INFO:multi_range_http_fetcher.cc(129)] TransferEnded w/ code 200 08-02 13:52:23.193 INFO:multi_range_http_fetcher.cc(131)] Terminating. 08-02 13:52:23.193 INFO:action_processor.cc(116)] ActionProcessor: finished DownloadAction with code ErrorCode::kDownloadMetadataSignatureMismatch 08-02 13:52:23.193 INFO:action_processor.cc(121)] ActionProcessor: Aborting processing due to failure. 08-02 13:52:23.193 INFO:update_attempter_android.cc(469)] Processing Done.
官方連結:https://source.android.com/devices/tech/ota/tools#incremental-updates
Place your comment