一种将安卓系统服务插件化的实现方法

文档序号:8412346阅读:249来源:国知局
一种将安卓系统服务插件化的实现方法
【技术领域】
[0001]本发明涉及到嵌入式设备上搭建安卓系统的技术领域,更具体的说,是提供了一种可方便地针对不同产品需求定制系统服务的方法,可在节省硬件资源的同时提升系统性會K。
【背景技术】
[0002]自从安卓发布第一个版本以来,系统的碎片化和兼容性一直是谷歌的工程师致力解决的问题,经历数个版本的更替,当前的版本无论是在兼容性还是稳定性上都有了极大的提升。已经兼容了手机、平板的不同规格的产品,针对不同分类设备的兼容工作也已经在最新的版本中得到体现。但随之而来的问题是庞大的服务框架使系统显得过于臃肿,占用了宝贵的硬盘空间、拖慢了系统的运行速度、消耗更多的电池电量。而这些也正是广大安卓用户一直垢病的地方。
[0003]如图1是安卓原生的服务结构图,上层服务的主要通过服务管理程序(ServiceManager)相互通讯,底层通讯的实现则是基于内核的Binder驱动完成。系统服务主要有两部分组成,一部分上层应用、服务管理的服务集中在系统服务(SystemServer)这个系统核心进程中,另外一部分功能相对独立的服务则分散在其它的本地(Native)进程中。原生系统提供了全面的功能来兼容不同平台的需求,仅SystemServer—项就启动了接近50个服务,但实际上很大一部分服务在特定硬件平台上并没有存在的必要。
[0004]图2为原生安卓启动后各个进程占用内存比例图,所采用的系统为版本为Android-4.4.2,主要用于说明纯净的安卓平台启动后各个进程所消耗的内存资源,该数据的分析结果是本发明进行性能优化工作的前提。
[0005]图3为安卓系统服务插件化流程分析,其实现方式大致可以分为三个过程分析。分别为系统服务插件化分析、系统插件化服务框架启动、系统服务调用流程。以下是调用步骤。
[0006]步骤S301、系统服务插件化分析开始。这一部分是实现安卓服务插件化的前提条件。安卓的系统服务框架博大精深,要实现插件化的服务框架必须对整个系统服务有深入的了解和分析。
[0007]步骤S302、系统服务必要性分析。安卓原生服务杂揉在一起,服务之间的依赖关系错综复杂,必须先对解除系统服务间的相互依赖关系才能实现系统服务的插件化管理。这一部分正是解除系统服务间的相互依赖关系,同时分离出系统的核心服务。图4给出了可以参与插件化的系统服务集成的分析结果。
[0008]步骤S303、系统服务占用资源分析。除了依据图2总结的系统进程占用内存资源分析结果以外,还需要梳理SystemServer进程中每个服务占用的系统资源,从而归纳出每个服务占用系统资源的贡献值。
[0009]步骤S304、系统服务配置化实现。该步骤是本发明的关键所在,依据上面两步归纳的结果为指导思想,归纳出可以参与配置化的系统服务、进程,根据硬件平台特性定义出服务对应的配置选项。编写插件化服务运行时解析框架,编写插件化服务框架。
[0010]步骤S305、系统服务配置文件编写。该步骤主要是编写配置文件编译时解析框架,以提供系统运行时插件框架读取服务配置。
[0011]步骤S306、系统服务配置化结束。至此整个系统插件化的静态实现基本完成。开发者可以根据特定的硬件平台来定义系统服务的配置文件了。
[0012]步骤S311、系统启动。该部分描述了系统运行时整个插件化服务框架的工作流程。
[0013]步骤S312、配置文件解析。配置文件的解析主要包括配置文件的加载、配置文件的合法性检查、配置文件的客制化更新等。
[0014]步骤S313、配置服务依赖性分析。该部分主要根据S302分析出的系统服务依赖规则来检查配置文件的合理性,同时给出兼容性措施。
[0015]步骤S314、启动插件式服务框架。启动S304编写的插件式启动框架。
[0016]步骤S315、启动插件式服务。根据S312和S313分析的配置文件结果,来启动对应的插件服务。
[0017]步骤S316、系统启动完成。系统服务插件框架启动成功,等待客户端调用。
[0018]步骤S321、客户端服务调用开始。该步骤描述了系统插件化服务框架下客户端调用服务的基本流程。
[0019]步骤S322、本地服务代理。每一个插件化的服务都有一个本地代理服务与之对应,以屏蔽服务插件化的技术细节。
[0020]步骤S323、插件式服务检查。检查调用的服务是否已经在插件化服务框架中启动。
[0021]步骤S324、服务依赖检查。检查调用服务所依赖的其它服务是否已经正常启动。
[0022]步骤S325、系统服务调用权限检查。检查客户端是否有调用服务相关接口的权限。
[0023]步骤S326、服务调用失败。
[0024]步骤S326、服务调用成功。
[0025]考虑到不同客户对系统的定制要求以及特定的硬件环境,在不影响系统基本功能的前提下,将系统的服务抽象成可配置化的框架,方案集成厂商可以根据其需求定制不同的服务或是添加私有服务,以到达减少系统的开销、优化用户体验的目的成为技术发展的一个方向。

【发明内容】

[0026]本发明主要提供了一种通用的将安卓系统服务插件化的实现框架,将安卓本身庞大的服务架构抽象成可配置的结构。基于本发明提供的方法,在定制不同产品的安卓系统时,可按照不同产品需求通过配置文件快速的增减系统服务,使得运行在不同硬件平台上的系统均为最精简的系统,且达到提高系统运行速度与启动速度、减少磁盘和内存占用空间、延长电池使用寿命的目的。
[0027]本发明的具体技术方案如下:
一种将安卓系统服务插件化的实现方法,其实施流程的具体步骤是:
步骤S501、安卓服务插件化开始;
步骤S502、init.rc中支持进程启动配置化。在init.rc中增加进程的启动参数描述,以支持进程启动的配置化。具体需要修改init.c中关于配置文件的解析部分。
[0028]步骤S503、AndroidManifest.xml中支持Activity启动配置化。安卓中部分启动服务是通过接收开机消息启动的,因此需要修改PackageParser中关于应用程序包的解析逻辑,以支持服务或者组件启动的配置化。
[0029]步骤S504、SystemServer中支持插件服务加载框架。SystemServer中含有大量的启动服务,为了支持插件化的服务启动,需要额外编写插件化服务加载框架。具体需要修改SystemServer中的main函数,添加插件化服务框架线程,添加服务的加载、卸载、更新、查询、权限检查逻辑。
[0030]步骤S505、pix)duCt目录下支持服务、进程的配置文件和默认值。此项工作需要在编译前进行,具体根据图4中总结的可插件化的服务添加宏选项来控制对应的服务是否启动。
[0031]步骤S506、定义各个服务之间的依赖规则。系统服务参与插件化的前提是不与依赖服务冲突,所以必须事先定义好服务之间的依赖规则,避免部分服务因为依赖服务未启动而发生错误。
[0032]步骤S507、编写系统运行时配置解析模块。配置文件是编译时生成的,该步骤实现了配置文件在运行期的解析和加载,具体需要修改系统的propertyservice服务,利用系统已有的属性查询系统来实现配置文件的转化动作。
[0033]步骤S508、系统支持运行期调试的相关服务插件化。基于最终提供给用户的系统实际是不需要任何调试模块的。系统中典型的调试服务是在SystemServer中启动的SamplingProfilerService服务,主要提供性能统计分析用。
[0034]步骤S509、电池相关模块插件化。一些安卓衍生类产品上并没有电池相关模块,所以裁剪这一部分会节省系统不必要的系统开销。具体的操作涉及到禁用SystemServer中的BatteryService和init.rc文件中启动的healthd进程。
[0035]步骤S510、Drm相关模块插件化。目前国内大部分的影像产品是没有采用采用版权加密的,所以在特定的应用环境下这一部分的相关服务也是可以裁剪的。具体的需要在init.rc中为启动进程drmserver增加配置选项。
[0036]步骤S511、电话相关模块插件化。目前安卓的众多产品中,除了手机有射频通讯模块外,其它的产品如盒子、平板、导航仪等众多设备基本是不需要电话相关模块的,所以裁剪电话模块对这些产品来说是很有意义的。具体需要裁剪SystemServer中的TelephonyRegistry,禁止 packages/services/ 下的 PhoneApp 启动,禁止 packages/apps/Mms/下的Mms中关于B00T_C0MPLETED的启动逻辑。如此整个电话系统在裁剪后的系统中不会占用任何系统资源。
[0037]步骤S512、蓝牙相关模块插件化。一些非移动设备上并没有蓝牙模块,那么针对这些产品上裁剪安卓本身的蓝牙相关支持会减少系统不必要的开销。具体的操作是在为SystemServer进程中启动的BluetoothManagerService增加配置选项。
[0038]步骤S513、状态栏相关服务插件化。除了手机、平板等产品需要状态栏相关服务外,其它的一些衍生类产品如盒子、导航仪等都不需要状态栏服务,因此有必要增加统一的选项控制这项功能。具体的操作是为SystemServer中startSystemUi函数和StatusBarManagerService服务增加配置选项,同时禁止SystemU1.apk的开机启动。
[0039]步骤S514、壁纸相关服务插件化。具体的操作一个是不启动SystemServer进程中的WallpaperManagerService服务,另外一个是处理WindowManagerService的开机流程中等待WallPapaer部分的逻辑。
[0040]步骤S515、打印相关服务插件化。具体的操作是为SystemServer进程中启动的PrintManagerService 增加配置选项。
[0041]步骤S516、锁屏相关服务插件化。具体操作是在PhoneWindowManager中禁止KeyguardServiceDelegate 的启动。同时禁止 Keyguard.apk 的启动。
[0042]步骤S517、WAP相关服务插件化。随着智能手机和网络的快速发展,WAP及WAP浏览器似乎会成为历史。具体操作是为WapPushOverSms接收开机启动消息增加配置选项。
[0043]步骤S518、服务插件化实现结束。
优点和积极效果
本发明提供的方法能满足不同客户对Android系统的定制化需求,插件化的服务可以方便地利用配置文件进行系统服务的深度定制;在满足
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1