Android9.0 vendor分区整包升级

android AVB2.0(六)Super动态分区介绍 文章目录一、Super分区是什么?二、Super分区工作原理三、Super分区的配置和编译1.分区表的配置2. Super镜像的编译2.1 Super镜像的编译日志2.2 Super镜像的生成过程四、Super分区在AVB中的校验 一、Super分区是什么? Super分区,也叫dynamic动态分区,动态分区是 Android 的用户空间分区系统,在Android R版本开始引入。 android引入了super动态分区的设计,目的是为了解决像system,vendor等分区size大小不能动态调整的问题 阅读详情

1、涉及文件

2、流程解析

3、问题探讨

 

1、涉及文件

./build/make/core/Makefile  

ota脚本 ./build/toos/releasetools/  

9.0FOTA包  

9.0源码

2、流程解析

本次问题是一家方案公司的编译环境有问题,经常出现升级报错vendor不匹配的问题,大致看了下升级脚本 修改为整包升级或者不升级两种情况,

首先我们要明白,最开始只有system分区查分,后续出现了vnedor,oem等等,所以原生的脚本里其他分区全部 都是仿照system加进去的,

以下是差分的主入口,调用commpy的blockDifference处理,这里的vendor_diff是关键参数,后续所有的判断 都以该参数为准

所以第一种不升级vendor的情况就是直接修改venor_diff = None,这样所有vendor相关的操作都会去掉

第二种情况,整包升级vendor

第一步,对于这个问题,并没有直接想按流程研究代码的意思,而是想更为简单的直接照搬T卡包里的vendor升级的方法    

vendor_tgt = GetImage("vendor", OPTIONS.input_tmp)    

vendor_tgt.ResetFileMap()    

vendor_diff = common.BlockDifference("vendor", vendor_tgt)    

vendor_diff.WriteScript(script, output_zip)

报了一堆错误,可以看出是调用的BlockDifference方法出现问题

第四步,引入第二个猜想

既然我们使用了整包中的方法不能实现,那么如果我们直接用FOTA包编译整包呢,发现跟差分报相同的错误,

查看makefile中make otapackage过程中编译full包的方法       

./build/tools/releasetools/ota_from_target_files -v \      

  --block \       

--extracted_input_target_files $(patsubst %.zip,%,$(BUILT_TARGET_FILES_PACKAGE)) \       

-p $(HOST_OUT) \     

   -k $(KEY_CERT_PAIR) \     

   -s $(OTA_TOOL_EXTENSION)/mt_ota_from_target_files \

基本上是相同的命令,于是把我们的包放在源码中测试,发现可以做成功,

那基本上问题就可以确认了,问题 来源于 -P host_out,可以确定因为打包的库不全,所以出现了整包编译不出来的情况,包括整个升级vendor 的方法也无法运行

第五步,这里一开始并不知道是缺的那个库,所以挨个对比排查,最后查出了所缺的bin文件和lib64文件, 并且验证成功

3、问题探讨

这个问题有个疑问点,整包是缺库了,但是本身我们FOTA包中的库是如何打包进去的呢 这时候还是联想到了makefile  因为整包的命令中有 -P HOST_OUT 所以猜测这部分在makefile中是有定义的,查找后找到了这部分文件

MTK Android 9.0投影项目实战:如何手动定制OTA包,精准跳过vendor分区升级 本文详细介绍了在MTK Android 9.0投影项目中如何手动定制OTA包,精准跳过vendor分区升级的技术方案。通过分析MTK平台OTA升级的核心痛点,提供从解包、修改updater-script脚本到重新打包与签名的完整流程,帮助开发者保留用户个性化配置,降低升级风险。 阅读详情

相关推荐

Android10.0 OTA升级流程分析

原文地址:https://skytoby.github.io/2019/Android%20OTA%E5%8D%87%E7%BA%A7%E6%B5%81%E7%A8%8B%E5%88%86%E6%9E%90/ 一、概述 目前Android系统终端的升级主要是通过无线进行的(FOTA,Firmware Over-The-Air),主要流程是通过无线方式将升级包下载到终端,而后调用系统的升级接口进行升...

skytoby 8463

手机刷机学习笔记

红米note9 4g版刷机笔记

Along_river的博客 4594

recovery 升级前兼容性检查(Vendor Interface Object)

  从android P(9.0)版本开始,我们发现编译出来的OTA升级了里面多了一个文件,compatibility.zip,这个里面存储这system与vendor分区的一些特性,用来做升级前的兼容性检查。其实从android O开始已经增加了这个功能,但是没有默认打开。直到android P上,已经默认打开了。 解压compatibility.zip后,内容如下: 我们先从goo...

csdn66_2016的博客 5896

Android分区

bootloader(引导加载程序):包含引导加载程序和相关引导配置文件,负责将系统引导到操作系统。boot(引导):包含内核映像和设备树文件,负责启动Android系统。recovery(恢复):用于设备恢复和刷写操作,包含恢复引导加载程序、恢复内核和RAM磁盘映像等。system(系统):包含Android系统核心文件,如操作系统、应用程序和库文件等。cache(缓存):存储应用程序的临时文件和缓存文件。data(数据):存储用户数据、应用程序数据和个人设置等。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 3042

Android 9.0的AB升级坑:RK3368设备Recovery找不到分区?可能是你的fstab配置过时了

本文深入解析了RK3368设备在Android 9.0升级过程中遇到的Recovery找不到分区问题,揭示了fstab配置过时的根本原因。通过分析Android 9.0的分区管理机制变革,提供了设备树配置和调试技巧,帮助开发者有效解决升级固件时的常见错误。

weixin_30374009的博客 434

Hi3751V352 Android 9.0 eMMC分区表深度解析与自定义实战

本文深入解析了海思Hi3751V352平台在Android 9.0系统下的eMMC分区表架构,详细介绍了分区表的设计原理、修改方法及实战操作。通过具体案例演示如何在现有分区中安全插入自定义区域,并提供高级技巧与常见问题排查指南,帮助开发者优化存储布局,提升系统稳定性和扩展性。

chimu9074的博客 666

Android 设备分区大总结

Android 为了解耦 AOSP 和芯片厂家(vendor),以及设备厂家(odm) 的关系,真是操碎了心。就一个分区隔离都看得我云里雾里,更不用还有跟分区变更紧密相关的 ramdisk 变更,不论是分区变更,还是 ramdisk 变更,都可以单独起一个单独的专题。不知道你晕了没有,反正我感觉很晕。本文专门探讨一些我知道的 Android 分区。

洛奇看世界 4435

晶晨S905L3B芯片-安卓9.0-ATV极简优化版:线刷固件包全解析与实战指南

本文详细解析了专为晶晨S905L3B芯片电视盒子打造的安卓9.0 ATV极简优化版线刷固件包。通过深度精简系统、优化大屏显示及解锁底层权限,该固件能有效提升设备流畅度与纯净度。文章提供了从工具准备、驱动安装到完整线刷流程的实战指南,并附有刷机后优化与常见问题解决方案,帮助用户轻松为老旧设备焕新。

weixin_28452161的博客 660

Android系统分区理解及分区目录细解

如果系统当前active的槽反复多次启动都没能标记为successful,则将该槽标记为unbootable,并将另外一个槽标记为active。将系统分区分成了A和B两个槽(slot),手机启动时会选择A槽或者B槽启动,运行过程中仅使用当前槽位的分区。一旦当前运行的槽出现问题,系统仍可以选择另一个槽进行启动,从而保证系统良好的可用性。由于A/B分区结构可以实现一边从服务端获取OTA数据,一边直接写入待升级的槽,不需要临时存储OTA包的空间,因此不再需要在cache或userdata分区预留足够空间。

QG 2583

高通平台基线升级时,从Android 13升级到Android 15遇到的selinux权限不生效问题分析

高通平台基线升级时,从Android 13升级到Android 15遇到的selinux权限不生效问题分析

月山知了的博客 777

ROM修改进阶教程------固件中vendor.img分区的具体作用 解包修改常识

了解当前需要修改的分区基本常识。是修改rom爱好者的操作前提。我们先来看看vendor分区在系统中作用图示

小马哥的专栏 2595

关于Android9.0 断电后升级问题排查分析

最近遇到一个项目Android 9.0的,很多机器出现了开机dm-verify error的错误,排查了很久,做了大量的测试,在此坐下记录分析流程 1.问题复现 2.问题排查 3.问题解决 一.问题复现 起初的信息并不全,升级的log也是全部跑完了,正好过年期间看了下updaer断电后升级的机制,年后重新看这个问题,发现升级的log其实都是retry的,也就是升级中间关机过 测试...

李标标的博客 1558

[RK3568]Vendor Storage分区研究

修改RK628D上的默认edid信息,并且提供接口给用户端调用,在这种情况下最好的方法就是将edid信息存储在某一空间里面,然后RK628驱动加载的时候直接将edid信息读出来并且在驱动里面初始化

m0_60805802的博客 1854

晶晨S905L3B芯片-2+8G-安卓9.0-ATV原生设置(深度精简优化)-通刷-线刷固件包

本文介绍了一款针对晶晨S905L3B芯片的深度优化安卓9.0线刷固件包,适用于创维E900V22C等盒子。固件特点包括:1)深度精简系统,去除广告和无用应用;2)优化显示参数,改善UI体验;3)解锁系统权限,支持第三方应用安装;4)解决Vendor分区写保护问题。刷机方法详细说明了使用AmlogicUSBBurningTool工具的操作步骤,并提供了多个下载链接。文章特别强调该固件仅供技术交流,刷机风险需自行承担。通过修改系统参数和底层权限,该固件大幅提升了设备的运行效率和用户体验。

点我主页,可查看所有固件文章! 3002

安卓9.0系统修改定制化____深入解析安卓 9.0 各手机分区:功能、作用与差异 基础篇二

          在安卓 9.0 系统中,手机内部存储被划分为多个不同的分区,每个分区都承担着独特且重要的职责。深入了解这些分区,对于我们理解安卓系统运行机制、进行系统优化,甚至是刷机等操作都有着极大的帮助。尤其是rom定制与修改方面。 通过博文了解💝💝💝  1💝💝💝-----了解安卓9.0以及更低版本各分区的释义 rom修改基础常识 2💝💝💝-------品牌分区系统的不同与差异    各大厂商定制分区 3💝💝💝----手机各个主要分区的作用与简单释义

小马哥的专栏 461

Android12.0 需求开发篇之OTA AB升级篇章二

总体AB分区下OTA升级自定义分区就完成了,注意有些平台使用dd制作镜像在OTA差分包升级时会失败,因为OTA差分升级会进行分区版本校验,有的用dd指令作的自定义分区hexdump不正确导致校验不通过,请替换为mkuserimg相关指令处理。至此本章结束,如有不当,欢迎指正。

洋仔的博客 359

Android 分区

分区

iffy 3116

Linux下搭建J-Link调试环境:OpenOCD+GDB实战指南

嵌入式开发中,调试器是连接开发主机与目标硬件的关键桥梁,其核心原理是通过标准协议(如JTAG/SWD)访问芯片内部的调试模块。GDB作为通用的调试客户端,通过远程协议与调试服务器通信,而OpenOCD则扮演了协议转换与硬件驱动的角色,实现了调试命令的翻译与执行。这种开源工具链的组合,为开发者提供了高度的定制化与自动化能力,尤其适合需要与持续集成流程深度结合的复杂项目。在实际应用中,针对特定芯片(如ARM7TDMI)进行正确的内存控制器与时钟初始化是成功调试的前提,这常常涉及对板级支持包的深入理解。本文以S3

weixin_29889665的博客 333

android 9.0 中关于OTA 升级的注意事项

droid 分区查看 emcc 7.x 8.x   一、要确定有多少个分区? 详细解析: major 表示主设备号  minor 表示次设备号  #blocks 表示的是block的数目  name 是指的设备名称 例如: major 主设备号,比如一个U盘有3个分区,主设备名为sda,major为8,分区的major也为8 (可能所有的U盘插进来,major都是8),min...

wed110的专栏 7540

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台

创建如下所示的目录结构: 2.在tb的文件下:顶层的testbench如下:在tb中,第24行的代码将uvm宏相关的内容include进来,第26行的代码把uvm_pkg包导入进来,然后将agent相关的包(ahb_pkg/sram_pkg),testcase相关的包(uvm_ahb_sram_test_pkg)以及env相关的包(uvm_ahb_sram_env_pkg)都导入进来,在第38行和39行将接口以virtual interface的形式配置给ahb_agent和sramc_agent下

ZhangShuHuai11的博客 9477

Stable-Baselines3性能优化:多环境训练对比指南(DummyVecEnv vs SubprocVecEnv)

本文深入对比了Stable-Baselines3中DummyVecEnv与SubprocVecEnv两种向量化环境的性能差异与应用场景。DummyVecEnv适用于轻量级、步进快的环境,调试友好且开销低;而SubprocVecEnv则通过真正的多进程并行,能显著加速计算密集型环境的训练。文章通过基准测试与决策树,指导开发者根据环境计算成本、CPU核心数等关键因素做出最优选择,以实现训练效率最大化。

weixin_29063979的博客 147
上一篇: LowmemoryKiller流程简图
下一篇: 减小差分包文档分析
李标标
博客等级 码龄11年 124粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值