我正在尝试为基于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 internal_ota_update.zip
我在设备上安装了第一个固件版本,并尝试通过这些步骤使用cremental_ota_update.zip对其进行更新:
在/ cache / recovery文件夹中创建了“命令”文件,其中包含以下文本:--update_package = / cache / Update.zip
手动复制/ cache文件夹内的incremental_ota_update.zip
从我的系统应用程序(即启动器应用程序)中运行以下命令: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并将其放入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
我不知道我在做什么错,如果有人可以帮助我,我将不胜感激!
最佳答案
我们想向您更新此问题。我们发现了问题。与所有OTA更新一样,您需要检查是否使用与设备上的还原应用程序相同的工具提供程序来创建OTA Update 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) $@
在这一点上,任何其他技术细节都只会使您感到困惑。深吸一口气,在代码中搜索您的错误。那是您的方式...快乐狩猎。
关于android - AOSP增量OTA签名验证失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57058024/