Android OTA晋级(2):开启升级过程

Android OTA升级(2):开启升级过程田海立@CSDN2013-3-31 通过网络或直接本地获取到OTA升级包之后,通过程序

Android OTA升级(2):开启升级过程

田海立@CSDN

2013-3-31

 

通过网络或直接本地获取到OTA升级包之后,通过程序就可开始Android的升级。本文描述这一过程。

 

在获取到OTA升级包之后,可以直接通过android.os.RecoverySystem.installPackage()开启OTA升级。

RecoverySystem.installPackage()是在API-8之后加入的,使用它需要权限:android.Manifest.permission.REBOOT

 

一、RecoverySystem#installPackage()的实现

 

RecoverySystem.installPackage()就是把传入的文件的文件名通过arg“--update_package=<filename>”【<filename>用具体文件代替】,调用bootCommand()实现。

 

bootCommand()的实现:

//kernel/arch/arm/kernel/process.cvoid machine_restart(char *cmd){                arm_pm_restart(reboot_mode,cmd);}

arm_pm_restart指向具体平台定义的机器重启的函数指针,原型是void(*arm_pm_restart)(char str, const char *cmd)。

具体实现与所采用的特定平台相关,这里不再讲述。

 

总结


本文描述了Android中对OTA升级发起的过程,从Framework到JNI,再到Kernel层,层层关系的分析,看到所谓的OTA升级的发起,就是通过向/cache/recovery/command里把“--update_package=<filename>”写入,然后通过系统调用转入内核态执行系统调用,实现机器重启,完成OTA升级的全过程。

重启之后,进入Recovery模式的过程在后面的专题中再讨论。