AB_OTA升级模式开启条件下(MTK_AB_OTA_UPDATER=y),进行线刷验证OTA升级。
1.制作差分包相关参数说明
-b 过时的。
-k 签名所使用的密钥
-i 生成增量OTA包时使用此选项。后面我们会用到这个选项来生成OTA增量包。
-w 是否清除userdata分区
-n 在升级时是否不检查时间戳,缺省要检查,即缺省情况下只能基于旧版本升级。
-e 是否有额外运行的脚本
-p 定义脚本用到的一些可执行文件的路径。
-s 定义额外运行脚本的路径。
-x 定义额外运行的脚本可能用的键值对。
-v 执行过程中打印出执行的命令。
-h 命令帮助
-m 执行过程中生成脚本(updater-script)所需要的格式,目前有两种即amend和edify。对应上两种版本升级时会采用不同的解释器。缺省会同时生成两种格式的脚本。
2.制作差分包
使用命令制作差分包
./build/tools/releasetools/ota_from_target_files -v -p out/host/linux-x86/ -i ota/v1.zip ota/v2.zip ota/update.zip
差分包原包:
out/target/product/{project}/obj/PACKAGING/target_files_intermediates/{project}-target_files-mp5V4129.zip
整包:
out/target/product/{project}/{project}-ota-mp5V4129.zip
3.跳过Recovery菜单选择界面,直接进入线刷模式
- 源码:bootable/recovery/recovery.cpp
+int update_complete = 0;
static Device::BuiltinAction PromptAndWait(Device* device, InstallResult status) {
auto ui = device->GetUI();
bool update_in_progress = (device->GetReason().value_or("") == "update_in_progress");
@@ -395,19 +396,24 @@ static Device::BuiltinAction PromptAndWait(Device* device, InstallResult status)
" Your device may fail to boot if you reboot or power off now." };
}
- size_t chosen_item = ui->ShowMenu(
- headers, device->GetMenuItems(), 0, false,
- std::bind(&Device::HandleMenuKey, device, std::placeholders::_1, std::placeholders::_2));
- // Handle Interrupt key
- if (chosen_item == static_cast<size_t>(RecoveryUI::KeyError::INTERRUPTED)) {
- return Device::KEY_INTERRUPTED;
- }
- // Device-specific code may take some action here. It may return one of the core actions
- // handled in the switch statement below.
- Device::BuiltinAction chosen_action =
- (chosen_item == static_cast<size_t>(RecoveryUI::KeyError::TIMED_OUT))
- ? Device::REBOOT
- : device->InvokeMenuItem(chosen_item);
+ Device::BuiltinAction chosen_action = Device::NO_ACTION;
+ if (update_complete &g

文章详细介绍了在AB_OTA升级模式下,如何制作差分包并进行线刷验证升级的过程。在跳过Recovery菜单选择界面直接进入线刷模式时,修改了源码以实现自动选择。在升级过程中遇到kDownloadStateInitializationError错误,分析原因是lk分区的Hash值不匹配,解决方案是替换相应.img文件。最后列举了各种OTA升级失败的错误码及其含义。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



