主程序中启动插件的方法及装置转让专利

申请号 : CN201510142838.9

文献号 : CN104731623B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宋照春张炅轩姚彤

申请人 : 北京奇虎科技有限公司奇智软件(北京)有限公司

摘要 :

本发明提供了一种主程序中启动插件的方法及装置。该方法包括:当接收到插件的启动指令时,获取待启动插件的当前插件标识;在对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;根据所述查找结果启动对应的插件。本发明实施例提供的技术方案可以提高插件标识的匹配率,能够实现兼容老版本,提高处理效率的目的。

权利要求 :

1.一种主程序中启动插件的方法,包括:当接收到插件的启动指令时,获取待启动插件的当前插件标识;

在对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;

根据所述查找结果启动对应的插件;

其中,根据所述查找结果启动对应的插件,包括:若所述查找结果为查找到与所述当前插件标识匹配的插件标识,则启动所述待启动插件;

若所述查找结果为未查找到与所述当前插件标识匹配的插件标识,则从所述多条插件标识中选取一条插件标识,进而根据所述选取的一条插件标识下载相应的插件,并在下载完成后进行启动。

2.根据权利要求1所述的方法,其中,从所述多条插件标识中选取一条插件标识,包括:在预先建立的插件标识与插件版本的对应关系中,查找所述多条插件标识各自对应的插件版本;

根据所述插件版本,从所述多条插件标识中选取一条插件标识。

3.根据权利要求2所述的方法,其中,若所述多条插件标识中存在多种插件类型,且每种插件类型对应一条或多条插件标识;

根据所述插件版本,从所述多条插件标识中选取一条插件标识,包括:获取所述待启动插件的类型名称;

从存在多种插件类型的所述多条插件标识中筛选出所述待启动插件的类型名称对应的至少一条插件标识;

根据所述插件版本,从所述至少一条插件标识中选取一条插件标识。

4.根据权利要求2或3所述的方法,其中,根据所述插件版本,从所述多条插件标识中选取一条插件标识,包括:从所述多条插件标识中,选取最新插件版本对应的插件标识。

5.根据权利要求1-3任一项所述的方法,其中,根据所述选取的一条插件标识下载相应的插件,包括:根据所述选取的一条插件标识,生成统一资源定位符URL;

根据所述URL下载相应的插件。

6.根据权利要求1-3任一项所述的方法,其中,在下载完成后,进行启动之前,还包括:对下载的插件进行校验,若校验通过,则启动所述下载的插件;以及若校验未通过,则输出校验失败的信息。

7.根据权利要求6所述的方法,其中,所述对下载的插件进行校验,包括:获取所述下载的插件的目标插件标识;

在所述多条插件标识中,查找与所述目标插件标识匹配的插件标识;

若查找到,则确定校验通过;

若未查找到,则确定校验未通过。

8.根据权利要求1-3任一项所述的方法,其中,所述插件标识包括下列至少之一:插件的信息摘要算法MD5值;

插件的安全哈希算法SHA1值。

9.根据权利要求1-3任一项所述的方法,其中,还包括:捕获后台插件升级事件,获取进行升级的插件的插件标识;

根据所述升级的插件的插件标识,更新所述多条插件标识。

10.根据权利要求1-3任一项所述的方法,其中,在下载完成后,进行启动之前,还包括:遍历所有启动的进程,判断是否存在启动的进程属于所述当前插件标识的插件;

若存在,则杀死所述当前插件标识的插件的启动进程,并启动新的进程以运行所述下载的插件。

11.一种主程序中启动插件的装置,包括:获取模块,适于当接收到插件的启动指令时,获取待启动插件的当前插件标识;

查找模块,适于在其对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;

启动模块,适于根据所述查找结果启动对应的插件;

其中,所述启动模块还适于:

若所述查找结果为查找到与所述当前插件标识匹配的插件标识,则启动所述待启动插件;

若所述查找结果为未查找到与所述当前插件标识匹配的插件标识,则从所述多条插件标识中选取一条插件标识,进而根据所述选取的一条插件标识下载相应的插件,并在下载完成后进行启动。

12.根据权利要求11所述的装置,其中,所述启动模块还适于:在预先建立的插件标识与插件版本的对应关系中,查找所述多条插件标识各自对应的插件版本;

根据所述插件版本,从所述多条插件标识中选取一条插件标识。

13.根据权利要求12所述的装置,其中,所述启动模块还适于:若所述多条插件标识中存在多种插件类型,且每种插件类型对应一条或多条插件标识;

获取所述待启动插件的类型名称;

从存在多种插件类型的所述多条插件标识中筛选出所述待启动插件的类型名称对应的至少一条插件标识;

根据所述插件版本,从所述至少一条插件标识中选取一条插件标识。

14.根据权利要求12或13所述的装置,其中,所述启动模块还适于:从所述多条插件标识中,选取最新插件版本对应的插件标识。

15.根据权利要求11-13任一项所述的装置,其中,所述启动模块还适于:根据所述选取的一条插件标识,生成统一资源定位符URL;

根据所述URL下载相应的插件。

16.根据权利要求11-13任一项所述的装置,其中,还包括:校验模块,适于在下载完成后,进行启动之前,对下载的插件进行校验,若校验通过,则启动所述下载的插件;以及若校验未通过,则输出校验失败的信息。

17.根据权利要求16所述的装置,其中,所述校验模块还适于:获取所述下载的插件的目标插件标识;

在所述多条插件标识中,查找与所述目标插件标识匹配的插件标识;

若查找到,则确定校验通过;

若未查找到,则确定校验未通过。

18.根据权利要求11-13任一项所述的装置,其中,所述插件标识包括下列至少之一:插件的信息摘要算法MD5值;

插件的安全哈希算法SHA1值。

19.根据权利要求11-13任一项所述的装置,其中,还包括:更新模块,适于捕获后台插件升级事件,获取进行升级的插件的插件标识;根据所述升级的插件的插件标识,更新所述多条插件标识。

20.根据权利要求11-13任一项所述的装置,其中,在下载完成后,进行启动之前,所述启动模块还适于:遍历所有启动的进程,判断是否存在启动的进程属于所述当前插件标识的插件;

若存在,则杀死所述当前插件标识的插件的启动进程,并启动新的进程以运行所述下载的插件。

21.一种终端,包括:

存储器;

一个或多个处理器;

其中,所述一个或多个处理器被配置为执行如下方法:当接收到插件的启动指令时,获取待启动插件的当前插件标识;

在对应的插件均与主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;

根据所述查找结果启动对应的插件;

其中,根据所述查找结果启动对应的插件,包括:若所述查找结果为查找到与所述当前插件标识匹配的插件标识,则启动所述待启动插件;

若所述查找结果为未查找到与所述当前插件标识匹配的插件标识,则从所述多条插件标识中选取一条插件标识,进而根据所述选取的一条插件标识下载相应的插件,并在下载完成后进行启动。

说明书 :

主程序中启动插件的方法及装置

技术领域

[0001] 本发明涉及计算机处理技术领域,特别是一种主程序中启动插件的方法及装置。

背景技术

[0002] 在软件开发中,为了方便对软件进行功能扩展,可以采用插件方式进行开发,将软件所要实现的一个一个功能封装在插件中,最后将各个插件集成在软件主程序包中一同发布。
[0003] 为了保证插件与主程序间的正常交互,需要插件与主程序适配,相关技术中,通过在主程序代码中写死主程序版本与插件版本之间的一一对应关系来实现。例如,主程序从版本1升级到版本2,此时插件也从版本1升级到版本2,相关技术中会在主程序代码中写入主程序版本2与插件版本2的一一对应关系来保证两者间的正常交互。而虽然插件版本1能够适配主程序版本2,但是由于这种写死的一一对应关系,在主程序调用时会误认为插件版本1是失效的插件而不被调用,若当前主程序包中还未存在插件版本2的相关数据,那么还需要对其进行下载,会降低处理效率,导致资源的浪费。

发明内容

[0004] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的主程序中启动插件的方法及装置。
[0005] 依据本发明的一个方面,提供了一种主程序中启动插件的方法,包括:当接收到插件的启动指令时,获取待启动插件的当前插件标识;在对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;根据所述查找结果启动对应的插件。
[0006] 可选地,根据所述查找结果启动对应的插件,包括:若所述查找结果为查找到与所述当前插件标识匹配的插件标识,则启动所述待启动插件;若所述查找结果为未查找到与所述当前插件标识匹配的插件标识,则从所述多条插件标识中选取一条插件标识,进而根据所述选取的一条插件标识下载相应的插件,并在下载完成后进行启动。
[0007] 可选地,从所述多条插件标识中选取一条插件标识,包括:在预先建立的插件标识与插件版本的对应关系中,查找所述多条插件标识各自对应的插件版本;根据所述插件版本,从所述多条插件标识中选取一条插件标识。
[0008] 可选地,若所述多条插件标识中存在多种插件类型,且每种插件类型对应一条或多条插件标识;根据所述插件版本,从所述多条插件标识中选取一条插件标识,包括:获取所述待启动插件的类型名称;从所述多条插件标识中筛选出所述待启动插件的类型名称对应的至少一条插件标识;根据所述插件版本,从所述至少一条插件标识中选取一条插件标识。
[0009] 可选地,根据所述插件版本,从所述多条插件标识中选取一条插件标识,包括:从所述多条插件标识中,选取最新插件版本对应的插件标识。
[0010] 可选地,根据所述选取的一条插件标识下载相应的插件,包括:根据所述选取的一条插件标识,生成URL(Uniform Resource Locator,统一资源定位符);根据所述URL下载相应的插件。
[0011] 可选地,所述在下载完成后,进行启动之前,还包括:对下载的插件进行校验,若校验通过,则启动所述下载的插件;以及若校验未通过,则输出校验失败的信息。
[0012] 可选地,所述对下载的插件进行校验,包括:获取所述下载的插件的目标插件标识;在所述多条插件标识中,查找与所述目标插件标识匹配的插件标识;若查找到,则确定校验通过;若未查找到,则确定校验未通过。
[0013] 可选地,所述插件标识包括下列至少之一:
[0014] 插件的MD5(Message Digest Algorithm5,信息摘要算法5)值;
[0015] 插件的SHA1(Secure Hash Algorithm1,安全哈希算法1)值。
[0016] 可选地,所述方法还包括:捕获后台插件升级事件,获取进行升级的插件的插件标识;根据所述升级的插件的插件标识,更新所述多条插件标识。
[0017] 可选地,所述在下载完成后,进行启动之前,还包括:遍历所有启动的进程,判断是否存在启动的进程属于所述当前插件标识的插件;若存在,则杀死所述当前插件标识的插件的启动进程,并启动新的进程以运行所述下载的插件。
[0018] 依据本发明的另一个方面,还提供了一种主程序中启动插件的装置,包括:
[0019] 获取模块,适于当接收到插件的启动指令时,获取待启动插件的当前插件标识;
[0020] 查找模块,适于在其对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;
[0021] 启动模块,适于根据所述查找结果启动对应的插件。
[0022] 可选地,所述启动模块还适于:若所述查找结果为查找到与所述当前插件标识匹配的插件标识,则启动所述待启动插件;若所述查找结果为未查找到与所述当前插件标识匹配的插件标识,则从所述多条插件标识中选取一条插件标识,进而根据所述选取的一条插件标识下载相应的插件,并在下载完成后进行启动。
[0023] 可选地,所述启动模块还适于:在预先建立的插件标识与插件版本的对应关系中,查找所述多条插件标识各自对应的插件版本;根据所述插件版本,从所述多条插件标识中选取一条插件标识。
[0024] 可选地,所述启动模块还适于:若所述多条插件标识中存在多种插件类型,且每种插件类型对应一条或多条插件标识;获取所述待启动插件的类型名称;从所述多条插件标识中筛选出所述待启动插件的类型名称对应的至少一条插件标识;根据所述插件版本,从所述至少一条插件标识中选取一条插件标识。
[0025] 可选地,所述启动模块还适于:从所述多条插件标识中,选取最新插件版本对应的插件标识。
[0026] 可选地,所述启动模块还适于:根据所述选取的一条插件标识,生成URL;根据所述URL下载相应的插件。
[0027] 可选地,所述装置还包括:
[0028] 校验模块,适于所述在下载完成后,进行启动之前,对下载的插件进行校验,若校验通过,则启动所述下载的插件;以及若校验未通过,则输出校验失败的信息。
[0029] 可选地,所述校验模块还适于:获取所述下载的插件的目标插件标识;在所述多条插件标识中,查找与所述目标插件标识匹配的插件标识;若查找到,则确定校验通过;若未查找到,则确定校验未通过。
[0030] 可选地,所述插件标识包括下列至少之一:
[0031] 插件的MD5值;
[0032] 插件的SHA1值。
[0033] 可选地,所述装置还包括:
[0034] 更新模块,适于捕获后台插件升级事件,获取进行升级的插件的插件标识;根据所述升级的插件的插件标识,更新所述多条插件标识。
[0035] 可选地,所述在下载完成后,进行启动之前,所述启动模块还适于:遍历所有启动的进程,判断是否存在启动的进程属于所述当前插件标识的插件;若存在,则杀死所述当前插件标识的插件的启动进程,并启动新的进程以运行所述下载的插件。
[0036] 依据本发明的又一个方面,还提供了一种终端,包括:
[0037] 存储器;
[0038] 一个或多个处理器;
[0039] 其中,所述一个或多个处理器被配置为执行如下方法:
[0040] 当接收到插件的启动指令时,获取待启动插件的当前插件标识;
[0041] 在对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;
[0042] 根据所述查找结果启动对应的插件。
[0043] 本发明实施例中,存在多条插件标识,其对应的插件(插件的类型可以是一种或多种)均与主程序适配。当接收到插件的启动指令,并获取到待启动插件的当前插件标识时,可以在多条插件标识中查找与当前插件标识匹配的插件标识,相比于现有技术中只能够使用固定的插件标识,本发明实施例提供的技术方案可以提高插件标识的匹配率。进一步地,由于查找到与当前插件标识匹配的插件标识,便可以直接启动待启动插件,查找不到与当前插件标识匹配的插件标识,进一步需要下载与主程序适配的插件,因而,本发明在插件标识匹配率较高的情况下可以减少下载的次数,提高处理效率。并且,本发明提供的多条插件标识中可以包含一些老版本插件的插件标识,这样对于待启动插件是老版本插件时,本发明依然能够查找匹配成功,从而解决了现有技术中在主程序调用时会误认为老版本插件是失效的插件而不被调用,导致资源浪费等问题,实现兼容老版本,提高处理效率的目的。
[0044] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
[0045] 根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

[0046] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0047] 图1示出了根据本发明一个实施例的主程序中启动插件的方法的流程图;
[0048] 图2示出了根据本发明另一个实施例的主程序中启动插件的方法的流程图;
[0049] 图3示出了根据本发明一个实施例的后台插件升级的方法的流程图;
[0050] 图4示出了根据本发明一个实施例的主程序中启动插件的装置的结构示意图;以及
[0051] 图5示出了根据本发明另一个实施例的主程序中启动插件的装置的结构示意图。

具体实施方式

[0052] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0053] 为解决上述技术问题,本发明提供了一种主程序中启动插件的方法。图1示出了根据本发明一个实施例的主程序中启动插件的方法的流程图。如图1所示,该方法至少包括以下步骤S102至步骤S106。
[0054] 步骤S102、当接收到插件的启动指令时,获取待启动插件的当前插件标识。
[0055] 步骤S104、在对应的插件均与主程序适配的多条插件标识中,查找与当前插件标识匹配的插件标识,得到查找结果。
[0056] 步骤S106、根据查找结果启动对应的插件。
[0057] 本发明实施例中,存在多条插件标识,其对应的插件(插件的类型可以是一种或多种)均与主程序适配。当接收到插件的启动指令,并获取到待启动插件的当前插件标识时,可以在多条插件标识中查找与当前插件标识匹配的插件标识,相比于现有技术中只能够使用固定的插件标识,本发明实施例提供的技术方案可以提高插件标识的匹配率。进一步地,由于查找到与当前插件标识匹配的插件标识,便可以直接启动待启动插件,查找不到与当前插件标识匹配的插件标识,进一步需要下载与主程序适配的插件,因而,本发明在插件标识匹配率较高的情况下可以减少下载的次数,提高处理效率。并且,本发明提供的多条插件标识中可以包含一些老版本插件的插件标识,这样对于待启动插件是老版本插件时,本发明依然能够查找匹配成功,从而解决了现有技术中在主程序调用时会误认为老版本插件是失效的插件而不被调用,导致资源浪费等问题,实现兼容老版本,提高处理效率的目的。
[0058] 上文提及的主程序,即宿主程序,如360手机卫士、360杀毒等。插件是指附属程序,如360手机卫士中的“防盗”插件、“开机加速”插件、“日历”插件,等等。另外,上文步骤S102中提及的插件标识可以是插件的MD5值或SHA1值等等。具体的,本发明实施例中通过MD5算法计算出插件的唯一的hash(哈希)值,即MD5值。MD5算法的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。当然,本发明实施例根据实际情况采用其他算法计算可执行文件的哈希值均是可行的,例如采用SHA1等,本发明对此并不限制。
[0059] 进一步地,上文步骤S104中提及的多条插件标识,其对应的插件均与主程序适配,即插件与主程序之间能够正常交互。并且,多条插件标识中可以包括一些老版本插件的插件标识,满足正常交互即可。另外,多条插件标识可以写在主程序代码中,也可以写在文本文件中,该文本文件可以存储在本地或云服务器中。
[0060] 在步骤S104查找与当前插件标识匹配的插件标识,得到查找结果之后,步骤S106中根据查找结果启动对应的插件,即根据查找结果的不同,本发明实施例中启动对应的插件的方案也有所不同,下面分别进行介绍。
[0061] 首先,若查找结果为查找到与当前插件标识匹配的插件标识,则启动待启动插件。例如,多条插件标识分别为标识1、2和3,其中标识1、2均是老版本插件,标识3是最新版本插件,当前插件标识为标识2,此时在多条插件标识(标识1、2和3)中查找到与当前插件标识(标识2)匹配的插件标识,可以直接启动当前插件标识对应的待启动插件。而现有技术中,主程序代码中写死主程序版本与最新版本插件(标识3)的一一对应关系来保证两者间的正常交互,此时当前插件标识(标识2)与最新版本插件(标识3)并不匹配,需要下载最新版本插件,这样就会降低处理效率,导致资源的浪费。
[0062] 其次,若查找结果为未查找到与当前插件标识匹配的插件标识,则从多条插件标识中选取一条插件标识,进而根据选取的一条插件标识下载相应的插件,并在下载完成后进行启动。这里,查找不到与当前插件标识匹配的插件标识的原因有多种,例如待启动插件有损坏,其当前插件标识(如MD5值)发生变化,导致匹配失败。又例如待启动插件的版本已经很旧,其满足不了与主程序的正常交互,多条插件标识中不存在该条插件标识,因而查找不到匹配的插件标识,等等。此时,需要从多条插件标识中选取一条插件标识,进而根据选取的一条插件标识下载相应的插件,其中,从多条插件标识中选取一条插件标识的方式有多种,如根据插件标识对应插件的大小进行选取,又如根据插件标识对应插件的用户评价信息进行选取,再如根据插件标识对应插件的版本信息进行选取,等等。
[0063] 在本发明的一个优选实施例中,可以在预先建立的插件标识与插件版本的对应关系中,查找多条插件标识各自对应的插件版本,进而根据插件版本,从多条插件标识中选取一条插件标识,例如从多条插件标识中,选取最新插件版本对应的插件标识。进一步地,若多条插件标识中存在多种插件类型,且每种插件类型对应一条或多条插件标识,则可以获取待启动插件的类型名称,随后从多条插件标识中筛选出待启动插件的类型名称对应的至少一条插件标识,进而根据插件版本,从至少一条插件标识中选取一条插件标识。例如,多条插件标识中存在两种插件类型,分别为插件A和插件B,如下表1所示,插件A的最新版本为2,主程序适配插件A的版本1和版本2,插件B的最新版本为1,主程序适配插件B的版本1,插件A的两个插件版本的插件标识(即MD5值)分别为A111和A222,插件B的版本1的插件标识(即MD5值)为B111。
[0064] 表1
[0065]插件的类型名称 插件版本 插件的MD5值
插件A 1 A111
插件A 2 A222
插件B 1 B111
[0066] 若待启动插件的类型名称为插件A,则可以从插件标识A111和A222中选取一条插件标识,例如选取插件A的最新插件版本2对应的插件标识A222,进而根据选取的一条插件标识下载相应的插件,并在下载完成后进行启动。需要说明的是,表1中的插件信息仅是列举的,插件信息还可以包括插件大小、简要介绍等信息,进而可以结合插件版本、插件大小、简要介绍等信息进行插件标识的选取,满足多样化的需求。
[0067] 进一步地,根据选取的一条插件标识下载相应的插件,本发明提供了一种优选的方案,在该方案中,可以根据选取的一条插件标识,生成URL,进而根据URL下载相应的插件。以表1中选取插件A的最新插件版本2对应的插件标识A222为例,假定其地址前缀为http://a.360.cn/plgs/,要下载插件A的最新插件版本2,首先拼接的URL地址为http://a.360.cn/plgs/PlgA-2.apk,其中PlgA表示插件A,-2表示插件版本2。接着,向该URL发送请求进行下载,文件名为“插件的类型名称+.apk.tmp”,不用写插件版本号,如插件A的文件名为“PlgA.apk.tmp”,对于下载成功或失败,可以进行消息提示。
[0068] 为了增加安全性,在插件下载完成后,进行启动之前,需要对插件的合法性进行校验,若校验通过,则启动下载的插件,以及若校验未通过,则输出校验失败的信息。进一步地,可以利用插件标识对下载的插件进行校验,即获取下载的插件的目标插件标识,随后在多条插件标识中,查找与目标插件标识匹配的插件标识,若查找到,则确定校验通过,可以启动下载的插件,若未查找到,则确定校验未通过,可以输出校验失败的信息。这里,下载并校验成功后,可以将文件名中的.tmp后缀去掉,如原来已下载过老版本插件,则直接覆盖。
[0069] 此外,本发明实施例中还可以捕获后台插件升级事件,获取进行升级的插件的插件标识,进而根据升级的插件的插件标识,更新多条插件标识,实现及时更新,提高查找匹配的准确率。另外,本发明还可以根据多条插件标识,在后台更新主程序中的插件,例如,比较当前插件的插件标识与多条插件标识,若多条插件标识中存在与当前插件的插件标识匹配的插件标识,则进一步判断当前插件是否为最新版本的插件,若是,则不进行更新升级,若否,则根据最新版本的插件的插件标识升级当前插件。若多条插件标识中不存在与当前插件的插件标识匹配的插件标识,则查找当前插件的最新版本,进而根据最新版本的插件的插件标识下载相应的插件。
[0070] 以上介绍了图1所示的实施例中各环节的多种实现方式,下面通过具体实施例来详细介绍实现过程。
[0071] 实施例一
[0072] 图2示出了根据本发明另一个实施例的主程序中启动插件的方法的流程图。如图2所示,该方法至少包括以下步骤S202至步骤S214。
[0073] 步骤S202、接收插件的启动指令,获取待启动插件的当前插件标识。
[0074] 步骤S204、在对应的插件均与主程序适配的多条插件标识中,查找与当前插件标识匹配的插件标识,得到查找结果,若查找结果为查找到与当前插件标识匹配的插件标识,则继续执行步骤S206;若查找结果为未查找到与当前插件标识匹配的插件标识,则继续执行步骤S208。
[0075] 步骤S206、启动待启动插件。
[0076] 步骤S208、从多条插件标识中选取一条插件标识,进而根据选取的一条插件标识下载相应的插件。
[0077] 步骤S210、对下载的插件进行校验,若校验通过,则继续执行步骤S212;若校验未通过,则继续执行步骤S214。
[0078] 步骤S212、启动下载的插件。
[0079] 在启动下载的插件之前,本发明实施例中还可以查杀进程,如果不杀进程就启动的话,可能老版本的插件还在运行,可能会出现各种意料不到的问题,如Resource Manager(资源管理)冲突等。在本发明一实施例中,查杀进程可以通过以下步骤A1-A2来实现:
[0080] 步骤A1、遍历所有启动的进程,判断是否存在启动的进程属于当前插件标识的插件,若存在,则继续执行步骤A2;若不存在,则继续执行步骤A3。
[0081] 步骤A2、杀死当前插件标识的插件的启动进程,并启动新的进程以运行下载的插件。
[0082] 在该步骤中,可以直接通过STATE的状态来判断,若存在启动的进程属于当前插件标识的插件,则调用killProcess强制将该进程杀死,之后重新创建它,确保进程运行时不会冲突。
[0083] 步骤A3、直接启动新的进程以运行下载的插件。
[0084] 步骤S214、输出校验失败的信息,返回执行步骤S208。
[0085] 本发明实施例中,在多条插件标识中查找与当前插件标识匹配的插件标识,若查找到与当前插件标识匹配的插件标识,便可以直接启动待启动插件,若查找不到与当前插件标识匹配的插件标识,则下载与主程序适配的插件。并且,在插件下载完成后,进行启动之前,对插件的合法性进行校验,增加了系统的安全性。
[0086] 实施例二
[0087] 本发明实施例中还可以捕获后台插件升级事件,获取进行升级的插件的插件标识,进而根据升级的插件的插件标识,更新多条插件标识,实现及时更新,提高查找匹配的准确率。图3示出了根据本发明一个实施例的后台插件升级的方法的流程图。如图3所示,该方法至少包括以下步骤S302至步骤S314。
[0088] 步骤S302、捕获后台插件升级事件,获取待升级的插件的插件标识。
[0089] 这里,捕获后台插件升级事件可以通过多种方式来实现,例如预先设置升级时间或者某个预先设置的升级事件被触发等等。
[0090] 步骤S304、比较待升级的插件的插件标识与多条插件标识,判断待升级的插件的插件版本是否为最新版本,若是,则继续执行步骤S306;若否,则继续执行步骤S308。
[0091] 步骤S306、不进行升级操作,返回步骤S302。
[0092] 步骤S308、从多条插件标识中选取对应插件的最新版本的插件标识,进而根据最新版本的插件标识下载相应的插件。
[0093] 步骤S310、对下载的插件进行校验,若校验通过,则继续执行步骤S312;若校验未通过,则继续执行步骤S314。
[0094] 步骤S312、利用下载的插件进行插件升级。
[0095] 步骤S314、输出校验失败的信息,返回执行步骤S308。
[0096] 本发明实施例中,根据多条插件标识,在后台更新主程序中的插件。进一步地,还可以捕获后台插件升级事件,获取进行升级的插件的插件标识,进而根据升级的插件的插件标识,更新多条插件标识,实现及时更新,提高查找匹配的准确率。
[0097] 需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。
[0098] 基于同一发明构思,本发明实施例还提供了一种主程序中启动插件的装置。图4示出了根据本发明一个实施例的主程序中启动插件的装置的结构示意图。如图4所示,该装置至少可以包括:获取模块410、查找模块420以及启动模块430。
[0099] 现介绍本发明实施例的主程序中启动插件的装置的各组成或器件的功能以及各部分间的连接关系:
[0100] 获取模块410,适于当接收到插件的启动指令时,获取待启动插件的当前插件标识;
[0101] 查找模块420,与获取模块410相耦合,适于在其对应的插件均与主程序适配的多条插件标识中,查找与当前插件标识匹配的插件标识,得到查找结果;
[0102] 启动模块430,与查找模块420相耦合,适于根据查找结果启动对应的插件。
[0103] 这里,获取模块410获取的当前插件标识可以是插件的MD5值或SHA1值等等。具体的,本发明实施例中通过MD5算法计算出插件的唯一的hash(哈希)值,即MD5值。MD5算法的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。当然,本发明实施例根据实际情况采用其他算法计算可执行文件的哈希值均是可行的,例如采用SHA1等,本发明对此并不限制。
[0104] 进一步地,查找模块420中提及的多条插件标识,其对应的插件均与主程序适配,即插件与主程序之间能够正常交互。并且,多条插件标识中可以包括一些老版本插件的插件标识,满足正常交互即可。另外,多条插件标识可以写在主程序代码中,也可以写在文本文件中,该文本文件可以存储在本地或云服务器中。
[0105] 在本发明的一个实施例中,上述启动模块430还适于:若查找结果为查找到与当前插件标识匹配的插件标识,则启动待启动插件;若查找结果为未查找到与当前插件标识匹配的插件标识,则从多条插件标识中选取一条插件标识,进而根据选取的一条插件标识下载相应的插件,并在下载完成后进行启动。
[0106] 在本发明的一个实施例中,上述启动模块430还适于:在预先建立的插件标识与插件版本的对应关系中,查找多条插件标识各自对应的插件版本;根据插件版本,从多条插件标识中选取一条插件标识。
[0107] 在本发明的一个实施例中,上述启动模块430还适于:若多条插件标识中存在多种插件类型,且每种插件类型对应一条或多条插件标识;获取待启动插件的类型名称;从多条插件标识中筛选出待启动插件的类型名称对应的至少一条插件标识;根据插件版本,从至少一条插件标识中选取一条插件标识。
[0108] 在本发明的一个实施例中,上述启动模块430还适于:从多条插件标识中,选取最新插件版本对应的插件标识。
[0109] 在本发明的一个实施例中,上述启动模块430还适于:根据选取的一条插件标识,生成URL;根据URL下载相应的插件。
[0110] 在本发明的一个实施例中,图5示出了根据本发明另一个实施例的主程序中启动插件的装置的结构示意图。如图5所示,该装置还可以包括:校验模块510,与启动模块430相耦合,适于在下载完成后,进行启动之前,对下载的插件进行校验,若校验通过,则启动下载的插件;以及若校验未通过,则输出校验失败的信息。
[0111] 在本发明的一个实施例中,上述校验模块510还适于:获取下载的插件的目标插件标识;在多条插件标识中,查找与目标插件标识匹配的插件标识;若查找到,则确定校验通过;若未查找到,则确定校验未通过。
[0112] 在本发明的一个实施例中,插件标识包括下列至少之一:
[0113] 插件的信息摘要算法MD5值;
[0114] 插件的安全哈希算法SHA1值。
[0115] 在本发明的一个实施例中,图5所示的装置还可以包括:更新模块520,与查找模块420相耦合,适于捕获后台插件升级事件,获取进行升级的插件的插件标识;根据升级的插件的插件标识,更新多条插件标识。
[0116] 在本发明的一个实施例中,在下载完成后,进行启动之前,上述启动模块430还适于:遍历所有启动的进程,判断是否存在启动的进程属于当前插件标识的插件;若存在,则杀死当前插件标识的插件的启动进程,并启动新的进程以运行下载的插件。
[0117] 基于同一发明构思,本发明实施例还提供了一种终端,包括:
[0118] 存储器;
[0119] 一个或多个处理器;
[0120] 其中,所述一个或多个处理器被配置为执行如下方法:
[0121] 当接收到插件的启动指令时,获取待启动插件的当前插件标识;
[0122] 在对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;
[0123] 根据所述查找结果启动对应的插件。
[0124] 根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
[0125] 本发明实施例中,存在多条插件标识,其对应的插件(插件的类型可以是一种或多种)均与主程序适配。当接收到插件的启动指令,并获取到待启动插件的当前插件标识时,可以在多条插件标识中查找与当前插件标识匹配的插件标识,相比于现有技术中只能够使用固定的插件标识,本发明实施例提供的技术方案可以提高插件标识的匹配率。进一步地,由于查找到与当前插件标识匹配的插件标识,便可以直接启动待启动插件,查找不到与当前插件标识匹配的插件标识,进一步需要下载与主程序适配的插件,因而,本发明在插件标识匹配率较高的情况下可以减少下载的次数,提高处理效率。并且,本发明提供的多条插件标识中可以包含一些老版本插件的插件标识,这样对于待启动插件是老版本插件时,本发明依然能够查找匹配成功,从而解决了现有技术中在主程序调用时会误认为老版本插件是失效的插件而不被调用,导致资源浪费等问题,实现兼容老版本,提高处理效率的目的。
[0126] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0127] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0128] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0129] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0130] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的主程序中启动插件的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0131] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0132] 至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
[0133] 本发明还公开了:A1、一种主程序中启动插件的方法,包括:
[0134] 当接收到插件的启动指令时,获取待启动插件的当前插件标识;
[0135] 在对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;
[0136] 根据所述查找结果启动对应的插件。
[0137] A2、根据A1所述的方法,其中,根据所述查找结果启动对应的插件,包括:
[0138] 若所述查找结果为查找到与所述当前插件标识匹配的插件标识,则启动所述待启动插件;
[0139] 若所述查找结果为未查找到与所述当前插件标识匹配的插件标识,则从所述多条插件标识中选取一条插件标识,进而根据所述选取的一条插件标识下载相应的插件,并在下载完成后进行启动。
[0140] A3、根据A2所述的方法,其中,从所述多条插件标识中选取一条插件标识,包括:
[0141] 在预先建立的插件标识与插件版本的对应关系中,查找所述多条插件标识各自对应的插件版本;
[0142] 根据所述插件版本,从所述多条插件标识中选取一条插件标识。
[0143] A4、根据A3所述的方法,其中,若所述多条插件标识中存在多种插件类型,且每种插件类型对应一条或多条插件标识;
[0144] 根据所述插件版本,从所述多条插件标识中选取一条插件标识,包括:
[0145] 获取所述待启动插件的类型名称;
[0146] 从所述多条插件标识中筛选出所述待启动插件的类型名称对应的至少一条插件标识;
[0147] 根据所述插件版本,从所述至少一条插件标识中选取一条插件标识。
[0148] A5、根据A3或A4所述的方法,其中,根据所述插件版本,从所述多条插件标识中选取一条插件标识,包括:
[0149] 从所述多条插件标识中,选取最新插件版本对应的插件标识。
[0150] A6、根据A2-A5任一项所述的方法,其中,根据所述选取的一条插件标识下载相应的插件,包括:
[0151] 根据所述选取的一条插件标识,生成统一资源定位符URL;
[0152] 根据所述URL下载相应的插件。
[0153] A7、根据A2-A6任一项所述的方法,其中,所述在下载完成后,进行启动之前,还包括:
[0154] 对下载的插件进行校验,若校验通过,则启动所述下载的插件;以及
[0155] 若校验未通过,则输出校验失败的信息。
[0156] A8、根据A7所述的方法,其中,所述对下载的插件进行校验,包括:
[0157] 获取所述下载的插件的目标插件标识;
[0158] 在所述多条插件标识中,查找与所述目标插件标识匹配的插件标识;
[0159] 若查找到,则确定校验通过;
[0160] 若未查找到,则确定校验未通过。
[0161] A9、根据A1-A8任一项所述的方法,其中,所述插件标识包括下列至少之一:
[0162] 插件的信息摘要算法MD5值;
[0163] 插件的安全哈希算法SHA1值。
[0164] A10、根据A1-A9任一项所述的方法,其中,还包括:
[0165] 捕获后台插件升级事件,获取进行升级的插件的插件标识;
[0166] 根据所述升级的插件的插件标识,更新所述多条插件标识。
[0167] A11、根据A1-A10任一项所述的方法,其中,所述在下载完成后,进行启动之前,还包括:
[0168] 遍历所有启动的进程,判断是否存在启动的进程属于所述当前插件标识的插件;
[0169] 若存在,则杀死所述当前插件标识的插件的启动进程,并启动新的进程以运行所述下载的插件。
[0170] B12、一种主程序中启动插件的装置,包括:
[0171] 获取模块,适于当接收到插件的启动指令时,获取待启动插件的当前插件标识;
[0172] 查找模块,适于在其对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;
[0173] 启动模块,适于根据所述查找结果启动对应的插件。
[0174] B13、根据B12所述的装置,其中,所述启动模块还适于:
[0175] 若所述查找结果为查找到与所述当前插件标识匹配的插件标识,则启动所述待启动插件;
[0176] 若所述查找结果为未查找到与所述当前插件标识匹配的插件标识,则从所述多条插件标识中选取一条插件标识,进而根据所述选取的一条插件标识下载相应的插件,并在下载完成后进行启动。
[0177] B14、根据B13所述的装置,其中,所述启动模块还适于:
[0178] 在预先建立的插件标识与插件版本的对应关系中,查找所述多条插件标识各自对应的插件版本;
[0179] 根据所述插件版本,从所述多条插件标识中选取一条插件标识。
[0180] B15、根据B14所述的装置,其中,所述启动模块还适于:
[0181] 若所述多条插件标识中存在多种插件类型,且每种插件类型对应一条或多条插件标识;
[0182] 获取所述待启动插件的类型名称;
[0183] 从所述多条插件标识中筛选出所述待启动插件的类型名称对应的至少一条插件标识;
[0184] 根据所述插件版本,从所述至少一条插件标识中选取一条插件标识。
[0185] B16、根据B14或B15所述的装置,其中,所述启动模块还适于:
[0186] 从所述多条插件标识中,选取最新插件版本对应的插件标识。
[0187] B17、根据B13-B16任一项所述的装置,其中,所述启动模块还适于:
[0188] 根据所述选取的一条插件标识,生成统一资源定位符URL;
[0189] 根据所述URL下载相应的插件。
[0190] B18、根据B13-B17任一项所述的装置,其中,还包括:
[0191] 校验模块,适于所述在下载完成后,进行启动之前,对下载的插件进行校验,若校验通过,则启动所述下载的插件;以及若校验未通过,则输出校验失败的信息。
[0192] B19、根据B18所述的装置,其中,所述校验模块还适于:
[0193] 获取所述下载的插件的目标插件标识;
[0194] 在所述多条插件标识中,查找与所述目标插件标识匹配的插件标识;
[0195] 若查找到,则确定校验通过;
[0196] 若未查找到,则确定校验未通过。
[0197] B20、根据B12-B19任一项所述的装置,其中,所述插件标识包括下列至少之一:
[0198] 插件的信息摘要算法MD5值;
[0199] 插件的安全哈希算法SHA1值。
[0200] B21、根据B12-B20任一项所述的装置,其中,还包括:
[0201] 更新模块,适于捕获后台插件升级事件,获取进行升级的插件的插件标识;根据所述升级的插件的插件标识,更新所述多条插件标识。
[0202] B22、根据B12-B21任一项所述的装置,其中,所述在下载完成后,进行启动之前,所述启动模块还适于:
[0203] 遍历所有启动的进程,判断是否存在启动的进程属于所述当前插件标识的插件;
[0204] 若存在,则杀死所述当前插件标识的插件的启动进程,并启动新的进程以运行所述下载的插件。
[0205] C23、一种终端,包括:
[0206] 存储器;
[0207] 一个或多个处理器;
[0208] 其中,所述一个或多个处理器被配置为执行如下方法:
[0209] 当接收到插件的启动指令时,获取待启动插件的当前插件标识;
[0210] 在对应的插件均与所述主程序适配的多条插件标识中,查找与所述当前插件标识匹配的插件标识,得到查找结果;
[0211] 根据所述查找结果启动对应的插件。