AOSP增量OTA签名验证失败

时间:2019-07-16 13:08:45

标签: android android-source auto-update firmware ota

我正在尝试为基于Android 7.0牛轧糖的自定义Android ROM实现增量OTA更新过程。我已经成功构建了固件的第一个和第二个(修改后的)版本,所以我有了第一个和第二个target_files.zip。

我已经按照官方指南(https://source.android.com/devices/tech/ota/tools)创建了增量OTA zip,更确切地说,使用以下命令:     ./build/tools/releasetools/ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output / tardis-target_files.zip递增的_ota_update.zip#从旧版本开始递增

我在设备上安装了第一个固件版本,并尝试通过以下步骤使用增量文件_ota_update.zip对其进行更新:

  1. 在/ cache / recovery文件夹中创建了包含以下文本的“命令”文件:--update_package = / cache / Update.zip

  2. 手动将增量文件_ota_update.zip复制到/ cache文件夹中

  3. 从我的系统应用程序(即启动器应用程序)中运行以下命令:RecoverySystem.installPackage(context,new File(“ / cache / incremental_ota_update.zip”));

设备将自行重启,并通过以下两个选项进入恢复菜单:重启设备和使用bootloader重启,我点击了“重启设备”选项。 它会重新启动,但不会进行任何更改,未安装增量更新。

我检查了日志文件,上面写着:

Opening update package...
I:read key e=3 hash=20
I:1 key(s) loaded from /res/keys
Verifying update package...
I:comment is 1738 bytes; signature 1720 bytes from end
I:signature (offset: 0x3cfdfe, length: 1714): 308206ae06092a864886f70d010702a082069f3082069b020101310b300906052...[    2.849059] I:whole-file signature verified against RSA key 0
Update package verification took 0.1 s (result 0).
Error: Invalid OTA package, missing scatter
E:install package error, result = 1
Update.zip is not correct
Installation aborted.
nand type is emmc

此后,我从第二个target_files.zip中复制了ota_scatter.txt并将其放入cremental_ota_update.zip中,然后重试了更新过程,现在出现以下错误:

Opening update package...
I:read key e=3 hash=20
I:1 key(s) loaded from /res/keys
Verifying update package...
E:footer is wrong
Update package verification took 0.0 s (result 1).
E:signature verification failed
E:install package error, result = 7
Signature verification failed
Installation aborted.
nand type is emmc

我不知道我在做什么错,如果有人可以帮助我,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

我们想向您更新此问题。我们发现了问题。与所有OTA更新一样,您需要检查是否使用与设备上的还原应用程序相同的工具提供程序来创建OTA更新zip。

我们的分散错误是由于名称不匹配所致。还原应用程序脚本正在寻找scatter.txt。重命名文件后出现了其他问题。

您可能会猜到,您不必重命名文件或在OTA更新zip中移动它们。所有需要的文件都应该以正确的格式和正确的名称存在。

简而言之,我们找到了创建OTA拉链的正确工具和正确的命令。

这对您有什么用?

  • 在固件的源文件夹中搜索错误
  • 分析结果并打开相关文件
  • 了解什么工具正在还原您的OTA更新
  • 确保您使用与OTA创建脚本相同的供应商来创建OTA

在我们的情况下,卖方是联发科。

以下是有用的内容:

完整OTA

    ./build/tools/releasetools/ota_from_target_files -v \
    $(if $(filter true,$(TARGET_USERIMAGES_USE_UBIFS)),-g,--block) \
    -p $(HOST_OUT) \
    -k $(KEY_CERT_PAIR) \
    -s ./device/mediatek/build/releasetools/mt_ota_from_target_files \
    $(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
    $(BUILT_TARGET_FILES_PACKAGE) $@

增量OTA

    ./build/tools/releasetools/ota_from_target_files -v \
    $(if $(filter true,$(TARGET_USERIMAGES_USE_UBIFS)),-g,--block) \
    -p $(HOST_OUT) \
    -k $(KEY_CERT_PAIR) \
    -s ./device/mediatek/build/releasetools/mt_ota_from_target_files \
    $(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
    -i \
    $(BUILT_TARGET_FILES_PACKAGE) $@

任何其他技术细节都只会使您感到困惑。深吸一口气,在代码中搜索您的错误。那是您的方式...狩猎愉快。