进入Recovery之前的关机流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进入Recovery之前的关机流程相关的知识,希望对你有一定的参考价值。

进入Recovery之前的关机流程

作者:李志强       2016-02-22

欢迎转载,请注明出处 http://www.cnblogs.com/kaios/p/5208523.html

              Recovery模式和android的正常模式是独立的,通常在Recovery模式中完成的工作包括,Fota升级,SD卡升级,以及恢复出厂设置这三个功能。这三个功能中Fota升级的升级包通常上由Fota的上层应用来下载的,而存放的位置一般上/cache分区或者/data分区。如果是存放在cache分区,那么没有问题,正常升级即可。如果升级包是被存放在了data分区,在android引入了data分区加密功能之后,这个就会有问题。如果data分区被加密过,那么在recovery下说无法通过文件系统来直接访问存放中data分区中的升级包的。那么在data分区被加密的情况下,recovery是怎么读取存放中data分区中的升级包呢?这就是本文要讲述的,这进入Recovery模式之前的关机流程中,其实还做了一些额外的处理。如果要重启进入recovery模式进行sd卡升级或者恢复出厂设置,则会走的是正常的关机进入recovery流程,如下流程图:

技术分享

 

        Fota应用在下载完Fota升级包之后是通过调用RecoverySystem提供的installPackage接口来启动升级。在这个接口中首先会创建一个文件/cache/recovery/uncrypt_file这个文件是一个标志文件,创建这个文件则表示该次关机流程是为了fota升级而启动的。并且这个文件中保存着升级包的路径,这个路径会中uncrypt服务中被用到。这里提到了uncrypt服务,如上流程图所示,这个服务就是为了解决中data区加密的情况下,recovery读取data分区存放的升级包的问题。

        uncrypt是一个可执行的程序,编译后生成在out/.../system/bin/目录下,对应的代码为bootable/recovery/uncrypt/*,而和这个可执行程序有关的服务有两个如下:

 

 1 ...
 2 
 3 service uncrypt /system/bin/uncrypt
 4     class main
 5     disabled
 6     oneshot
 7 
 8 service pre-recovery /system/bin/uncrypt --reboot
 9     class main
10     disabled
11     oneshot
12 
13 ...

 

以上是关于进入Recovery之前的关机流程的主要内容,如果未能解决你的问题,请参考以下文章

一加手机怎么进入recovery模式?

酷派怎么进入recovery

如何进入Recovery模式 安卓手机进入Recovery模式方法大全

苹果手机怎么进入recovery模式

怎么进入recovery模式 linux

爱蹭网路由器自带uboot怎么刷机