码迷,mamicode.com
首页 > 其他好文 > 详细

进入Recovery之前的关机流程

时间:2016-03-27 14:05:21      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

进入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之前的关机流程

标签:

原文地址:http://www.cnblogs.com/kaios/p/5208523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!