
android recovery
文章平均质量分 75
丁香树下丁香花开
丁香树下,丁香花开!
展开
-
(一)android为什么需要recovery升级?
接触过安卓手机的同事,大家都知道有个recovery系统,开机的时候,通过组合按键,可以使手机进入recovery恢复模式,可以用来刷机,搞过android开发的同事,肯定也接触过这个模块,但是为什么需要recovery来升级呢,有些人肯定会说这还用问吗,没有recovery怎么升级呢? Recovery相关的知识,网上百度一大把,关于recovery的介绍,recovery模块的原创 2017-04-01 15:06:59 · 3638 阅读 · 1 评论 -
recovery 升级'@/cache/recovery/block.map' failed错误问题
随着android版本升级,升级包越来越大,当升级包无法存储在cache分区的时候,会把升级包下载到data分区,然后从data分区升级,最近从data分区加载升级包升级的时候,遇到了如下错误:[ 1.945982] Supported API: 3[ 1.957270] charge_status 1, charged 1, status -2, capacity -922原创 2018-02-01 20:45:31 · 7666 阅读 · 0 评论 -
system.img镜像转换为system.new.dat + system.transfer.list
android 8.1上面验证,支持所有的android版本,直接放到sdk中执行即可。img2sdat.py#!/usr/bin/env python#coding=utf-8import sysif sys.hexversion < 0x02070000: print >> sys.stderr, "Python 2.7 or newer is required." sy...原创 2018-03-22 16:39:11 · 2720 阅读 · 0 评论 -
system.transfer.list版本进化
从android5.0开始之后,recovery升级包中不再升级system.img,而是升级system.new.dat+system.transfer.list的这种文件组合,经过android版本的不断进化,transfer的版本也在不断的升级,目前已经发展到了版本4,从android-L android-M android-N android-O的过程,transfer进过过程如下...原创 2018-03-19 17:26:31 · 1131 阅读 · 0 评论 -
system.transfer.list深度解析
system.transfer.list system.new.dat很明显,通过名字我们就知道这两个文件的作用,system.new.dat为数据部分,system.transfer.list为转换的描述列表,我们可以通过这两个文件完成升级。我们打开一个升级包的升级脚本META-INF\com\google\android\updater-scriptblock_image_update("/...原创 2018-03-19 17:24:43 · 3296 阅读 · 0 评论 -
recovery 恢复出厂设置失败Data wipe failed
最近客户反馈,编译32位的android系统,在recovery中执行恢复出厂设置的时候失败了,失败的打印提升信息如下。Formatting /data...[ 2.191404] E:get_file_size: invalid size -1289764864 for /dev/block/data[ 2.207430] Data wipe failed.根据打印提示,意识是说...原创 2018-05-10 20:04:43 · 2891 阅读 · 0 评论 -
recovery 强制执行恢复出厂设置(Rescue Party)
有时候我们在系统正常运行的时候,突然跑到recovery里面了,并且停在了如下界面:Can't load Android system. Your data may be corrupt.If you continue to get this message, you may need toperform a factory data reset and erase all user datast...原创 2018-06-15 19:55:01 · 16344 阅读 · 1 评论 -
recovery 升级前兼容性检查(Vendor Interface Object)
从android P(9.0)版本开始,我们发现编译出来的OTA升级了里面多了一个文件,compatibility.zip,这个里面存储这system与vendor分区的一些特性,用来做升级前的兼容性检查。其实从android O开始已经增加了这个功能,但是没有默认打开。直到android P上,已经默认打开了。解压compatibility.zip后,内容如下:我们先从goo...原创 2018-08-15 15:49:21 · 5750 阅读 · 3 评论 -
recovery 根据@/cache/recovery/block.map描述从data分区升级
随着android版本的更新,系统固件的大小也越来越大,升级包也越来越大,cache分区已经不够存储update.zip了,所以应用把update.zip下载到data分区,默认情况下data分区是可以存储升级包的。 我们有分区加密的功能,当打开加密分区后,data分区是加密的,当升级包存在data分区的时候,recovery下获取不到对应的秘钥,也没有对应的程序去解密,所以re...原创 2018-08-23 20:16:30 · 4538 阅读 · 0 评论 -
recovery uncrypt功能解析(bootable/recovery/uncrypt/uncrypt.cpp)
我们通常对一个文件可以直接读写操作,或者普通的分区(没有文件系统)也是一样,直接对/dev/block/boot直接读写,就可以获取里面的数据内容了。当我们在ota升级的时候,把升级包下载到cache/data分区,然后进入recovery系统后,把cache/data分区mount之后,即可从对应的分区获取zip升级包升级了, 前提是我们需要挂载对应的分区cache或者data,这样才能给读...原创 2018-08-23 20:13:12 · 5194 阅读 · 0 评论 -
recovery 下界面UI旋转90 180 270修改
原文修改出自简书:https://www.jianshu.com/p/768fdd954061应该是MTK修改的google源码,支持recovery下屏幕旋转90/180/270, 作者把MTK的修改上传了,验证没有问,可以直接使用,多谢分享...原创 2019-01-30 17:29:22 · 1462 阅读 · 1 评论 -
Android Boot Image Header结构
Android 9.0之前的boot header:struct boot_img_hdr{ uint8_t magic[BOOT_MAGIC_SIZE]; uint32_t kernel_size; /* size in bytes */ uint32_t kernel_addr; /* physical load addr */ uint32_t ...原创 2019-03-15 16:57:10 · 1354 阅读 · 0 评论 -
Can't find ext4 filesystem(EXT4-fs:Bad magic number in super-block)
针对目前市面上主流的android系统的嵌入式设备,都是使用的emmc的flash存储,相应的使用的是ext4的文件系统,当ext4的system分区无法挂载的时候,我们改如何分析呢?何种操作导致的ext4分区无法挂载呢? 我们出问题的设备的启动log如下:[ 1.868201@2] fs_mgr: Warning: unknown flag format[ ...原创 2019-03-11 17:43:13 · 6893 阅读 · 1 评论 -
recovery&linux系统升级数据更新分析总结
毕业工作到现在,作为码农,主要的工作核心都围绕着升级展开,渐渐的对升级也有了一部分自己的认识,见解。大致总结下对升级理解及实现。有错误或者不全面的地方,还请各位多多指导。 先说说对升级的理解吧。系统升级是软件更新及BUG修复的主要方式,升级的主要原理就是数据搬移的过程,把我们需要的数据,从某个地方,更新到另外的一个地方。这个过程就叫做升级。一般是当我们系统有了新的功能增加,或者是现原创 2017-12-09 17:21:19 · 974 阅读 · 2 评论 -
recovery 升级界面顶部花屏问题分析
说明: 实际解决问题的过程有点曲折,后面找到原因,分析清楚问题后,总结下正确的分析方法,大致分析流程如下。 问题描述: 在进入recovery的时候,第一次上电进入recovery时,顶部会有一长条花屏,如下图所示。 问题分析: 通过出现花屏的时间点,我们判断,出现花屏的时候,已经进入了recovery系统,那么出现花屏的分析点,定位原创 2017-09-08 15:16:08 · 1830 阅读 · 0 评论 -
recovery log直接输出到串口
recovery log直接输出到串口 我们在调试recovery升级的时候,我们经常需要查看recovery的log,google的原始逻辑中,recovery的log并非直接输出到串口,我们需要输入命令才能获取,我们有三种方式: 第一种:recovery下,遥控器选择view recovery logs,界面上查看。 第二种:recovery下,输入命令,c原创 2017-06-26 14:58:50 · 6067 阅读 · 0 评论 -
(二)android recovery升级过程中掉电处理
一般在升级过程,都会提示用户,请勿断电,不管是android的STB,TV还是PHONE,或者是其他的终端设备,升级过程,基本上都可以看到“正在升级,请勿断电”,然后有个进度条,显示升级的进度。 但是从系统安全的角度考虑,如果用户真断电了,我们仍然需要能够从异常掉电的情况中,恢复系统或者继续升级。 我们先理解下recovery的过程,我们升级过程,其实分为两个阶段,升级包校验原创 2017-04-12 19:10:34 · 3830 阅读 · 1 评论 -
(三)android recovery差分升级过程掉电分析
3.1 整包升级与差分升级 Android升级可分为两种,一种是整包升级,一种是差分升级,顾名思义,整包升级,即更新分区时,更新整个分区的镜像,差分升级,更新分区时,只更新差异部分。 简单的如下:我们从A升级到C,如果是整包升级,则必须写入所有的数据C;如果是差分升级,只需要更新B即可。3.2 优劣势对比 从上图我们很明显的看到,升级差分包相原创 2017-04-20 11:40:08 · 3390 阅读 · 4 评论 -
(七)android recovery代码修改之原生建议
我们都知道recovery升级的时候,是根据升级脚本updater-script里面的函数,去一步步执行的,比如mount,format等相关的操作,有时候我们需要增加一些自己特殊的更新的接口,这时候就可能需要再单独封装一个函数接口,我所知道的,绝大多数的开发者,都是直接在bootable/recovery/updater/install.cpp里面的RegisterInstallFuncti原创 2017-05-25 17:02:33 · 2657 阅读 · 0 评论 -
(四)android recovery 升级之USB设备挂载
Recovery升级过程,通常会从两个地方获取升级包update.zip升级,一般在线升级,会把升级包下载到cache分区,本地升级会从usb或者tf卡中升级。本文讨论下,本地USB升级时,无法挂载USB设备的问题。 无法挂载USB设备的时候,可以按照以下流程分析:4.1 手动挂载 我们先确定是否能够手动挂载USB设备 busybox mount -t v原创 2017-04-24 19:53:42 · 8276 阅读 · 0 评论 -
(六)android recovery 升级UI显示之资源文件
Recovery只有在升级的时候才会呈现给用户,所以界面一般都很简单,没有android上层那么绚丽,所以recovery下面对图片的支持很有限,仅支持png图片显示,所以我们可以看到,recovery下面所有的背景以及提示信息,都是以png格式图片的资源文件存在。一般的厂商都会觉得,原生的机器人很low,都会重新整理一套升级显示的UI,但并非所有的png图片recovery都是支持的,下面我们来原创 2017-05-16 16:33:44 · 3921 阅读 · 1 评论 -
(五)android recovery 升级时间与速度研究
从android4.4到现在android7.1升级,现在的升级包越来越大,一个system分区大小都分配了2G,整个升级包达到了接近500M, 升级包解压之后1G+,奇怪的是,发现了两个不同批次的板,升级时间差了三倍,相同的升级包,一个要三分钟,一个不到一分钟就升级完了。 经过查看,发现了两个板子的emmc型号不相同,一个是Samsung KLMBG2JETD-B041,一分钟就可原创 2017-05-09 20:29:50 · 1275 阅读 · 0 评论 -
recovery 升级时间戳校验
我们在recovery升级的时候,经常提示这样的错误:Installing update...Can't install this package (Tue Jun 27 12:29:30 CST 2017) over newer build (Mon Jun 26 17:20:32 CST 2017)E:Error in /udisk/xxxx.zip(Status 7)原创 2017-07-04 20:13:41 · 3933 阅读 · 0 评论 -
recovery 升级过程执行自定义shell命令
有时候我们需要,在升级的过程中,执行一些shell命令,来完成我们的一些需求,利用升级过程,进行一些特殊化的操作,思路如下: 第一: 把我们需要执行的命令,写成一个test.sh脚本,然后在recovery串口环境下,source test.sh,保证我们的sh能够正常运行。 第二: 把test.sh打包到升级包update.zip的根目录中去,主要是修改b原创 2017-06-26 16:08:33 · 2695 阅读 · 0 评论 -
recovery 差分升级包制作超时
我们在对android系统升级的时候,可以减少升级包的大小,只升级差异部分,也就是差分包升级,相关的描述可以参考:http://blog.youkuaiyun.com/csdn66_2016/article/details/70256757 我们在对两个不同的文件进行差分的时候,使用到了两个工具,分别是imgdiff与bsdiff,通过这两个工具产生差异部分的patch,升级的时候打patch即可。原创 2017-06-27 15:44:37 · 1261 阅读 · 0 评论 -
recovery 界面汉化过程详解
一. 主要是针对recovery汉化,主要汉化对象是界面显示为中文。二. 基于中文的汉化,有两种方式,一种是基于GB2312的编码格式汉化,另外一种是基于unicode编码格式汉化。下面介绍unicode中文汉化。三. 汉化主要需要修改四个文件,汉化步骤: 3.1 default_device.cpp修改,主界面汉化原创 2017-07-06 10:27:26 · 3087 阅读 · 7 评论 -
android recovery 模块知识需求汇总
关于android recovery的一个目录,后续继续更新,未完待续......Android recovery模块介绍:(一)android为什么需要recovery升级?http://blog.youkuaiyun.com/csdn66_2016/article/details/68944441(二)android recovery升级过程中掉电处理http://blog原创 2017-06-28 10:50:44 · 829 阅读 · 2 评论 -
recovery 升级过程LED灯闪烁
Android设备在进入recovery升级的过程,我们在屏幕上面可以看到升级的机器人动画,以及升级的进度显示。这仅限于有屏幕的设备,比如平板PAD,电视TV等,对与没有屏幕的盒子BOX,那么在不接入输出设备的时候,升级过程无法可视化的显示,所以就有了这个需求,在升级过程,通过控制面板LED等的闪烁,来告知用户,正在升级,升级完成等状态。 我们添加这个功能,需要分两个步骤:原创 2017-06-28 10:38:17 · 1307 阅读 · 0 评论 -
android recovery设置selinux为permissive
我们在调试开发阶段,经常需要把selinux关闭,则我们修通过设置uboot env来设置为允许状态:setenvEnableSelinux permissive;save 我们如果需要一直设置为permissive模式,不需要通过uboot env去控制,可以这样修改(android 9.0上面验证):system/core/init下面打patch:diff --...原创 2019-03-13 11:06:36 · 3281 阅读 · 2 评论