Android9超过2G升级包无法升级问题排查与解决方案

OTA升级常见错误码汇总-优快云博客 设备处于disable-verity状态;ErrorCode::kPayloadMismatchedType (6) 升级包的升级类型不匹配或升级包minor version不兼容。ErrorCode::kPayloadHashMismatchError (10) FILE_HASH值不匹配。ErrorCode::kFilesystemCopierError (4) 未知,暂时未使用的错误码。ErrorCode::kKernelDeviceOpenError (8) 未知,暂时未使用的错误码。 阅读详情

问题描述

Android9系统,当升级包大小超过2G的时候,升级失败。

原因分析

update_engine报错

04-27 11:09:50.511 2293 2293 E update_engine:[0427/110950.511596:ERROR:payload_metadata.cc(74)] Bad payload format -- invalid delta magic.
04-27 11:09:50.511 2293 2293 E update_engine:[0427/110950.511679:ERROR:download_action.cc(337)] Error ErrorCode::kDownloadInvalidMetadataMagicString (21) in DeltaPerformet's Write method when processing the received payload -- Terminating processing

通过日志可以看出update_engine报错错误码kDownloadInvalidMetadataMagicString(21),通过查阅update_engine源码得知,在update_engine中是因为解析出来的payload.bin前面的元数据不是’CrAU’(Android源码定义的就是CrAU)导致;

升级包偏移量

通过参考资料得知:

  • .zip文件的文件格式中,会在生成一定的头部信息,然后内部的文件会按一定规则顺序排列在后面;
  • 压缩包内容中,头部有30个字节是固定的,然后后面就到文件名(可变长度)、拓展区(可变长度),这些加起来就是头部内容的长度。

参考: Android A/B System OTA分析(六)如何获取 payload 的 offset 和 size_packageoffset size_洛奇看世界的博客-优快云博客

metadata数据中的偏移量与升级包实际的偏移量对不上,这个偏移量其实指的是压缩包内文件数据(payload.bin)在文件(升级包)中的偏移量。系统打包的时候会将这个偏移量解析出来写在metadata中,而update_engine会根据metadata文件中定义的这个偏移量提取payload.bin,并判断payload.bin的前4个字节是不是’CrAU’,如果提取出来的payload.bin的前4个字节与’CrAU’不匹配,则证明偏移量错误,导致提取的payload.bin文件不正确;

既然得知这原理,后面主要是看针对一个问题:

一个问题:为什么metadata中的偏移量和实际压缩包的偏移量对应不上? --> metadata的偏移量是如何生成的?

metadata的偏移量是如何生成?

从打包的python脚本ota_from_target_files.py入手,具体的排查过程不赘述。

最终排查到这个偏移量的计算有两处:其中一处是用于解析偏移量,一处是用来做重新计算校验的(因为解析之后经过了一些签名之类的处理,所以重新校验)。这里能校验过,是因为解析和校验用的接口和公式是一致的。

    payload_offset = payload_info.header_offset + len(payload_info.FileHeader()) // 计算
    offset = info.header
OTA升级常见错误码汇总 ErrorCode::kDownloadStateInitializationError (20) 升级包写入时失败 一般都是发生在差分包升级时,检测boot、system、vendor的hash值不匹配。ErrorCode::kPayloadMismatchedType (6) 升级包的升级类型不匹配或升级包minor version不兼容。ErrorCode::kFilesystemCopierError (4) 未知,暂时未使用的错误码。ErrorCode::kSuccess (1) 升级失败。 阅读详情

相关推荐

Android11.0 OTA差分包升级失败kDownloadStateInitializationError

AB_OTA升级模式开启条件下(),进行线刷验证OTA升级。

Framework-coder的博客 4451

RK3399 android7.1 wifi无法打开问题排查

   RK3399的CPU采用big.LITTLE大小核架构,双Cortex-A72大核+四Cortex-A53小核结构,对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个方面都具革命性提升。 RK3399的GPU采用四核ARM新一代高端图像处理器Mali-T860,集成更多带宽压缩技术:如智能迭加、ASTC、本地像素存储等,还支持更多的图形和计算接口,总体性能比上一代提升45%。 ...

szhebin的博客 3658

中国移动H10G-13融合网关刷机避坑指南:晶晨S905L3芯片安卓9固件实测

本文详细介绍了中国移动H10G-13融合网关刷机全流程,重点解析晶晨S905L3芯片的安卓9线刷固件包操作要点。从设备识别、工具准备到刷机避坑指南,提供完整的网络配置和系统优化方案,帮助用户解锁设备性能并提升使用体验。

ik678901的博客 1008

H10G-13融合网关刷安卓9教程:S905L3芯片变身电视盒子

电视盒子刷机是挖掘老旧运营商设备剩余价值的常用手段,而晶晨芯片凭借成熟的刷机生态,成为众多玩家首选。S905L3作为运营商定制机顶盒中的常见四核芯片,虽然性能不算旗舰,但配合精简的安卓9固件,足以流畅运行4K流媒体、Kodi等主流应用。刷机不仅能去除运营商预装应用与限制,还能提升系统响应速度,让原本卡顿的融合网关焕然一新。本文以中国移动H10G-13融合网关为实例,分享从硬件识别、固件选择到USB Burning Tool烧录的完整流程,重点剖析融合网关刷机时的特殊风险,以及短接进烧录模式、卡进度条、WiF

weixin_34218579的博客 446

android9系统WIFI提示已连接,无法访问互联网

android9系统WIFI提示已连接,无法访问互联网(图标为问号) 系统其实已可正常访问网络了,但只是图标提示不对 修改系统源码文件frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java 将文件中常量DEFAULT_HTTPS_URL和DEFAULT_HTTP_URL对应的URL换成可访问的(注意:链接是需要返回http 204返回码的) 204可用地址 http:.

Alex的博客 3311

海信IP501H_GK6323V100C刷机全攻略:从4.4.2卡刷救砖到9.0免拆升级

本文提供了海信IP501H机顶盒基于GK6323V100C芯片的详细刷机指南。核心内容包括安卓4.4.2卡刷救砖与安卓9.0免拆升级两种方法,从固件准备、U盘制作、短接操作到ADB调试升级,手把手教你安全完成刷机,让老旧设备重获新生,流畅运行新系统。

weixin_28278377的博客 757

烽火HG680-KB盒子刷安卓9.0避坑指南:海思Hi3798MV310芯片升级全流程解析

本文详细解析了烽火HG680-KB电视盒子基于海思Hi3798MV310芯片升级至安卓9.0的全流程与核心避坑要点。重点阐述了使用海兔烧录工具进行线刷的关键步骤,并深度剖析了备份与修改三码信息(如MAC地址)以防止设备变砖的核心操作,为老旧设备焕新提供了一份完整的实战指南。

weixin_29248611的博客 1680

海信IP810N免拆卡刷全攻略:海思MV320芯片安卓9固件升级指南

本文提供了海信IP810N电视盒子的免拆卡刷详细教程。针对搭载海思MV320芯片的安卓9版本设备,通过开启隐藏ADB、替换Recovery等步骤,利用U盘即可安全刷入纯净版固件,有效解决系统卡顿、广告过多等问题,让旧设备重获流畅体验。

weixin_29300931的博客 2253

红米Note9 4G版ROM定制指南:从MIUI14到澎湃OS安卓15的线刷实战

本文详细介绍了红米Note9 4G版从MIUI14升级到澎湃OS安卓15的线刷实战指南,包括刷机前的准备工作、原生安卓13线刷实战、MIUI14深度定制方案以及澎湃OS安卓14/15的适配解析。文章还提供了常见问题的排错指南,帮助用户顺利完成ROM定制,提升设备性能和使用体验。

fern8的博客 818

中国移动H10G-13融合网关刷机攻略:晶晨S905L3芯片刷安卓9完整教程

融合网关是运营商将光猫、路由器和机顶盒集成于一体的设备,常见于家庭宽带与IPTV场景。其核心主控多采用晶晨S905L3系列芯片,基于Cortex-A53架构,支持4K硬解与安卓系统扩展。由于运营商定制系统存在权限限制、后台占用高及界面封闭等问题,刷入通用安卓固件成为释放硬件价值的常见技术路径。刷机本质涉及引导模式切换、USB Burning Tool线刷、驱动兼容性处理及短接进入maskrom等原理,技术门槛集中在固件匹配与底层擦写参数配置。在工程实践中,掌握芯片型号识别、驱动签名禁用、双公头USB线选择等

weixin_34417183的博客 407

中国移动H10G-13网关刷机避坑指南:晶晨S905L3芯片线刷安卓9全流程解析

本文详细解析了中国移动H10G-13网关搭载晶晨S905L3芯片的刷机全流程,包括设备识别、线刷安卓9系统、网络功能配置及系统优化。提供实用工具清单、刷机步骤详解和常见问题解决方案,帮助技术爱好者避开常见陷阱,充分发挥设备潜力。

emacs5lisp的博客 738

创维酷开G6系列9R51机芯刷机指南:U盘升级包与版本匹配详解

在智能电视系统维护中,固件升级是解决系统崩溃、卡顿和功能异常的基础手段,其背后依赖的是机芯方案与升级包分区写入的精确匹配。以创维酷开G6系列搭载的9R51机芯为例,刷机并非简单安装应用,而是通过bootloader引导层对system、recovery等分区进行整包写入,因此U盘格式、文件根目录位置以及版本号校验逻辑都直接影响成功率。理解升级包的哈希索引文件、版本段位约束与双入口(本地升级/媒体播放器)机制,能有效规避“校验失败”或“卡Logo”困境。本文从工程实践角度,梳理从版本识别、U盘准备到强制升级的

weixin_29161785的博客 107

Android A/B分区OTA系统升级应用层调用UpdateEngine Apk源码

最近在搞 Android A/B 分区 OTA 升级,开始以为挺简单的一个事,没想到折腾了几天,还好终于搞定!代码调用其实就那么点,但是参数以及权限之类很关键,搬砖过来走不通,我就是卡了2天,一些莫名的错误,没法定位。后面各种查资料,结合系统代码,写了一个解析类 只需传入update.zip包,解析后升级,爽的一批。需要注意的坑在代码里也备注了,有需要的码友要注意下,特别是如果卡住了找不到原因所在的情况。参考博文: https://blog.youkuaiyun.com/daokedream/article/details/113433587

【AI Agent 实战】OpenClaw 全面解析 + 全平台一键部署教程(本地 AI 智能体)

本文收录于 AI 智能体 & 自动化实战系列,手把手带你从零部署本地可控的 AI 执行助手关键词:OpenClaw、AI Agent、本地 AI 部署、自动化助手、Docker 部署

爱人爱己,风生水起 7912

工程经验分享:PCIE(1)

本文介绍AXI Bridge For Pcie Express Gen3 Subsystem 的使用方法。这个IP兼具简单与实用性,将PCIE协议层实现于内部,仅留出AXI接口供开发者使用。开发者不需要处理复杂的PCIE协议数据,只需要对AXI总线有所了解即可,十分符合Xilinx一贯的开发风格。本文无关PCIE协议本身,仅分享实用性的工程经验,以PCIE IP为核心,一步一步搭建一个简单的子系统,以此说明用法。文中所有内容均已通过项目检验。

weixin_42415266的博客 3843

IsaacLab 从入门到精通(一) 环境配置和依赖安装

本系列文章将针对机器人操作任务中的强化学习平台IsaacLab提供较为全面的教程

DejaWu33的博客 1万+

利用Docker Compose简化openGauss多节点容器化部署

本文详细介绍了如何利用Docker Compose简化openGauss多节点容器化部署,从环境准备到配置文件编写,再到集群部署与验证,提供了一套完整的解决方案。通过Docker Compose,原本复杂的手动部署流程被大幅简化,显著提升了部署效率和可靠性,特别适合企业级开源数据库的高可用架构需求。

weixin_30338481的博客 60

基于单片机的智能温控风扇设计

该智能温控风扇系统的设计目标是根据环境温度自动控制风扇的转速或开关状态,确保用户始终处于舒适的温度范围内。实时温度监测:通过温度传感器(如DS18B20或DHT22)实时监控环境温度。风扇控制:根据温度变化自动调节风扇的转速,温度过高时风扇加速,温度适中时风扇转速降低,达到节能与舒适平衡。LCD显示:通过LCD屏幕实时显示温度信息。无线通信:通过Wi-Fi或蓝牙模块将温度数据发送至手机或云平台,支持远程控制风扇的开关或调节转速。报警功能:温度过高或过低时,蜂鸣器发出警报,提示用户注意。

2201_76125393的博客 1159

低功耗设计-Power Switch

power gating与power switch cell

m0_61544122的博客 1万+

12、有杆泵抽油系统:原理、性能与选择

本文全面介绍了有杆泵抽油系统的原理、性能分析和设备选择方法。有杆泵抽油系统广泛应用于石油开采领域,通过地面抽油装置与井下柱塞泵的配合,实现高效、稳定的原油提升。文章详细解析了系统的工作原理、组成结构、光杆运动特性、载荷计算、泵输送能力及功率需求,并提供了抽油装置的选择流程和实际案例分析。此外,还探讨了泵的容积效率影响因素、示功图的作用及系统优化运行的建议,为石油开采工程提供了理论支持和实践指导。

gan8painter的博客 434

组态王的日历时间控件脚本

日期时间控件中的脚本中在小于10的月份和天数前必须要加上0,这是由首字符对比机制规定的,首字母相同,就不再不做对比了,比如1和11,是一样的。首字母不同,再比较下一位。 float Ayear1; float Amonth1; float Aday1; string temp1; Ayear1=sd.Year; Amonth1=sd.Month; Aday1=sd.Day; temp1=StrFromInt( Ayear1, 10 ); if(Amonth1<10) temp1=temp1+"-0"+

逍遥子的博客 5718

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 进程CPU占用率过高排查流程笔记
下一篇: 【Android系统启动】 Android14启动流程概览
LokiCode
博客等级 码龄3年 839粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LokiCode

谢谢您买的奶茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值