安卓应用的安装方法、装置和电子设备与流程

文档序号:12824488阅读:241来源:国知局
安卓应用的安装方法、装置和电子设备与流程

本发明涉及互联网应用技术,尤其是一种安卓应用的安装方法、装置和电子设备。



背景技术:

在现有技术中,安卓系统中不能同时运行两个相同的应用,当用户想在同一个安卓系统中,并行运行两个相同的应用程序时,由于两个相同的应用程序中的注册信息重复,系统无法接纳两个相同的应用程序的相同的注册信息,会造成应用程序的运行失败。

与当前系统中的安卓应用相同的安卓应用是不可以并行运行的,其原因是安卓系统无法认可两个相同的应用所声明的相同的注册信息,因此,在指定安卓应用已安装的情况下,与指定安卓应用的相同的安卓应用是无法成功注册到当前安卓系统中的。



技术实现要素:

本发明实施例所要解决的一个技术问题是:提供一种克服上述问题或者至少部分地解决上述问题的安卓应用的安装方法、装置和电子设备。

依据本发明的一个方面,本发明实施例提供了一种安卓应用的安装方法,包括:

响应于与当前系统中一个安卓应用相同的待安装安卓应用的安装请求,判断所有虚拟机中是否已存在与所述待安装安卓应用相同的安卓应用;所述所有虚拟机包括至少两个虚拟机;

当所有虚拟机中都已存在与所述待安装安卓应用相同的安卓应用时,构造一个新的虚拟机,将所述待安装安卓应用安装到新的虚拟机中;

当所有虚拟机中有至少一个不存在与所述待安装安卓应用相同的安卓应用的空闲虚拟机时,将所述待安装安卓应用安装到所有空闲虚拟机中的一个中。

所述所有虚拟机之间独立运行,所述所有虚拟机与当前系统之间独立运行;所述每个虚拟机中的相同安卓应用之间相互独立,所述每个虚拟机与当前系统中的相同安卓应用之间相互独立。

基于上述方法的另一实施例中,所述将所述待安装安卓应用安装到虚拟机之后,还包括:

为所述待安装安卓应用分配一个对应所述虚拟机的虚拟uid,根据所述分配的虚拟uid对所述待安装安卓应用的运行进行管理。

基于上述方法的另一实施例中,所述将所述待安装安卓应用安装到虚拟机之前,还包括:

根据所述待安装安卓应用的安装请求,获取所述待安装安卓应用对应的安装包并解析所述安装包中的配置文件,获得所述配置文件中的相关信息。

基于上述方法的另一实施例中,所述将所述待安装安卓应用安装到虚拟机中,包括:

根据所述待安装安卓应用对应的配置文件中的相关信息获取所述待安装安卓应用的权限设置信息;

按照所述权限设置信息对所述待安装安卓应用进行权限设置,并安装到虚拟机中。

基于上述方法的另一实施例中,所述判断虚拟机中是否已存在与所述待安装安卓应用相同的安卓应用,包括:

根据所述待安装安卓应用的名称查询所述虚拟机中是否已安装对应名称的安卓应用,如果所述虚拟机中已安装对应名称的安卓应用,则所述虚拟机中已存在与所述待安装安卓应用相同的安卓应用;否则,则所述虚拟机中不存在与所述待安装安卓应用相同的安卓应用;

和/或,根据所述待安装安卓应用在所述虚拟机中是否能正常安装,如果所述待安装安卓应用在所述虚拟机中不能正常安装,则所述虚拟机中已存在与所述待安装安卓应用相同的安卓应用;否则,则所述虚拟机中不存在与所述待安装安卓应用相同的安卓应用。

基于上述方法的另一实施例中,当所有虚拟机中有至少一个不存在与所述待安装安卓应用相同的安卓应用的空闲虚拟机时,所述将所述待安装安卓应用安装到所有空闲虚拟机中的一个中,包括:

从所有空闲虚拟机中随机选择一个空闲虚拟机,将所述待安装安卓应用安装到所述选择的一个空闲虚拟机中;

或者,从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机,将所述待安装安卓应用安装到所述空间最大的空闲虚拟机中。

基于上述方法的另一实施例中,所述从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机,包括:

分别获取所有空闲虚拟机对应的剩余空间,按照剩余空间大小对所有空闲虚拟机进行排序,获得所述剩余空间最大的一个空闲虚拟机。

依据本发明的另一个方面,本发明实施例提供一种安卓应用的安装装置,其特征在于,包括:

应用判断单元,用于响应于与当前系统中一个安卓应用相同的待安装安卓应用的安装请求,判断所有虚拟机中是否已存在与所述待安装安卓应用相同的安卓应用;所述所有虚拟机包括至少两个虚拟机;

应用安装单元,用于当所有虚拟机中都已存在与所述待安装安卓应用相同的安卓应用时,构造一个新的虚拟机,将所述待安装安卓应用安装到新的虚拟机中;当所有虚拟机中有至少一个不存在与所述待安装安卓应用相同的安卓应用的空闲虚拟机时,将所述待安装安卓应用安装到所有空闲虚拟机中的一个中。

依据本发明的另一个方面,本发明实施例还提供一种电子设备,包括如上所述的安卓应用的安装装置。

基于本发明上述实施例提供的安卓应用的安装方法、装置和电子设备,为克服当前系统中不能重复安装相同安卓应用的问题,提供了至少两个虚拟机,实现在一个设备中可以并行运行至少三个相同的安卓应用;并且通过判断虚拟机中是否存在待安装安卓应用,保证了在同一虚拟机中不会重复安装相同的安卓应用,并且,应需求为待安装安卓应用建立新的虚拟机,最大程度上的满足了用户安装多个相同应用并能同时运行的需求。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。

参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:

图1为本发明安卓应用的安装方法一个实施例的流程图。

图2为本发明安卓应用的安装装置一个实施例的结构示意图。

图3为本发明安卓应用的安装装置另一个实施例的结构示意图。

图4为本发明安卓应用的安装装置又一个实施例的结构示意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

图1为本发明安卓应用的安装方法一个实施例的流程图。如图1所示,该实施例方法包括:

步骤100,响应于与当前系统中一个安卓应用相同的待安装安卓应用的安装请求,判断所有虚拟机中是否已存在与待安装安卓应用相同的安卓应用,如果是,执行步骤200;否则,执行步骤300。

其中,所有虚拟机包括至少两个虚拟机,虚拟机virtualmachine指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整运行系统。具体的,在安装安卓应用时,可以采用安卓虚拟机,安卓虚拟机是为了方便开发者使用安卓环境而开发的,可以使用户在pc端(电脑上)安装运行模拟android系统,并可以在电脑端进行几乎任何手机上可以进行的操作,甚至还可以像手机一样连接电脑,被手机助手检测到,可以模拟所有官方版本的安卓系统,并且有多款皮肤和屏幕样式可供选择。

在步骤200之前还可以包括:加载待安装安卓应用的代码和资源;采用隔离技术将待安装安卓应用的安装包对应的包名进行多次虚拟分配,通过多次虚拟分配突破了现有技术只能将安装包分身出一个分身安装包的限制;在步骤200和步骤300中安装的是待安装安卓应用,可以认为是通过隔离技术虚拟分配得到的待安装安卓应用的分身。

步骤200,构造一个新的虚拟机,将待安装安卓应用安装到新的虚拟机中。

步骤300,将待安装安卓应用安装到所有空闲虚拟机中的一个中。

基于本发明上述实施例提供的安卓应用的安装方法,适用于多种场景,主要使用场景包括但不限于:商务人士,工作生活多个im号的用户,游戏玩家,练小号,微商用户,需要开很多微信或qq做营销的用户等电子设备用户。为克服当前系统中不能重复安装相同安卓应用的问题,提供了至少两个虚拟机,实现在一个设备中可以并行运行至少三个相同的安卓应用;并且通过判断虚拟机中是否存在待安装安卓应用,保证了在同一虚拟机中不会重复安装相同的安卓应用,并且,应需求为待安装安卓应用建立新的虚拟机,最大程度上的满足了用户安装多个相同应用并能同时运行的需求,用多个虚拟机来替代多个设备,使用户在移动互联网时代的通信更加轻便和高效。

本发明上述实施例对安装的多个相同安卓应用之间还实现了文件隔离,进程隔离,activitystack隔离,组件隔离及权限隔离等;上述隔离各自实现的方式不同,总体上都是参照系统对包名的隔离原则实现的,而系统对包名的隔离原则包括:按照包名来区分唯一应用,不同包名有自己的文件区域、进程名、组件等;互不干扰,系统是在framework层做了大量的工作,实现了真正的隔离,也就是说不同程序间是无法直接互相访问的;而本发明实施例中采用轻便的方式,比如:包名为com.qihoo.duokai,虚拟模块会按照次序分配相应的伪包名com.qihoo.duokai-1,com.qihoo.duokai-2,com.qihoo.duokai-3……然后根据伪包名去为每个安卓应用分身创建单独的文件、进程、activitystack等;其实同一母包的分身是可以通过特殊方式互相访问的(而不同母包我们会根据包名做简单的权限校验),母包指可以通过多次虚拟分配产生多个安卓应用分身的原安卓应用的安装包。对于每个安卓应用分身内部,它们认为自己还是com.qihoo.duokai,这个需要hook技术去拦截对应接口,让分身内部认为自己还是com.qihoo.duokai。

在本发明上述实施例的一个具体示例中,所有虚拟机之间独立运行,所有虚拟机与当前系统之间独立运行;每个虚拟机中的相同安卓应用之间相互独立,每个虚拟机与当前系统中的相同安卓应用之间相互独立。

在本发明实施例中,由于虚拟机之间和虚拟机与当前系统之间独立运行,因此不同虚拟机之间和虚拟机与当前系统之间的相同安卓应用之间可以相互通信,完全可以将其当做不同应用进行管理。

本发明安卓应用的安装方法的另一个实施例中,在上述各实施例的基础上,还包括:

为待安装安卓应用分配一个对应虚拟机的虚拟uid,根据分配的虚拟uid对待安装安卓应用的运行进行管理。

由于在虚拟机中运行的安卓应用对于当前系统来说是未知的,当前系统不会对这些安卓应用进行权限管理,为此,本实施例为每个安装的安卓应用分配了一个虚拟uid,通过该虚拟uid来对各个安卓应用的运行权限进行管理,为用户提供了增加、删除、清理等辅助功能,保证了安装在虚拟机中的安卓应用的正常运行。

本发明安卓应用的安装方法的又一个实施例中,在上述各实施例的基础上,在步骤200和步骤300将待安装安卓应用安装到虚拟机之前,还可以包括:

根据待安装安卓应用的安装请求,获取待安装安卓应用对应的安装包并解析安装包中的配置文件,获得所述配置文件中的相关信息。

在安卓系统中,每一个应用软件在被安装到安卓系统中时,该应用的安装包被安装在安卓系统中,安装包中包含配置文件,配置文件中的配置信息被相应地注册到安卓系统中,以向安卓系统声明应用在运行过程中所需要用到的组件和资源等信息。该安装包里包含了几乎所有与该应用相关的信息,比如:该应用的名称,功能数据,用户定义信息,配置文件等。这些信息描述了对应应用的属性,并保证其在系统中正常的运行。

在本发明上述实施例的一个具体示例中,在步骤200和步骤300将待安装安卓应用安装到虚拟机中的过程,具体可以包括:

根据待安装安卓应用对应的配置文件中的相关信息获取待安装安卓应用的权限设置信息;

按照权限设置信息对待安装安卓应用进行权限设置,并安装到虚拟机中。

每个安卓应用都具有其所请求的权限,对应所请求权限的权限设置信息保存在配置文件中,在安装该安卓应用时,首先要获取其对应的权限设置信息,按照权限设置信息对该安卓应用进行权限设置,当然,在安装过程中或安装完成后,用户可以在一定范围内对该权限设置进行更改,以使其更符合用户的使用习惯;相同安卓应用在不同虚拟机中其权限设置可以不同或相同。

在本发明上述各实施例的一个具体示例中,步骤100判断一个虚拟机中是否已存在与待安装安卓应用相同的安卓应用,具体可以包括:

根据待安装安卓应用的名称查询该虚拟机中是否已安装对应名称的安卓应用,如果虚拟机中已安装对应名称的安卓应用,则该虚拟机中已存在与待安装安卓应用相同的安卓应用;否则,则该虚拟机中不存在与待安装安卓应用相同的安卓应用。

通常同样的安卓应用的安装包名称与完成安装后的应用名称是对应的,因此可以通过名称进行判断,并且根据安卓应用的名称可以最直观的判断当前虚拟机中是否已安装了待安装安卓应用。

在本发明上述各实施例的一个具体示例中,步骤100判断一个虚拟机中是否已存在与待安装安卓应用相同的安卓应用,具体可以包括:

根据待安装安卓应用在虚拟机中是否能正常安装,如果待安装安卓应用在虚拟机中不能正常安装,则该虚拟机中已存在与待安装安卓应用相同的安卓应用;否则,则该虚拟机中不存在与待安装安卓应用相同的安卓应用。

安卓系统无法认可两个相同的应用所声明的相同的注册信息,因此,在指定安卓应用已安装的情况下,相同安卓应用是无法成功注册到安卓系统中的,因此,可以通过是否能正常安装来判断当前虚拟机中是否已安装了待安装安卓应用。

在本发明上述各实施例的一个具体示例中,步骤100判断一个虚拟机中是否已存在与待安装安卓应用相同的安卓应用,具体可以包括:

根据待安装安卓应用的名称查询该虚拟机中是否已安装对应名称的安卓应用,如果虚拟机中已安装对应名称的安卓应用,则该虚拟机中已存在与待安装安卓应用相同的安卓应用;否则,根据待安装安卓应用在虚拟机中是否能正常安装;

如果待安装安卓应用在虚拟机中不能正常安装,则该虚拟机中已存在与待安装安卓应用相同的安卓应用;否则,则该虚拟机中不存在与待安装安卓应用相同的安卓应用。

通过名称和是否能安装双重判断该虚拟机中是否已安装了待安装安卓应用,保证了在通过名称判断不准确的情况下,仍能判断出该虚拟机中是否已安装对应的安卓应用。

本发明安卓应用的安装方法的还一个实施例中,在上述各实施例的基础上,步骤300具体可以包括:

从所有空闲虚拟机中随机选择一个空闲虚拟机,将待安装安卓应用安装到选择的一个空闲虚拟机中;

或者,从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机,将待安装安卓应用安装到所述空间最大的空闲虚拟机中。

在本实施例中解决了将待安装安卓应用安装到至少一个空闲虚拟机中的一个的问题,如果当前只有一个空闲虚拟机,那么直接将待安装安卓应用安装到该空闲虚拟机中即可;如果当前存在至少两个空闲虚拟机,那么可以采用本实施例提供的两种方案中的任意一种,任意选择一个空闲虚拟机安装安卓应用具有随机性,可以是随机分配,也可以是用户通过操作选择;选择剩余空间大的空闲虚拟机则能达到更优化的效果,使虚拟机的空间分配更均匀,不会出现有的虚拟机由于剩余空间不足而无法运行的情况。

在本发明上述实施例的一个具体示例中,从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机,具体可以包括:

分别获取所有空闲虚拟机对应的剩余空间,按照剩余空间大小对所有空闲虚拟机进行排序,获得剩余空间最大的一个空闲虚拟机。

本示例中将空闲虚拟机按照剩余空间大小进行排序,此排序过程可以有大到小进行排序,或有小到大进行排序,排序后将在序列的最前端或最末端获得剩余空间最大的空闲虚拟机。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

图2为本发明安卓应用的安装装置一个实施例的结构示意图。该实施例的装置可用于实现本发明上述各方法实施例。如图2所示,该实施例的装置包括:

应用判断单元1,用于响应于与当前系统中一个安卓应用相同的待安装安卓应用的安装请求,判断所有虚拟机中是否已存在与待安装安卓应用相同的安卓应用;所有虚拟机包括至少两个虚拟机;

在应用判断单元1和应用安装单元3之间还可以包括:虚拟模块和分配模块,虚拟模块用于加载待安装安卓应用的代码和资源;分配模块用于采用隔离技术将待安装安卓应用的安装包对应的包名进行多次虚拟分配,通过多次虚拟分配突破了现有技术只能将安装包分身出一个分身安装包的限制。在应用安装单元3中安装的是待安装安卓应用,可以认为是通过隔离技术虚拟分配得到的待安装安卓应用的分身。

应用安装单元3,用于当所有虚拟机中都已存在与待安装安卓应用相同的安卓应用时,构造一个新的虚拟机,将待安装安卓应用安装到新的虚拟机中;当所有虚拟机中有至少一个不存在与待安装安卓应用相同的安卓应用的空闲虚拟机时,将待安装安卓应用安装到所有空闲虚拟机中的一个中。

基于本发明上述实施例提供的安卓应用的安装装置,适用于多种场景,主要使用场景包括但不限于:商务人士,工作生活多个im号的用户,游戏玩家,练小号,微商用户,需要开很多微信或qq做营销的用户等电子设备用户。为克服当前系统中不能重复安装相同安卓应用的问题,提供了至少两个虚拟机,实现在一个设备中可以并行运行至少三个相同的安卓应用;并且通过判断虚拟机中是否存在待安装安卓应用,保证了在同一虚拟机中不会重复安装相同的安卓应用,并且,应需求为待安装安卓应用建立新的虚拟机,最大程度上的满足了用户安装多个相同应用并能同时运行的需求;用多个虚拟机来替代多个设备,使用户在移动互联网时代的通信更加轻便和高效。

本发明上述实施例对安装的多个相同安卓应用之间还实现了文件隔离,进程隔离,activitystack隔离,组件隔离及权限隔离等;上述隔离各自实现的方式不同,总体上都是参照系统对包名的隔离原则实现的,而系统对包名的隔离原则包括:按照包名来区分唯一应用,不同包名有自己的文件区域、进程名、组件等;互不干扰,系统是在framework层做了大量的工作,实现了真正的隔离,也就是说不同程序间是无法直接互相访问的;而本发明实施例中采用轻便的方式,比如:包名为com.qihoo.duokai,虚拟模块会按照次序分配相应的伪包名com.qihoo.duokai-1,com.qihoo.duokai-2,com.qihoo.duokai-3……然后根据伪包名去为每个安卓应用分身创建单独的文件、进程、activitystack等;其实同一母包的分身是可以通过特殊方式互相访问的(而不同母包我们会根据包名做简单的权限校验),母包指可以通过多次虚拟分配产生多个安卓应用分身的原安卓应用的安装包。对于每个安卓应用分身内部,它们认为自己还是com.qihoo.duokai,这个需要hook技术去拦截对应接口,让分身内部认为自己还是com.qihoo.duokai。

在本发明上述实施例的一个具体示例中,所有虚拟机之间独立运行,所有虚拟机与当前系统之间独立运行;每个虚拟机中的相同安卓应用之间相互独立,每个虚拟机与当前系统中的相同安卓应用之间相互独立。

图3为本发明安卓应用的安装装置另一个实施例的结构示意图。在上述各实施例的基础上,如图3所示,本实施例装置,还包括身份分配单元4,用于为待安装安卓应用分配一个对应虚拟机的虚拟uid用户身份证明,根据分配的虚拟uid用户身份证明对待安装安卓应用的运行进行管理。

由于在虚拟机中运行的安卓应用对于当前系统来说是未知的,当前系统不会对这些安卓应用进行权限管理,为此,本实施例为每个安装的安卓应用分配了一个虚拟uid,通过该虚拟uid来对各个安卓应用的运行权限进行管理,为用户提供了增加、删除、清理等辅助功能,保证了安装在虚拟机中的安卓应用的正常运行。

图4为本发明安卓应用的安装装置又一个实施例的结构示意图。在上述各实施例的基础上,如图4所示,本实施例装置,还包括安装包解析单元2,用于根据待安装安卓应用的安装请求,获取待安装安卓应用对应的安装包并解析安装包中的配置文件,获得配置文件中的相关信息。

在安卓系统中,每一个应用软件在被安装到安卓系统中时,该应用的安装包被安装在安卓系统中,安装包中包含配置文件,配置文件中的配置信息被相应地注册到安卓系统中,以向安卓系统声明应用在运行过程中所需要用到的组件和资源等信息。该安装包里包含了几乎所有与该应用相关的信息,比如:该应用的名称,功能数据,用户定义信息,配置文件等。这些信息描述了对应应用的属性,并保证其在系统中正常的运行。

在本发明上述实施例的一个具体示例中,应用安装单元3具体用于根据待安装安卓应用对应的配置文件中的相关信息获取待安装安卓应用的权限设置信息;按照权限设置信息对待安装安卓应用进行权限设置,并安装到虚拟机中。

在本发明上述各实施例的一个具体示例中,应用判断单元1具体用于根据待安装安卓应用的名称查询虚拟机中是否已安装对应名称的安卓应用,如果虚拟机中已安装对应名称的安卓应用,则虚拟机中已存在与待安装安卓应用相同的安卓应用;否则,则虚拟机中不存在与待安装安卓应用相同的安卓应用;

和/或,根据待安装安卓应用在虚拟机中是否能正常安装,如果待安装安卓应用在虚拟机中不能正常安装,则虚拟机中已存在与待安装安卓应用相同的安卓应用;否则,则虚拟机中不存在与待安装安卓应用相同的安卓应用。

本发明安卓应用的安装装置的还一个实施例中,在上述各实施例的基础上,当所有虚拟机中有至少一个不存在与待安装安卓应用相同的安卓应用的空闲虚拟机时,应用安装单元3具体用于:

从所有空闲虚拟机中随机选择一个空闲虚拟机,将待安装安卓应用安装到选择的一个空闲虚拟机中;

或者,从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机,将待安装安卓应用安装到空间最大的空闲虚拟机中。

在本实施例中解决了将待安装安卓应用安装到至少一个空闲虚拟机中的一个的问题,如果当前只有一个空闲虚拟机,那么直接将待安装安卓应用安装到该空闲虚拟机中即可;如果当前存在至少两个空闲虚拟机,那么可以采用本实施例提供的两种方案中的任意一种,任意选择一个空闲虚拟机安装安卓应用具有随机性,可以是随机分配,也可以是用户通过操作选择;选择剩余空间大的空闲虚拟机则能达到更优化的效果,使虚拟机的空间分配更均匀,不会出现有的虚拟机由于剩余空间不足而无法运行的情况。

在本发明上述实施例的一个具体示例中,应用安装单元3从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机时,

具体用于分别获取所有空闲虚拟机对应的剩余空间,按照剩余空间大小对所有空闲虚拟机进行排序,获得剩余空间最大的一个空闲虚拟机。

依据本发明的另一个方面,本发明实施例还提供一种电子设备,包括上述任意一个实施例的安卓应用的安装装置。

在具体应用中该电子设备可以是手机等移动通信设备,或其他系统具有排他性的电子设备。

1、一种安卓应用的安装方法,包括:

响应于与当前系统中一个安卓应用相同的待安装安卓应用的安装请求,判断所有虚拟机中是否已存在与所述待安装安卓应用相同的安卓应用;所述所有虚拟机包括至少两个虚拟机;

当所有虚拟机中都已存在与所述待安装安卓应用相同的安卓应用时,构造一个新的虚拟机,将所述待安装安卓应用安装到新的虚拟机中;

当所有虚拟机中有至少一个不存在与所述待安装安卓应用相同的安卓应用的空闲虚拟机时,将所述待安装安卓应用安装到所有空闲虚拟机中的一个中。

2、根据1所述的方法,所述所有虚拟机之间独立运行,所述所有虚拟机与当前系统之间独立运行;所述每个虚拟机中的相同安卓应用之间相互独立,所述每个虚拟机与当前系统中的相同安卓应用之间相互独立。

3、根据1或2所述的方法,所述将所述待安装安卓应用安装到虚拟机之后,还包括:

为所述待安装安卓应用分配一个对应所述虚拟机的虚拟uid,根据所述分配的虚拟uid对所述待安装安卓应用的运行进行管理。

4、根据1至3任意一项所述的方法,所述将所述待安装安卓应用安装到虚拟机之前,还包括:

根据所述待安装安卓应用的安装请求,获取所述待安装安卓应用对应的安装包并解析所述安装包中的配置文件,获得所述配置文件中的相关信息。

5、根据4所述的方法,所述将所述待安装安卓应用安装到虚拟机中,包括:

根据所述待安装安卓应用对应的配置文件中的相关信息获取所述待安装安卓应用的权限设置信息;

按照所述权限设置信息对所述待安装安卓应用进行权限设置,并安装到虚拟机中。

6、根据4或5所述的方法,所述判断虚拟机中是否已存在与所述待安装安卓应用相同的安卓应用,包括:

根据所述待安装安卓应用的名称查询所述虚拟机中是否已安装对应名称的安卓应用,如果所述虚拟机中已安装对应名称的安卓应用,则所述虚拟机中已存在与所述待安装安卓应用相同的安卓应用;否则,则所述虚拟机中不存在与所述待安装安卓应用相同的安卓应用;

和/或,根据所述待安装安卓应用在所述虚拟机中是否能正常安装,如果所述待安装安卓应用在所述虚拟机中不能正常安装,则所述虚拟机中已存在与所述待安装安卓应用相同的安卓应用;否则,则所述虚拟机中不存在与所述待安装安卓应用相同的安卓应用。

7、根据1至6任意一项所述的方法,当所有虚拟机中有至少一个不存在与所述待安装安卓应用相同的安卓应用的空闲虚拟机时,所述将所述待安装安卓应用安装到所有空闲虚拟机中的一个中,包括:

从所有空闲虚拟机中随机选择一个空闲虚拟机,将所述待安装安卓应用安装到所述选择的一个空闲虚拟机中;

或者,从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机,将所述待安装安卓应用安装到所述空间最大的空闲虚拟机中。

8、根据7所述的方法,所述从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机,包括:

分别获取所有空闲虚拟机对应的剩余空间,按照剩余空间大小对所有空闲虚拟机进行排序,获得所述剩余空间最大的一个空闲虚拟机。

9、一种安卓应用的安装装置,包括:

应用判断单元,用于响应于与当前系统中一个安卓应用相同的待安装安卓应用的安装请求,判断所有虚拟机中是否已存在与所述待安装安卓应用相同的安卓应用;所述所有虚拟机包括至少两个虚拟机;

应用安装单元,用于当所有虚拟机中都已存在与所述待安装安卓应用相同的安卓应用时,构造一个新的虚拟机,将所述待安装安卓应用安装到新的虚拟机中;当所有虚拟机中有至少一个不存在与所述待安装安卓应用相同的安卓应用的空闲虚拟机时,将所述待安装安卓应用安装到所有空闲虚拟机中的一个中。

10、根据9所述的装置,所述所有虚拟机之间独立运行,所述所有虚拟机与当前系统之间独立运行;所述每个虚拟机中的相同安卓应用之间相互独立,所述每个虚拟机与当前系统中的相同安卓应用之间相互独立。

11、根据9或10所述的装置,还包括身份分配单元,用于为所述待安装安卓应用分配一个对应所述虚拟机的虚拟uid用户身份证明,根据所述分配的虚拟uid用户身份证明对所述待安装安卓应用的运行进行管理。

12、根据9至11任意一项所述的装置,还包括安装包解析单元,用于根据所述待安装安卓应用的安装请求,获取所述待安装安卓应用对应的安装包并解析所述安装包中的配置文件,获得所述配置文件中的相关信息。

13、根据12所述的装置,所述应用安装单元具体用于根据所述待安装安卓应用对应的配置文件中的相关信息获取所述待安装安卓应用的权限设置信息;按照所述权限设置信息对所述待安装安卓应用进行权限设置,并安装到虚拟机中。

14、根据12或13所述的装置,所述应用判断单元具体用于根据所述待安装安卓应用的名称查询所述虚拟机中是否已安装对应名称的安卓应用,如果所述虚拟机中已安装对应名称的安卓应用,则所述虚拟机中已存在与所述待安装安卓应用相同的安卓应用;否则,则所述虚拟机中不存在与所述待安装安卓应用相同的安卓应用;

和/或,根据所述待安装安卓应用在所述虚拟机中是否能正常安装,如果所述待安装安卓应用在所述虚拟机中不能正常安装,则所述虚拟机中已存在与所述待安装安卓应用相同的安卓应用;否则,则所述虚拟机中不存在与所述待安装安卓应用相同的安卓应用。

15、根据9至14任意一项所述的装置,当所有虚拟机中有至少一个不存在与所述待安装安卓应用相同的安卓应用的空闲虚拟机时,

所述应用安装单元具体用于从所有空闲虚拟机中随机选择一个空闲虚拟机,将所述待安装安卓应用安装到所述选择的一个空闲虚拟机中;

或者,从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机,将所述待安装安卓应用安装到所述空间最大的空闲虚拟机中。

16、根据15所述的装置,所述应用安装单元从所有空闲虚拟机中获得剩余空间最大的一个空闲虚拟机时,

具体用于分别获取所有空闲虚拟机对应的剩余空间,按照剩余空间大小对所有空闲虚拟机进行排序,获得所述剩余空间最大的一个空闲虚拟机。

17、一种电子设备,包括如9至16任意一项所述的安卓应用的安装装置。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

可能以许多方式来实现本发明的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。

本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

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