安卓运行环境构建的方法及装置与流程

文档序号:26101621发布日期:2021-07-30 18:12阅读:104来源:国知局
安卓运行环境构建的方法及装置与流程

本申请涉及操作系统领域,具体而言,涉及一种安卓运行环境构建的方法及装置。



背景技术:

在基于linux系统开发终端的操作系统时,由于目前的芯片研发商、驱动研发商的一些库大部分是基于安卓开发的闭源的库,因此还需要借助安卓的硬件抽象层(hardwareabstractionlayer,hal)库,因此需要在linux系统上构建安卓的运行环境。目前现有的基于linux系统的android运行环境,通常是借助lxc容器linuxcontainer等容器开源工具实现的。发明人在应用现有的方式时发现,现有的lxc等容器工具构建android运行环境的方式存在以下缺点:

lxc等工具制作容器是针对整个android系统设计的,构造android运行环境时将整个android系统放入容器中,系统设计比较臃肿,无法针对单个进程控制。另外还存在占用存储等资源过多,启动耗时长等问题。



技术实现要素:

本申请的主要目的在于提供一种安卓运行环境构建的方法及装置,解决现有的基于linux系统的android运行环境的构建存在的资源消耗多,耗时长等问题。

为了实现上述目的,根据本申请的第一方面,提供了一种安卓运行环境构建的方法。

根据本申请的安卓运行环境构建的方法包括:

当linux服务需要启动安卓服务时,linux服务通过进程间通信ipc接口向安卓环境种子进程发起创建请求,所述创建请求中至少包含需要启动的安卓服务对应的程序的路径、运行参数;

安卓环境种子进程接收到所述创建请求后,通过派生fork进程的方式运行所述安卓服务。

可选的,所述方法还包括按照下述流程在linux系统上创建所述安卓环境种子进程:

将安卓环境种子进程的文件系统与linux文件系统分离;

挂载android程序运行所需的安卓文件系统,卸载与安卓文件系统存在冲突的linux文件系统;

创建安卓程序运行所需要的基础服务进程或线程。

可选的,所述方法还包括:

根据不同的应用场景,判断是否切换安卓文件系统的根目录。

可选的,所述挂载android程序运行所需的安卓文件系统包括:

至少挂载运行安卓硬件抽象层androidhal所需要的第三方类库扩展目录vendor和供应商原生开发套件vndk的文件系统。

可选的,所述创建安卓程序运行所需要的基础服务进程或线程包括:

至少创建属性服务和服务管理器servicemanager服务。

为了实现上述目的,根据本申请的第二方面,提供了另一种安卓运行环境构建的装置。

根据本申请的安卓运行环境构建的装置包括:

请求发起模块,用于当linux服务需要启动安卓服务时,linux服务通过进程间通信ipc接口向安卓环境种子进程发起创建请求,所述创建请求中至少包含需要启动的安卓服务对应的程序的路径、运行参数;

运行模块,用于安卓环境种子进程接收到所述创建请求后,通过派生fork进程的方式运行所述安卓服务。

可选的,所述装置还包括:

种子进程创建模块,用于按照下述流程在linux系统上创建所述安卓环境种子进程:

将安卓环境种子进程的文件系统与linux文件系统分离;

挂载android程序运行所需的安卓文件系统,卸载与安卓文件系统存在冲突的linux文件系统;

创建安卓程序运行所需要的基础服务进程或线程。

可选的,所述种子进程创建模块还用于根据不同的应用场景,判断是否切换安卓文件系统的根目录。

可选的,所述种子进程创建模块,还用于:

至少挂载运行安卓硬件抽象层androidhal所需要的第三方类库扩展目录vendor和供应商原生开发套件vndk的文件系统。

可选的,所述种子进程创建模块,还用于:

至少创建属性服务和服务管理器servicemanager服务。

为了实现上述目的,根据本申请的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行上述第一方面中任意一项所述的安卓运行环境构建的方法。

为了实现上述目的,根据本申请的第四方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行上述第一方面中任意一项所述的安卓运行环境构建的方法。

在本申请实施例中,安卓运行环境构建的方法及装置中,是在linux系统上创建了轻量级的安卓运行环境,具体的是安卓环境种子进程。当linux服务需要启动安卓服务时,linux服务通过进程间通信ipc接口向安卓环境种子进程发起创建请求,安卓环境种子进程接收到所述创建请求后,通过派生fork进程的方式运行所述安卓服务。由于安卓环境种子进程的android运行环境已经配置,所以通过派生fork方式可以完整的继承android运行环境。本申请是基于linux系统的父子进程运行环境copy继承机制,利用环境种子进程派生fork运行所需的android服务进程。相比于现有的借助lxc等容器工具构建android运行环境的方式,可以大大的节省资源以及提高安卓服务启动的速度。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例提供的一种安卓运行环境构建的方法流程图;

图2是根据本申请实施例提供的另一种安卓运行环境构建的流程图;

图3根据本申请实施例提供的一种安卓运行环境构建的装置的组成框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

根据本申请实施例,提供了一种安卓运行环境构建的方法,如图1所示,该方法包括如下的步骤:

s101.当linux服务需要启动安卓服务时,linux服务通过进程间通信ipc接口向安卓环境种子进程发起创建请求。

其中,安卓环境种子进程是需要提前创建,具体的创建流程包括如下步骤:

首先,将安卓环境种子进程的文件系统与linux文件系统分离;

具体的,通过linuxunshare(clone_newns)方法,将安卓环境种子进程的文件系统与linux文件系统分离。可以通过文件路径进行区分。

其次,挂载android程序运行所需的安卓文件系统,卸载与安卓文件系统存在冲突的linux文件系统;

具体的以应用场景为安卓硬件抽象层androidhal对本步骤进行说明:挂载安卓硬件抽象层androidhal运行所需的安卓文件系统,至少包括第三方类库扩展目录vendor和供应商原生开发套件vndk的文件系统。若与linux系统的文件系统存在冲突可以将不再需要的linux文件系统卸载。另外还需要说明的是,在实际应用中,可以根据实际的应用场景挂载对应的文件系统,没有必要挂载所有的android文件系统。

最后,创建安卓程序运行所需要的基础服务进程或线程。

文件系统挂载完成后,最基础的啊安卓环境种子进程已经创建完成,但是还需要创建运行安卓程序必须的一些基础服务,比如属性服务propertyservice、服务管理器servicemanager服务等。具体的是创建基础服务对应的新的线程或派生fork新的进程。基础服务进程或线程创建完成后,最终的安卓运行环境就算是构建完成了。对于应用场景为androidhal,servicemanager服务具体可以为halhwbinderservicemanager。

在安卓运行环境构建完成后,安卓环境种子进程就可以的等待安卓服务进程的创建请求了。

具体的,当linux服务需要启动运行某一安卓服务(比如图形相关的服务等)时,linux服务通过进程间通信(inter-processcommunication,ipc)接口向安卓环境种子进程发起创建请求,其中,创建请求中至少包含需要启动的安卓服务对应的程序的路径、运行参数。ipc接口是进程间通信接口。

s102.安卓环境种子进程接收到创建请求后,通过派生fork进程的方式运行所述安卓服务。

基于上述步骤,在linux服务通过ipc接口向安卓环境种子进程发起创建请求后,安卓环境种子进程接收到创建请求,接收到创建请求后,通过fork进程的方式,创建安卓服务对应的进程或线程,并运行该创建请求对应的安卓服务的android程序。需要说明的是,由于安卓环境种子进程的android运行环境已经配置,所以通过fork方式可以完整继承android的运行环境。

需要说明的是,本申请中安卓环境种子进程只提供了一环境,而之前的lxc等容器工具需要将整个安卓系统放到一个容器中,相比于之前的容器方式,本申请中的属于轻量级的方式,降低了所需的系统资源,可以实现按需运行安卓服务进程。

还需要说明的是,本申请实施例中安卓文件系统提前挂载好了,安卓环境也搭建好了,只需要几个简单的服务以及一些安卓库就可以实现安卓服务运行。当需要运行安卓某个服务时,给安卓环境种子进程发个请求,就可以快速的启动安卓服务,其性能与linux原生服务启动无差别。

从以上的描述中,可以看出,本申请实施例的安卓运行环境构建的方法中,是在linux系统上创建了轻量级的安卓运行环境,具体的是安卓环境种子进程。当linux服务需要启动安卓服务时,linux服务通过ipc接口向安卓环境种子进程发起创建请求,安卓环境种子进程接收到所述创建请求后,通过fork进程的方式运行所述安卓服务。由于安卓环境种子进程的android运行环境已经配置,所以通过fork方式可以完整的继承android运行环境。本申请是基于linux系统的父子进程运行环境复制copy继承机制,利用环境种子进程fork运行所需的android服务进程。相比于现有的借助lxc等容器工具构建android运行环境的方式,可以大大的节省资源以及提高安卓服务启动的速度。

进一步的,对于上述实施例的补充,在实际的应用中,可以根据场景的轻重不同,可以选择切换安卓文件系统的根目录。比如,若要启动一个应用程序app则属于重服务,则可以切换安卓文件系统的根目录,如果只是一些简单的服务,则可以不需要切换安卓文件系统的根目录。

进一步的,本申请实施例提供了另一种安卓运行环境构建的流程图,如图2所示,linux初始化进程是linuxinit进程,linux服务是linuxservice,安卓种子进程是前述中的安卓环境种子进程;属性服务(propertyservice)、服务管理器(servicemanager)是管理服务,都是安卓程序运行所必需的基础服务;安卓服务(androidservice)是linux服务请求启动运行的安卓服务。具体的,在linux服务需要运行安卓服务时,通过ipc接口向安卓种子进程发送请求,安卓种子进程接收到请求后,通过派生进程(fork进程)方式创建运行安卓服务。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本申请实施例,还提供了一种用于实施上述图1方法的安卓运行环境构建的装置,如图3所示,该装置包括:

请求发起模块31,用于当linux服务需要启动安卓服务时,linux服务通过进程间通信ipc接口向安卓环境种子进程发起创建请求,所述创建请求中至少包含需要启动的安卓服务对应的程序的路径、运行参数;

运行模块32,用于安卓环境种子进程接收到所述创建请求后,通过派生fork进程的方式运行所述安卓服务。

进一步的,所述装置还包括:

种子进程创建模块33,用于按照下述流程在linux系统上创建所述安卓环境种子进程:

将安卓环境种子进程的文件系统与linux文件系统分离;

挂载android程序运行所需的安卓文件系统,卸载与安卓文件系统存在冲突的linux文件系统;

创建安卓程序运行所需要的基础服务进程或线程。

进一步的,所述种子进程创建模块33还用于根据不同的应用场景,判断是否切换安卓文件系统的根目录。

进一步的,所述种子进程创建模块33,还用于:

至少挂载运行安卓硬件抽象层androidhal所需要的第三方类库扩展目录vendor和供应商原生开发套件vndk的文件系统。

进一步的,所述种子进程创建模块33,还用于:

至少创建属性服务和服务管理器servicemanager服务。

具体的,本申请实施例的装置中各单元、模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。

本申请实施例的安卓运行环境构建的装置中,是在linux系统上创建了轻量级的安卓运行环境,具体的是安卓环境种子进程。当linux服务需要启动安卓服务时,linux服务通过ipc接口向安卓环境种子进程发起创建请求,安卓环境种子进程接收到所述创建请求后,通过fork进程的方式运行所述安卓服务。由于安卓环境种子进程的android运行环境已经配置,所以通过fork方式可以完整的继承android运行环境。本申请是基于linux系统的父子进程运行环境copy继承机制,利用环境种子进程fork运行所需的android服务进程。相比于现有的借助lxc等容器工具构建android运行环境的方式,可以大大的节省资源以及提高安卓服务启动的速度。

根据本申请实施例,还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行上述方法实施例中的安卓运行环境构建的方法。

根据本申请实施例,还提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行上述方法实施例中的安卓运行环境构建的方法。

显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1