摘要:
有时候我们在系统正常运行的时候,突然跑到recovery里面了,并且停在了如下界面: Can't load Android system. Your data may be corrupt. If you continue to get this message, you may need to p 阅读全文
摘要:
最近客户反馈,编译32位的android系统,在recovery中执行恢复出厂设置的时候失败了,失败的打印提升信息如下。 根据打印提示,意识是说获取data分区的size是无效的。我们来看看这个函数get_file_size bootable/recovery/roots.cpp 这个ssize_t 阅读全文
摘要:
android 8.1上面验证,支持所有的android版本,直接放到sdk中执行即可。 img2sdat.py #!/usr/bin/env python #coding=utf-8 import sys if sys.hexversion < 0x02070000: print >> sys.s 阅读全文
摘要:
从android5.0开始之后,recovery升级包中不再升级system.img,而是升级system.new.dat+system.transfer.list的这种文件组合,经过android版本的不断进化,transfer的版本也在不断的升级,目前已经发展到了版本4,从android-L a 阅读全文
摘要:
system.transfer.list system.new.dat 很明显,通过名字我们就知道这两个文件的作用,system.new.dat为数据部分,system.transfer.list为转换的描述列表,我们可以通过这两个文件完成升级。 我们打开一个升级包的升级脚本META-INF\com 阅读全文
摘要:
说明: 实际解决问题的过程有点曲折,后面找到原因,分析清楚问题后,总结下正确的分析方法,大致分析流程如下。 问题描述: 在进入recovery的时候,第一次上电进入recovery时,顶部会有一长条花屏,如下图所示。 问题分析: 通过出现花屏的时间点,我们判断,出现花屏的时候,已经进入了recove 阅读全文
摘要:
Android设备在进入recovery升级的过程,我们在屏幕上面可以看到升级的机器人动画,以及升级的进度显示。这仅限于有屏幕的设备,比如平板PAD,电视TV等,对与没有屏幕的盒子BOX,那么在不接入输出设备的时候,升级过程无法可视化的显示,所以就有了这个需求,在升级过程,通过控制面板LED等的闪烁 阅读全文
摘要:
我们在对android系统升级的时候,可以减少升级包的大小,只升级差异部分,也就是差分包升级,相关的描述可以参考:http://blog.csdn.net/csdn66_2016/article/details/70256757 我们在对两个不同的文件进行差分的时候,使用到了两个工具,分别是imgd 阅读全文
摘要:
有时候我们需要,在升级的过程中,执行一些shell命令,来完成我们的一些需求,利用升级过程,进行一些特殊化的操作,思路如下: 第一: 把我们需要执行的命令,写成一个test.sh脚本,然后在recovery串口环境下,source test.sh,保证我们的sh能够正常运行。 第二: 把test.s 阅读全文
摘要:
我们在调试recovery升级的时候,我们经常需要查看recovery的log,google的原始逻辑中,recovery的log并非直接输出到串口,我们需要输入命令才能获取,我们有三种方式: 第一种:recovery下,遥控器选择view recovery logs,界面上查看。 第二种:reco 阅读全文
摘要:
我们都知道recovery升级的时候,是根据升级脚本updater-script里面的函数,去一步步执行的,比如mount,format等相关的操作,有时候我们需要增加一些自己特殊的更新的接口,这时候就可能需要再单独封装一个函数接口,我所知道的,绝大多数的开发者,都是直接在bootable/reco 阅读全文
摘要:
Recovery只有在升级的时候才会呈现给用户,所以界面一般都很简单,没有android上层那么绚丽,所以recovery下面对图片的支持很有限,仅支持png图片显示,所以我们可以看到,recovery下面所有的背景以及提示信息,都是以png格式图片的资源文件存在。一般的厂商都会觉得,原生的机器人很 阅读全文
摘要:
Recovery升级过程,通常会从两个地方获取升级包update.zip升级,一般在线升级,会把升级包下载到cache分区,本地升级会从usb或者tf卡中升级。本文讨论下,本地USB升级时,无法挂载USB设备的问题。 无法挂载USB设备的时候,可以按照以下流程分析: 4.1 手动挂载 我们先确定是否 阅读全文
摘要:
一般在升级过程,都会提示用户,请勿断电,不管是android的STB,TV还是PHONE,或者是其他的终端设备,升级过程,基本上都可以看到“正在升级,请勿断电”,然后有个进度条,显示升级的进度。 但是从系统安全的角度考虑,如果用户真断电了,我们仍然需要能够从异常掉电的情况中,恢复系统或者继续升级。 阅读全文
摘要:
从android4.4到现在android7.1升级,现在的升级包越来越大,一个system分区大小都分配了2G,整个升级包达到了接近500M, 升级包解压之后1G+,奇怪的是,发现了两个不同批次的板,升级时间差了三倍,相同的升级包,一个要三分钟,一个不到一分钟就升级完了。 经过查看,发现了两个板子 阅读全文
摘要:
目前很多Android手机采用的FUSE方案,也就是内部SD卡不单独占用一个文件系统而实际上占用的是userdata的空间。 当系统加密后,解密需要VOLD的参于。而在Recovery模式下,是没有VOLD的启动的。因此,若是OTA升级包保存在了usrdata或内部存储器中时,Recovery是没有 阅读全文
摘要:
我们通常对一个文件可以直接读写操作,或者普通的分区(没有文件系统)也是一样,直接对/dev/block/boot直接读写,就可以获取里面的数据内容了。 当我们在ota升级的时候,把升级包下载到cache/data分区,然后进入recovery系统后,把cache/data分区mount之后,即可从对 阅读全文
摘要:
随着android版本的更新,系统固件的大小也越来越大,升级包也越来越大,cache分区已经不够存储update.zip了,所以应用把update.zip下载到data分区,默认情况下data分区是可以存储升级包的。 我们有分区加密的功能,当打开加密分区后,data分区是加密的,当升级包存在data 阅读全文
摘要:
随着android版本升级,升级包越来越大,当升级包无法存储在cache分区的时候,会把升级包下载到data分区,然后从data分区升级,最近从data分区加载升级包升级的时候,遇到了如下错误: 最直接的错误信息就是:E:Failed to read /cache/recovery/block.ma 阅读全文