一种加速Android系统启动的方法及装置的制作方法

文档序号:6338606阅读:218来源:国知局
专利名称:一种加速Android系统启动的方法及装置的制作方法
技术领域
本发明涉及操作系统领域,尤其涉及的是一种加速Android系统启动的方法及装置。
背景技术
Android (安卓)系统是google (谷歌)推出的一款开源的操作系统,目前广 泛应用于手机等手持嵌入式设备,一些电视厂商也逐渐推出了基于Android的网络电视。Android系统是基于Iinux内核的,系统启动首先是bootloader (引导加 载程序)和linux kernel (内核程序)启动加载,然后通过init进程解析init.rc脚 本启动servicemanager (服务管理)和zygote (孵化器)等几个基本的服务,接 下来是Android系统服务的启动过程。Android的系统服务包括apk包管理服务
(PackageManagerService),活动管理服务(ActivityManagerService),窗口管理服务 (WindowManagerService)等。最后是Android系统home (主桌面)启动,至此整个 系统启动完毕。在Android系统启动过程中,系统服务的启动占整个系统启动的时间比较长, 其中系统服务的apk包管理服务(PackageManagerService)的启动又是最耗费时间的, apk包管理服务的主要工作是扫描、解析系统的全部应用和服务的apk包。对于一些基于 Android的终端产品,如果系统启动时间较长,会影响用户的客户体验。现有技术的apk包的扫描、解析过程概括分为以下几个步骤
(1)解析包中的AndroidManifestxml (配置清单)文件,获取包的第一层标记名 字 tagNamel,其取值可能是 application (应用),permission-group (权限组),permission (权限),permission-tree (权限树)等,每一个包可以包含一个或多个tagNamel。(2)向下解析AndroidManifest.xml (配置清单)的第二层标记tagName2,每 一个tagName2可能取值为activity (活动),receiver (接收器),service (服务)等。(3)继续向下解析AndroidManifest.xml (配置清单)的第三层标记tagName3, 该层的可能取值为intent-filter (意图过滤器),meta-data (元数据)等。随着apk包的增多这个过程花费的时间会变得越来越长,影响了 Android (安 卓)系统的启动时间,给用户造成不便。因此,现有技术还有待于改进和发展。

发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种加速 Android系统启动的方法及装置,通过将Android系统全部apk包的列表信息保存在设备 存储介质的文件中,在系统重新启动的时候直接读取该文件中的列表信息,在内存中建 立apk包的信息列表代替逐个扫描、解析apk包的方法,节约apk包的扫描、解析时间, 从而使Android系统能够快速的启动。
本发明解决技术问题所采用的技术方案如下 一种加速Android系统启动的方法,其中,包括 步骤S101、开始启动Android系统;进入步骤SllO ; 步骤S110、启动引导加载程序的步骤;
步骤S120、启动Iinux内核的步骤;
步骤S130、应用init进程解析init.rc脚本的步骤;
步骤S140、启动zygote进程的步骤;
步骤S150、启动系统服务的步骤;然后进入步骤S160;
步骤S160、完成启动Android系统;
其中,步骤S150、系统服务启动的步骤包括启动apk包管理服务的步骤,该启动apk 包管理服务的步骤,包括以下具体步骤 步骤151、开始启动包管理服务的步骤; 步骤152、包管理服务开始扫描、解析apk包的步骤;
步骤153、是否从存储介质文件中读取apk包列表信息,当是时从存储介质中读取 apk包列表信息,则进入步骤154,否则进入步骤155;
步骤154、判断文件头有效标志位tag是否等于1,当文件头有效标志位tag=l,进入 步骤156,否则进入步骤155;
步骤155、执行apk包扫描、解析程序,然后跳到步骤157; 步骤156、从存储介质文件中成功读取apk包列表信息,然后进入步骤157; 步骤157、在内存中建立apk包列表信息; 步骤158、完成启动包管理服务。所述加速Android系统启动的方法,其中,所述步骤157中的apk包列表信息建 立过程包括
a、依次将apk包的第三标记层下的元素信息添加到第二标记层对应的列表中;
b、将第二标记层的元素信息添加到第一标记层对应的列表中; C、将第一标记层的信息添加到apk包的package类的列表中;
d、将每个包的列表信息添加到包管理服务的信息列表中,并在该列表信息的文件头 设置标志位tag,用于标示apk包列表信息是否保存成功。所述加速Android系统启动的方法,其中,所述步骤d还包括当tag= 1,标示保 存成功;否则,tag=_l,标示未保存或保存失败;初始建立的时候将tag设为-1。所述加速Android系 统启动的方法,其中,所述步骤S160之后还包括在 Android系统退出时将apk包列表信息保存到设备存储介质上的文件中。一种加速Android系统启动的装置,其中,包括 引导加载程序启动模块,用于启动引导加载程序; 内核启动模块,用于启动Iinux内核;
第一解析模块,用于应用init进程解析init.rc脚本; zygote进程启动模块,用于启动zygote进程; 系统服务启动模块,用于启动系统服务;
其中,所述系统服务启动模块包括apk包管理服务启动子模块、用于启动apk包管理服务;
所述加速Android系统启动的装置,其中,所述apk包管理服务启动子模块进一步包

第一启动单元,用于开始启动包管理服务,并通过包管理服务开始扫描、解析apk
包;
读取判断单元,用于判断是否从存储介质文件中读取apk包列表信息; 文件头判断单元,用于当是从存储介质文件中读取apk包列表信息时,判断文件头有 效标志位tag是否等于1 ;
扫描解析单元,用于执行apk包扫描、解析程序;
apk包列表读取单元,用于当文件头有效标志位tag是等于1时,从存储介质文件中 成功读取apk包列表信息;
apk包列表建立单元,用于在内存中建立apk包列表信息。所述加速Android系统启动的装置,其中,所述apk包列表建立单元进一步包 括
第一添加子单元,用于依次将apk包的第三标记层下的元素信息添加到第二标记层对 应的列表中;
第二添加子单元,用于将第二标记层的元素信息添加到第一标记层对应的列表中; 第三添加子单元,用于将第一标记层的信息添加到apk包的package类的列表中; 第四添加子单元,用于将每个包的列表信息添加到包管理服务的信息列表中,并在 该列表信息的文件头设置标志位tag,用于标示apk包列表信息是否保存成功。本发明所提供的加速Android系统启动的方法及装置,采用了依次将tagName3 下的元素信息添加到tagName2层对应的列表中,再将tagName2层的元素信息添加到 tagNamel层对应的列表中,最后将tagNamel层的信息添加到apk包的package (包)类 的列表中的方法。最后将每个包的列表信息添加到PackageManagerService (包管理服 务)的信息列表中。通过PackageManagerService (包管理服务)的信息列表就可以控制全部apk包
的信息。在关机或系统退出的时候将PackageManagerService (包管理服务)的列表信息 保存到设备存储介质上的文件中,下次重新开机的时候通过读取文件中保存的列表信息 在内存为包建立信息列表,代替通过扫描apk包获取apk包列表信息的方式,从而节约了 apk包的扫描时间,进而节约了 Android系统启动的时间。


图1是本发明实施例的Android系统启动全过程。图2是本发明实施例的包管理服务建立全部apk包信息列表结构示意图。图3是本发明实施例加速Android系统启动的装置结构框图。图4是实施例的加速Android系统启动的装置apk包管理服务启动子模块内部原 理框图。图5是实施例的加速Android系统启动的装置apk包列表建立单元内部原理框 图。
具体实施例方式本发明所提供的一种加速Android系统启动的方法及装置,为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例提供的一种加速Android (安卓)系统的启动方法,如图1所示, 主要包括以下步骤
步骤S101、Android系统开始启动;进入步骤S110。步骤S110、bootloader (引导加载程序)启动的步骤; 步骤S120、linux kernel (内核程序)启动的步骤;
步骤S130、应用init进程解析init.rc脚本的步骤; 步骤S140、zygote (孵化器)进程启动的步骤;
步骤S150、systemserver (系统服务)启动的步骤;然后进入步骤S160。步骤S160、Android系统启动结束。其中,本发明实施例的步骤S150、systemserver (系统服务)启动步 骤包括apk包管理服务(PackageManagerService)启动步骤,该apk包管理服务
(PackageManagerService)启动步骤,如图2所示,包括以下具体步骤 步骤151、开始启动PackageManagerService (包管理服务)。步骤152、PackageManagerService (包管理服务)开始扫描、解析apk包。步骤153、是否从存储介质文件中读取apk包列表信息?若是从存储介质中读取 apk包列表信息,则进入步骤154,否则进入步骤155。步骤154、判断文件头有效标志位tag是否等于1 ?若文件头有效标志位tag=l, 进入步骤156,否则进入步骤155。步骤155、执行apk包扫描、解析程序,然后跳到步骤157。步骤156、从存储介质文件中成功读取apk包列表信息,然后进入步骤157。步骤157、在内存中建立apk包列表信息。步骤I58、PackageManagerService (包管理服务)启动结束。其中,在具体实施时,步骤157中的apk包列表信息建立过程包括a、依 次将tagName3下的元素信息添加到tagName2层对应的列表中;b、再将tagName2层 的元素信息添加到tagNamel层对应的列表中;C、然后将tagNamel层的信息添加 到apk包的package (程序包)类的列表中;d、最后将每个包的列表信息添加到 PackageManagerService (包管理服务)的信息列表中,在该列表信息的文件头设置标志 位tag,用于标示apk包列表信息是否保存成功。如若tag=l,标示保存成功;否则, tag=_l,标示未保存或保存失败;初始建立的时候将tag设为-1。在步骤S160之后还包括在Android系统退出时将apk包列表信息保存到设备 存储介质上的文件中。下次重新开机的时候通过读取文件中保存的列表信息在内存为包 建立信息列表,代替通过扫描apk包获取apk包列表信息的方式,从而节约了 apk包的扫 描时间,进而节约了 Android系统启动的时间。
基于上述实施例的一种加速Android系统启动的方法,本发明实施例还提供了一种加速Android系统 启动的装置,如图3所示,包括
引导加载程序启动模块310,用于启动引导加载程序; 内核启动模块320,用于启动Iinux内核; 第一解析模块330,用于应用init进程解析init.rc脚本; zygote进程启动模块340,用于启动zygote进程; 系统服务启动模块350,用于启动系统服务;
其中,所述系统服务启动模块350包括apk包管理服务启动子模块400、用于启动 apk包管理服务;如图4,所述apk包管理服务启动子模块进一步包括
第一启动单元410,用于开始启动包管理服务,并通过包管理服务开始扫描、解析 apk 包;
读取判断单元420,用于判断是否从存储介质文件中读取apk包列表信息; 文件头判断单元430,用于当是从存储介质文件中读取apk包列表信息时,判断文件 头有效标志位tag是否等于1 ;
扫描解析单元440,用于执行apk包扫描、解析程序;
apk包列表读取单元450,用于当文件头有效标志位tag是等于1时,从存储介质文件 中成功读取apk包列表信息;
apk包列表建立单元460,用于在内存中建立apk包列表信息。其中,如图5所示,所述apk包列表建立单元460进一步包括
第一添加子单元461,用于依次将apk包的第三标记层下的元素信息添加到第二标记 层对应的列表中;
第二添加子单元462,用于将第二标记层的元素信息添加到第一标记层对应的列表
中;
第三添加子单元463,用于将第一标记层的信息添加到apk包的package类的列表
中;
第四添加子单元464,用于将每个包的列表信息添加到包管理服务的信息列表中,并 在该列表信息的文件头设置标志位tag,用于标示apk包列表信息是否保存成功。综上所述,本发明所提供的加速Android系统启动的方法及装置,采用了依次 将tagName3下的元素信息添加到tagName2层对应的列表中,再将tagName2层的元素信 息添加到tagNamel层对应的列表中,最后将tagNamel层的信息添加到apk包的package
(包)类的列表中的方法。最后将每个包的列表信息添加到PackageManagerService (包 管理服务)的信息列表中。通过PackageManagerService (包管理服务)的信息列表就可以控制全部apk包
的信息。在关机或系统退出的时候将PackageManagerService (包管理服务)的列表信息 保存到设备存储介质上的文件中,下次重新开机的时候通过读取文件中保存的列表信息 在内存为包建立信息列表,代替通过扫描apk包获取apk包列表信息的方式,从而节约了 apk包的扫描时间,进而节约了 Android系统启动的时间。应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来 说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利 要求的保护范围。
权利要求
1.一种加速Android系统启动的方法,其特征在于,包括 步骤S101、开始启动Android系统;进入步骤SllO ; 步骤S110、启动引导加载程序的步骤;步骤S120、启动Iinux内核的步骤;步骤S130、应用init进程解析init.rc脚本的步骤;步骤S140、启动zygote进程的步骤;步骤S150、启动系统服务的步骤;然后进入步骤S160;步骤S160、完成启动Android系统;其中,步骤S150、系统服务启动的步骤包括启动apk包管理服务的步骤,该启动apk 包管理服务的步骤,包括以下具体步骤 步骤151、开始启动包管理服务的步骤; 步骤152、包管理服务开始扫描、解析apk包的步骤;步骤153、是否从存储介质文件中读取apk包列表信息,当是时从存储介质中读取 apk包列表信息,则进入步骤154,否则进入步骤155;步骤154、判断文件头有效标志位tag是否等于1,当文件头有效标志位tag=l,进入 步骤156,否则进入步骤155;步骤155、执行apk包扫描、解析程序,然后跳到步骤157; 步骤156、从存储介质文件中成功读取apk包列表信息,然后进入步骤157; 步骤157、在内存中建立apk包列表信息; 步骤158、完成启动包管理服务。
2.根据权利要求1所述加速Android系统启动的方法,其特征在于,所述步骤157中 的apk包列表信息建立过程包括a、依次将apk包的第三标记层下的元素信息添加到第二标记层对应的列表中;b、将第二标记层的元素信息添加到第一标记层对应的列表中; C、将第一标记层的信息添加到apk包的package类的列表中;d、将每个包的列表信息添加到包管理服务的信息列表中,并在该列表信息的文件头 设置标志位tag,用于标示apk包列表信息是否保存成功。
3.根据权利要求2所述加速Android系统启动的方法,其特征在于,所述步骤d还包 括当tag=l,标示保存成功;否则,tag=_l,标示未保存或保存失败;初始建立的时候 将tag设为-1。
4.根据权利要求1所述加速Android系统启动的方法,其特征在于,所述步骤S160之 后还包括在Android系统退出时将apk包列表信息保存到设备存储介质上的文件中。
5.—种加速Android系统启动的装置,其特征在于,包括 引导加载程序启动模块,用于启动引导加载程序; 内核启动模块,用于启动Iinux内核;第一解析模块,用于应用init进程解析init.rc脚本; zygote进程启动模块,用于启动zygote进程; 系统服务启动模块,用于启动系统服务;其中,所述系统服务启动模块包括apk包管理服务启动子模块、用于启动apk包管理服务。
6.根据权利要求5所述加速Android系统启动的装置,其特征在于,所述apk包管理 服务启动子模块进一步包括第一启动单元,用于开始启动包管理服务,并通过包管理服务开始扫描、解析apk包;读取判断单元,用于判断是否从存储介质文件中读取apk包列表信息; 文件头判断单元,用于当是从存储介质文件中读取apk包列表信息时,判断文件头有 效标志位tag是否等于1 ;扫描解析单元,用于执行apk包扫描、解析程序;apk包列表读取单元,用于当文件头有效标志位tag是等于1时,从存储介质文件中 成功读取apk包列表信息;apk包列表建立单元,用于在内存中建立apk包列表信息。
7.根据权利要求6所述加速Android系统启动的装置,其特征在于,所述apk包列表 建立单元进一步包括第一添加子单元,用于依次将apk包的第三标记层下的元素信息添加到第二标记层对 应的列表中;第二添加子单元,用于将第二标记层的元素信息添加到第一标记层对应的列表中; 第三添加子单元,用于将第一标记层的信息添加到apk包的package类的列表中; 第四添加子单元,用于将每个包的列表信息添加到包管理服务的信息列表中,并在 该列表信息的文件头设置标志位tag,用于标示apk包列表信息是否保存成功。
全文摘要
本发明涉及操作系统领域,公开了一种加速Android系统启动的方法及装置。本发明通过将Android系统全部apk包的列表信息保存在设备存储介质的文件中,在系统重新启动的时候直接读取该文件中的列表信息,在内存中建立apk包的信息列表代替逐个扫描、解析apk包的方法,节约apk包的扫描、解析时间,从而使Android系统能够快速的启动。
文档编号G06F9/445GK102012832SQ20101058751
公开日2011年4月13日 申请日期2010年12月14日 优先权日2010年12月14日
发明者邹海超 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1