android - AOSP 增量 OTA 签名验证失败

标签 android android-source auto-update firmware ota

我正在尝试为基于 Android 7.0 Nougat 的自定义 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 incremental_ota_update.zip # 从旧版本开始增量

我在设备上安装了第一个固件版本并尝试使用 incremental_ota_update.zip 更新它,步骤如下:

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

  2. 手动将 incremental_ota_update.zip 复制到/cache 文件夹中

  3. 从我的系统应用程序运行以下命令,这是一个启动器应用程序:RecoverySystem.installPackage(context, new File("/cache/incremental_ota_update.zip"));

设备自行重启,到达恢复菜单时有两个选项:重启设备和使用引导加载程序重启,我点击了“重启设备”选项。 它重新启动但未进行任何更改,未安装增量更新。

我检查了日志文件,它说:

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 并将其放入 incremental_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

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

最佳答案

我们想就此问题向您通报最新情况。我们发现了问题。与所有 OTA 更新一样,您需要检查您是否使用与设备上的恢复应用程序相同的工具提供商创建 OTA 更新 zip。

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

如您所料,您不必重命名文件或移动 OTA 更新 zip 中的文件。所有需要的文件都应该以正确的格式和正确的名称存在。

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

这对您有何用处?

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

在我们的案例中,供应商是 Mediatek。

这里有一点帮助:

完整 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) $@

此时,任何其他技术细节只会让您感到困惑。吸气,呼气并在代码中寻找错误。这就是您的方式……狩猎愉快。

关于android - AOSP 增量 OTA 签名验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57058024/

相关文章:

android 将颜色应用于 alpha 动画

android - 添加隐式广播异常?

c++ - 如何在没有管理权限的情况下为我的应用程序实现自动更新

Android 创建一个 "flat button"

android - 多个 dex 文件定义 Landroid/support/v4/

android - 在 AOSP 中链接第 3 方静态库时需要帮助

sql-server - 根据条件将数据从表 1 归档到表 2 | SQL Server 2017 Express

asp.net-mvc - 自动更新网络应用

android - 旋转后移动图像在 android 中的行为不正确

android - 如何使用 mm 命令在 AOSP 中构建的 lib*.so