【问题标题】:AOSP How to verify OTA updates by their metadataAOSP 如何通过元数据验证 OTA 更新
【发布时间】:2020-07-07 22:19:08
【问题描述】:

我正在为我的自定义 Android 10 构建构建一个 OTA 更新,如下所示:

./build/make/tools/releasetools/ota_from_target_files \
  --output_metadata_path metadata.txt \
  target-files.zip \
  ota.zip

根据 update_engine_client 的 android 文档,可以通过提取 payload.bin 和 payload_properties.txt 来应用生成的 ota.zip。

update_engine_client --payload=file:///<wherever>/paypload.bin \
   --update \
   --headers=<Contents of payload_properties.txt>

这一切正常,因此我很确定从这个结果中我已经正确创建了 OTA,但是,我希望能够下载元数据并验证是否可以在客户端下载之前应用有效负载整个有效载荷。

查看 update_engine_client --help 选项,似乎可以按如下方式验证元数据:

update_engine_client --verify --metadata=<path to metadata.txt from above>

这是我未能达到预期结果的地方。我收到一条错误消息,提示它无法解析有效负载标头。 kDownloadInvalidMetadataMagicString 失败了,当我读取源代码时,它似乎是元数据的前 4 个字节。显然我创建的 metadata.txt 不适合验证工具。

所以我希望有人能指出正确的方向,以正确生成元数据或告诉我如何正确使用该工具。

【问题讨论】:

  • 0911/160344.475208:INFO:delta_performer.cc(208)] 已完成 0/?操作,已下载 16264/927311316 字节 (0%),总体进度 0% [0911/160344.475270:ERROR:payload_metadata.cc(74)] 有效负载格式错误 - 增量魔法无效。 [0911/160344.475295:ERROR:download_action.cc(336)] DeltaPerformer 的 Write 方法在处理接收到的有效负载时出现错误 ErrorCode::kDownloadInvalidMetadataMagicString (21) -- 终止处理 [0911/160344.475329:INFO:delta_performer.cc(313)] 丢弃24 个未使用的下载字节

标签: updates android-source ota


【解决方案1】:

原来 ota 工具生成的元数据是人类可读的格式。 verify 方法需要一个二进制文件。该文件不是作为唯一文件的 zip 内容的一部分。相反,它被添加到 payload.bin。所以payload.bin的第一个字节其实就是payload_metadata.bin,这些字节会通过update_engine_client的verify方法正确判断payload是否适用。

我在 makefile 中提取 payload_metadata.bin 如下:

$(DEST)/%.meta: $(DEST)/%.zip
    unzip $< -d /tmp META-INF/com/android/metadata 
    python -c 'import re; meta=open("/tmp/META-INF/com/android/metadata").read(); \
              m=re.match(".*payload_metadata.bin:([0-9]*):([0-9]*)", meta); \
              s=int(m.groups()[0]); l=int(m.groups()[1]); \
              z=open("$<","rb").read(); \
              open("$@","wb").write(z[s:s+l])'
    rm -rf /tmp/META-INF

【讨论】:

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