本发明公开一种Android系统加速启动方法,涉及移动终端操作系统领域,具体地说是一种基于ARM平台的Android系统加速启动方法。
背景技术:
近年来,由于Android设备的大量普及,相对于经常开关机的设备,如平板电脑,其开启速度直接影响到用户体验,也是判断产品的优劣的一个重要标准。
而目前,对于加速开机速度常用的方式有:
一是采用电源管理技术,使用休眠或睡眠的方式对Android系统进行非真正意义上的关机,当用户需要使用设备时再唤醒设备。但是这不是真正意义上的关机,很难满足用户的需求。另一种是将Android启动过程的Zygote预加载类和资源进行了裁剪,这种方式因打开应用程序的次数远远多于用户开关机的次数而使Android启动后的后续性能不良。
因此在Android系统中,上述优化方法存在一定的局限性,有些甚至带来Android启动后的后续性能问题,所以都不能满足Android启动加速需求。
本发明提供了一种基于ARM平台的Android系统加速启动方法,采用BLCR(Berkeley Lab Checkpoint/Restart)技术,对Android启动过程中比较耗时的Zygote进程预加载类和预加载资源过程进行断点设置,然后在进程启动到执行断点时,保存进程的当前状态和信息到镜像文件中,下次启动的时候直接从镜像文件中启动该进程,从而跳过了耗时的预加载类和预加载资源过程,实现的Android加速,而且对Android的后续性能没有影响。
技术实现要素:
本发明针对现有技术存在的不足和问题,提供一种基于ARM平台的Android系统加速启动方法,实现的Android加速,而且对Android的后续性能没有影响。
本发明提出的具体方案是:
一种基于ARM平台的Android系统加速启动方法,基于ARM平台,利用BLCR技术对BLCR内核进行加载并进行修改以适应ARM平台,同时对BLCR的动态链接库进行修改,然后对Android系统启动过程中Zygote进程预加载类和预加载资源过程进行断点设置,并在进程启动执行到断点时,保存进程的当前状态和信息到镜像文件中,下次Android系统启动直接从镜像文件中启动该进程,跳过Zygote预加载类和预加载资源过程。
修改ARM平台的Linux内核镜像,以支持BLCR内核的加载,修改BLCR内核文件以支持ARM平台,通过交叉编译,生成BLCR内核模块。
所述修改Android的bionic的线程库文件,添加BLCR动态链接库所需的线程库函数接口,修改Android的启动脚本init.rc,在系统进入用户空间后添加BLCR内核模块的功能,供BLCR动态链接库调用。
编写BLCR动态链接库的Android.mk文件,以支持Android系统,并将BLCR的函数接口库移植到ARM平台。
编写Android启动的init.rc调用脚本,用于判断镜像文件是否存在。
在ZygoteInit.java文件中通过JNI调用BLCR内核模块,在预加载类和预加载资源过程进行时设置断点,将Zygote进程启动执行到断点时,保存进程的当前状态和信息到镜像文件中。
Android系统加速启动具体步骤为:
1)Android启动开机;
2)kernel启动完成后,开始启动Init进程,init进程通过读取init.rc完成进入Android系统用户空间的初始化工作;
3)执行BLCR内核模块的加载;
4)判断是否存在Zygote进程的镜像文件来决定是否启动执行流程,如果存在则从镜像文件中创建Zygote进程,从断点处开始往下执行,如果不存在,则执行正常Android启动流程;
5)通过调研Systemserver进程完成Android系统在init进程启动所有其他服务的启动;
6)Android系统启动完成,进入主界面。
本发明的有益之处是:
本发明提供了一种基于ARM平台的Android系统加速启动方法,采用BLCR(Berkeley Lab Checkpoint/Restart)技术,对Android启动过程中比较耗时的Zygote进程预加载类和预加载资源过程进行断点设置,然后在进程启动到执行断点时,保存进程的当前状态和信息到镜像文件中,下次启动的时候直接从镜像文件中启动该进程,从而跳过了耗时的预加载类和预加载资源过程;
与现有技术相比,本发明支持所有ARM平台的Android系统的应用;Android启动时间缩短至少13秒,对Android的目前启动速度提高了接近30%-40%,而且采用“冷启动”方式实现的加速,节约了设备的能源,也满足了Android用户对真正意义上的关机服务的需求。实现的Android加速,对Android的后续性能没有影响。
附图说明
图1是本发明方法应用框架示意图;
图2是应用本发明方法Android系统加速启动操作流程示意图。
具体实施方式
本发明提供一种基于ARM平台的Android系统加速启动方法,基于ARM平台,利用BLCR技术对BLCR内核进行加载并进行修改以适应ARM平台,同时对BLCR的动态链接库进行修改,然后对Android系统启动过程中Zygote进程预加载类和预加载资源过程进行断点设置,并在进程启动执行到断点时,保存进程的当前状态和信息到镜像文件中,下次Android系统启动直接从镜像文件中启动该进程,跳过Zygote预加载类和预加载资源过程。
结合附图,对本发明做一步说明。
本发明方法,基于ARM平台,利用BLCR技术对BLCR内核进行加载并进行修改以适应ARM平台,其中修改ARM平台的Linux内核镜像,以支持BLCR内核的加载,修改BLCR内核文件以支持ARM平台,通过交叉编译,生成BLCR内核模块;
同时对BLCR的动态链接库进行修改:编写BLCR动态链接库的Android.mk文件,以支持Android系统,并将BLCR的函数接口库移植到ARM平台,修改Android的bionic的线程库文件,添加BLCR动态链接库所需的线程库函数接口,修改Android的启动脚本init.rc,在系统进入用户空间后添加BLCR内核模块的功能,供BLCR动态链接库调用;
编写Android系统下的JNI接口函数,用于调用BLCR动态链接库;在ZygoteInit.java文件中通过JNI调用BLCR内核模块,在预加载类和预加载资源过程进行时设置断点,将Zygote进程启动执行到断点时,保存进程的当前状态和信息到镜像文件中,下次启动时通过恢复进程的镜像文件,从断点处往下执行程序,跳过了耗时的预加载类和预加载资源的过程,从而提高了Android的启动速度。
上述提及的镜像文件,可以通过编写Android启动的init.rc调用脚本,判断镜像文件是否存在。如果存在则直接从镜像文件中启动,如果不存在,则通过调用BLCR内核模块生成Zygote进程的镜像文件。
利用上述方法,对Android系统启动加速进行加速,具体步骤为:
1)Android启动开机,包括bootloader、Android底层Linux内核的启动;
2)kernel启动完成之后,开始启动Init进程,init进程通过读取init.rc完成进入Android系统用户空间的初始化工作;
3)如果步骤2成功完成,接下来就是通过insmod的方式执行BLCR动态内核模块的加载,为后续BLCR技术加速Android启动建立基础;
4)判断是否存在Zygote进程的镜像文件来决定是否启动执行流程,如果存在则从镜像文件中创建Zygote进程,从断点处开始往下执行,如果不存在,则执行正常Android启动流程;
5)通过调研Systemserver进程完成Android系统在init进程启动所有其他服务的启动;
6)Android系统启动完成,进入主界面。
利用本发明方法对Android系统启动后的后续性能没有影响,弥补了传统加速方法如裁剪或定制Android服务的方式对后续性能产生影响的缺陷。同时,采用了“冷启动”的方式,节约了设备的能源,也满足了Android用户对真正意义上的关机服务的需求。