一种插件升级的方法及装置与流程

文档序号:12270988阅读:245来源:国知局
一种插件升级的方法及装置与流程

本发明实施例涉及计算机处理技术领域,尤其涉及一种插件升级的方法及装置。



背景技术:

在软件开发中,为了方便对软件进行功能扩展,可以采用插件方式进行开发,将软件所要实现的一个一个功能封装在插件中,最后将各插件集成在软件主程序包中一同发布。

现有技术中当插件需要升级时,通过安装进行插件升级,在安装的过程中需要用户进行参与,比如需要用户进行权限确认等环节。

现有技术的不足在于:当插件升级时,在安装新的插件版本过程中需要用户进行操作。



技术实现要素:

本发明实施例提供一种插件升级的方法及装置,用以解决现有技术中的当插件升级时,在安装新的插件版本过程中需要用户进行操作的缺陷,实现升级插件过程中无需用户操作的目的。

本发明实施例提供一种插件升级的方法,包括:

确定捕获到主程序中的插件进行升级的触发事件;

确定需要升级的插件的插件版本标识;

对所述需要升级的插件通过加载所述插件版本标识的目标安卓安装包APK(Android Package)进行插件升级。

本发明实施例提供一种插件升级的装置,包括:

第一确定模块,用于确定捕获到主程序中的插件进行升级的触发事件;

第二确定模块,用于确定需要升级的插件的插件版本标识;

插件升级模块,用于对所述需要升级的插件通过加载所述插件版本标识的目标安卓安装包APK进行插件升级。

本发明实施例提供的一种插件升级的方法及装置,通过确定捕获到主程序中的插件进行升级的触发事件;对需要升级的插件通过加载插件版本标识的目标安卓安装包APK进行插件升级。通过加载APK的方式进行插件升级,可以实现升级插件过程中无需用户操作的目的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明插件升级的方法实施例流程图;

图2为本发明插件升级的方法具体实施例一流程图;

图3为本发明插件升级的方法具体实施例二流程图;

图4为本发明插件升级的装置实施例结构示意图。

具体实施方式

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

图1为插件升级的方法实施例流程图,如图所示,可以包括如下步骤:

步骤101、确定捕获到主程序中的插件进行升级的触发事件;

步骤102、确定需要升级的插件的插件版本标识;

步骤103、对所述需要升级的插件通过加载所述插件版本标识的目标安卓安装包APK进行插件升级。

对于步骤101的实施,这里提及的主程序为宿主程序,如乐视超级手机中的XX杀毒软件。插件是指附属程序,如XX杀毒软件中的“开机加速”插件、“日历”插件、“防盗”插件。首先检测是否发生主程序中的插件进行升级的触发事件,确定捕获到该触发事件,进入步骤102。

对于步骤102的实施,由于每个插件的不同版本都集成在软件主程序包中,确定需要升级的插件新的版本标识,以便于将旧版本的插件升级为新的版本的插件。版本标识可以包括版本号、版本名称等。

实施中,所述确定需要升级的插件的插件版本标识是通过以下方式确定的:

从主程序中获取需要升级的插件与主程序适配的比当前插件版本高的插件版本标识;

和/或,接收服务器发送的与主程序适配的最新插件版本标识。

具体的,确定需要升级的插件的插件版本标识有以下两种方式:

方式一:从所有插件版本中确定与主程序适配的比当前插件版本高的一个插件版本,然后获取该插件版本的版本标识。

实施中,所述与主程序适配的比当前插件版本高的插件版本为主程序所支持的比当前插件版本高的插件版本。

具体的,确定主程序支持的该插件的所有插件版本,选择比当前插件版本高的任一插件版本。这样,可以避免插件版本与主程序不适配而发生崩溃等问题,保证了升级的有效性。

方式二:接收服务器发送的与主程序适配的最新插件版本标识。

向服务器发送插件升级请求,请求中包括当前插件版本标识,当服务器确定与当前版本不同的与主程序适配的最新版本,向终端发送最新版本标识,终端接收服务器发送的最新插件版本标识。

对于步骤103的实施,每个版本的插件都有其对应的APK,对需要升级的插件加载新的插件版本对应的APK,来进行插件升级。不需要进行安装,通过加载APK便可以进行插件升级,实现升级插件过程中无需用户操作的目的。

实施中,所述加载是通过插件框架PF(Programmatic Framework,程序化购买框架)进行加载的。

实施中,所述通过插件框架PF进行加载,具体包括:

加载插件的资源;

加载插件的可执行文件;

构造插件的上下文Context;

使用所述Context获得root权限;

通过所述Context使用所述插件的可执行文件和所述插件的资源。

具体的,目前插件有两种,一种是APK,一种是dex包。当插件为APK格式,现有技术通过安装新的APK进行插件升级,本发明实施例提出通过插件框架PF加载新的APK进行插件升级。现对加载新的APK与安装新的APK的区别进行说明,加载新的APK过程中,获取插件的资源和可执行文件,并构造插件的Context(每一个插件都有一个Context),利用Context可以访问资源和可执行文件,还可以进行APK的各种权限管理,在用户不知道的情况下插件升级已经完成;安装新的APK过程中,需要用户进行权限确认以及其他操作,插件才得以升级成功。

实施中,所述加载插件的资源是基于安卓系统的AssetManager接口加载插件的资源的。

实施中,所述加载插件的可执行文件是通过安卓系统的DexClassLoader加载可执行文件的。

具体的,实现插件APK的加载,主要是两个部分,一个是APK资源的加载,另一个是DEX中可执行文件的加载,关于第一点,PF框架主要是基于Android的AssetManager接口去加载插件的资源,基于这个AssetManager再构造出Resources,有了插件的AssetManager和Resources,从而实现资源的访问;关于第二点,PF框架使用Android的DexClassLoader进行加载。

实施中,所述插件升级是通过以下任一方式进行升级的:开机升级,闲置升级,强制升级。

具体的,本发明实施例中有三种升级方式(开机升级,闲置升级,强制升级)可以实现插件升级。开机升级为系统开机的时候进行插件升级;闲置升级为插件闲置(也即插件没有被使用)的时候进行插件升级,避免插件正在使用的时候升级造成用户使用中断;强制升级为无论插件是否正在使用都强制性地升级插件。

为了更清楚地理解本发明,下面以具体实施例进行说明。

实施例一

图2为插件升级的方法具体实施例一流程图,如图所示,可以包括如下步骤:

步骤201、检测是否发生主程序中的插件进行升级的触发事件,若是,转入步骤202,若否,转入步骤201;

步骤202、确定捕获到该触发事件;

步骤203、获取当前版本标识以及主程序所支持的所有插件版本标识;

步骤204、确定主程序所支持所有插件版本比当前版本高的插件版本标识;

步骤205、确定要更新的插件版本标识为主程序所支持所有插件版本比当前版本高的任一插件版本标识;

步骤206、通过插件框架PF加载新的插件版本标识的目标APK进行插件升级。

对于步骤206的实施,实现插件APK的加载,主要是两个部分,一个是APK资源的加载,PF框架主要是基于Android的AssetManager接口去加载插件的资源,基于这个AssetManager再构造出Resources,有了插件的AssetManager和Resources,从而实现资源的访问;另一个是DEX中可执行文件的加载,PF框架使用Android的DexClassLoader进行加载。在有了资源和可执行文件的基础上,再构造插件的Context,每一个插件都有一个Context,有了Context之后,就可以使用加载到的资源和可执行文件,还可以自动获得root权限,无需用户参与,插件已经升级成功了。

实施例二

图3为插件升级的方法具体实施例二流程图,如图所示,可以包括如下步骤:

步骤301、检测是否发生主程序中的插件进行升级的触发事件,若是,转入步骤302,若否,转入步骤301;

步骤302、确定捕获到该触发事件;

步骤303、向服务器发送升级插件的请求;

步骤304、接收服务器发送的与主程序适配的最新插件版本标识;

步骤305、通过插件框架PF加载新的插件版本标识的目标APK进行插件升级。

对于步骤305的实施,实现插件APK的加载,主要是两个部分,一个是APK资源的加载,PF框架主要是基于Android的AssetManager接口去加载插件的资源,基于这个AssetManager再构造出Resources,有了插件的AssetManager和Resources,从而实现资源的访问;另一个是DEX中可执行文件的加载,PF框架使用Android的DexClassLoader进行加载。在有了资源和可执行文件的基础上,再构造插件的Context,每一个插件都有一个Context,有了Context之后,就可以使用加载到的资源和可执行文件,还可以自动获得root权限,无需用户参与,插件已经升级成功了。

基于同一发明构思,本发明实施例中还提供了一种插件升级的装置,由于这些设备解决问题的原理与一种插件升级的方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。

图4为插件升级的装置实施例结构示意图,如图所示,装置中可以包括:

第一确定模块401,用于确定捕获到主程序中的插件进行升级的触发事件;

第二确定模块402,用于确定需要升级的插件的插件版本标识;

插件升级模块403,用于对所述需要升级的插件通过加载所述插件版本标识的目标安卓安装包APK进行插件升级。

实施中,插件升级模块还可以进一步用于对所述需要升级的插件通过插件框架PF加载所述插件版本标识的目标安卓安装包APK进行插件升级。

实施中,插件升级模块还可以进一步用于

加载插件的资源;

加载插件的可执行文件;

构造插件的Context;

使用所述Context获得root权限;

通过所述Context使用所述插件的可执行文件和所述插件的资源。

实施中,插件升级模块还可以进一步用于基于安卓系统的AssetManager接口加载插件的资源。

实施中,插件升级模块还可以进一步用于通过安卓系统的DexClassLoader加载可执行文件。

实施中,插件升级模块还可以进一步用于通过以下任一方式进行插件升级:开机升级,闲置升级,强制升级。

实施中,第二确定模块还可以进一步用于通过以下方式确定需要升级的插件的插件版本标识:

从主程序中获取需要升级的插件与主程序适配的比当前插件版本高的插件版本标识;

和/或,接收服务器发送的与主程序适配的最新插件版本标识。

实施中,第二确定模块还可以进一步用于从主程序中获取需要升级的插件与主程序适配的比当前插件版本高的插件版本标识,所述与主程序适配的比当前插件版本高的插件版本为主程序所支持的比当前插件版本高的的插件版本。

本发明实施例中可以通过硬件处理器(hardware processor)来实现上述功能模块。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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