插件下载方法及装置转让专利

申请号 : CN201510142735.2

文献号 : CN104717301B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

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

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

摘要 :

本发明提供了一种插件下载方法及装置。该方法包括:所述客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,所述云端服务器中预存有包括与所述客户端适配的多个插件信息的插件列表;接收所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息;根据所述插件信息下载所述启用失败的插件的云端文件,并解析出其中的插件文件。本发明实施例提供的技术方案能够及时、准确的获取插件信息,进而利用获取的插件信息下载与客户端适配的插件,以供后续在客户端中正常启用该插件。

权利要求 :

1.一种插件下载方法,应用于客户端,包括:

所述客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,所述云端服务器中预存有包括与所述客户端适配的多个插件信息的插件列表,所述插件列表中还包括一个或多个老版本的插件信息;

接收所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息;

根据所述插件信息下载所述启用失败的插件的云端文件,并解析出其中的插件文件,所述云端文件是指带有云端文件头的插件文件,其中,所述云端文件头为在所述插件文件的内容最前面加入的标记;

其中,所述插件列表中的插件信息还包括所述插件所能使用的最低接口版本和最高接口版本;

将所述插件所能使用的最低接口版本和最高接口版本均位于所述客户端所能支持的最低接口版本和最高接口版本的区间范围内的插件版本,确定为所述客户端与所述插件之间的接口发生变化后,所述插件与所述客户端适配的插件版本。

2.根据权利要求1所述的方法,其中,所述客户端上的插件启用失败的原因包括下列至少之一:所述启用失败的插件的插件文件在所述客户端中不存在;

所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件;

所述启用失败的插件未成功安装在所述客户端中。

3.根据权利要求2所述的方法,其中,所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件,包括:所述客户端中存在的插件文件被篡改为不合法的插件文件。

4.根据权利要求1至3任一项所述的方法,其中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。

5.根据权利要求4所述的方法,其中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。

6.根据权利要求1至3任一项所述的方法,其中,所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。

7.根据权利要求1至3任一项所述的方法,其中,根据所述插件信息下载所述启用失败的插件的云端文件,包括:判断本客户端中是否已存在所述云端文件和/或插件文件;

若是,则直接调用所述已存储的云端文件和/或插件文件;

若否,则根据所述插件信息下载所述云端文件。

8.根据权利要求1至3任一项所述的方法,其中,所述解析出其中的插件文件,包括:解析所述云端文件,获取其中的云端文件头;

对所述云端文件头进行校验;

若校验成功,则去掉所述云端文件头剩下的部分即为所述插件文件。

9.根据权利要求8所述的方法,其中,对所述云端文件头进行校验,包括:对所述云端文件头中的MD5进行校验;和/或

对所述云端文件头中的插件接口证书进行校验;和/或对所述云端文件头中的插件协议版本进行校验。

10.根据权利要求1至3任一项所述的方法,其中,根据所述插件信息下载所述启用失败的插件的云端文件,并解析出其中的插件文件之后,还包括:用解析出的插件文件覆盖客户端中的原插件文件。

11.根据权利要求1至3任一项所述的方法,其中,还包括:若所述客户端上的插件启用成功,则进入插件使用界面。

12.一种插件下载方法,应用于云端服务器,包括:接收客户端上传的插件获取请求;

在所述云端服务器预存的、包括与所述客户端适配的多个插件信息的插件列表中查找与所述插件获取请求对应的插件信息,其中,所述插件列表中还包括一个或多个老版本的插件信息;

将查找到的插件信息返回至所述客户端;

其中,所述插件列表中的插件信息还包括所述插件所能使用的最低接口版本和最高接口版本;

将所述插件所能使用的最低接口版本和最高接口版本均位于所述客户端所能支持的最低接口版本和最高接口版本的区间范围内的插件版本,确定为所述客户端与所述插件之间的接口发生变化后,所述插件与所述客户端适配的插件版本。

13.根据权利要求12所述的方法,其中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。

14.根据权利要求13所述的方法,其中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。

15.根据权利要求12至14任一项所述的方法,其中,所述云端服务器返回的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。

16.一种插件下载装置,应用于客户端,包括:

请求发送器,用于在所述客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,所述云端服务器中预存有包括与所述客户端适配的多个插件信息的插件列表,所述插件列表中还包括一个或多个老版本的插件信息;信息接收器,用于接收所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息;

下载器,用于根据所述插件信息下载所述启用失败的插件的云端文件,所述云端文件是指带有云端文件头的插件文件,其中,所述云端文件头为在所述插件文件的内容最前面加入的标记;

解析器,用于解析出下载的云端文件中的插件文件;

其中,所述插件列表中的插件信息还包括所述插件所能使用的最低接口版本和最高接口版本;

将所述插件所能使用的最低接口版本和最高接口版本均位于所述客户端所能支持的最低接口版本和最高接口版本的区间范围内的插件版本,确定为所述客户端与所述插件之间的接口发生变化后,所述插件与所述客户端适配的插件版本。

17.根据权利要求16所述的装置,其中,所述客户端上的插件启用失败的原因包括下列至少之一:所述启用失败的插件的插件文件在所述客户端中不存在;

所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件;

所述启用失败的插件未成功安装在所述客户端中。

18.根据权利要求16或17所述的装置,其中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。

19.根据权利要求18所述的装置,其中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。

20.根据权利要求16或17所述的装置,其中,所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。

21.根据权利要求16或17所述的装置,其中,所述下载器还用于:判断本客户端中是否已存在所述云端文件和/或插件文件;

若是,则直接调用所述已存储的云端文件和/或插件文件;

若否,则根据所述插件信息下载所述云端文件。

22.根据权利要求16或17所述的装置,其中,所述解析器还用于:解析所述云端文件,获取其中的云端文件头;

对所述云端文件头进行校验;

若校验成功,则去掉所述云端文件头剩下的部分即为所述插件文件。

23.根据权利要求22所述的装置,其中,所述解析器还用于:对所述云端文件头中的MD5进行校验;和/或

对所述云端文件头中的插件接口证书进行校验;和/或对所述云端文件头中的插件协议版本进行校验。

24.根据权利要求16或17所述的装置,其中,还包括:覆盖器,用于使用解析出的插件文件覆盖客户端中的原插件文件。

25.一种插件下载装置,应用于云端服务器,包括:请求接收器,用于接收客户端上传的插件获取请求;

信息查找器,用于在所述云端服务器预存的、包括与所述客户端适配的多个插件信息的插件列表中查找与所述插件获取请求对应的插件信息,其中,所述插件列表中还包括一个或多个老版本的插件信息;

信息发送器,用于将查找到的插件信息返回至所述客户端;

其中,所述插件列表中的插件信息还包括所述插件所能使用的最低接口版本和最高接口版本;

将所述插件所能使用的最低接口版本和最高接口版本均位于所述客户端所能支持的最低接口版本和最高接口版本的区间范围内的插件版本,确定为所述客户端与所述插件之间的接口发生变化后,所述插件与所述客户端适配的插件版本。

26.根据权利要求25所述的装置,其中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。

27.根据权利要求26所述的装置,其中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。

28.根据权利要求25至27任一项所述的装置,其中,所述云端服务器返回的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。

说明书 :

插件下载方法及装置

技术领域

[0001] 本发明涉及计算机处理技术领域,特别是一种插件下载方法及装置。

背景技术

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

发明内容

[0004] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的插件下载方法及装置。
[0005] 依据本发明的一个方面,提供了一种插件下载方法,应用于客户端,包括:所述客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,所述云端服务器中预存有包括与所述客户端适配的多个插件信息的插件列表;接收所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息;根据所述插件信息下载所述启用失败的插件的云端文件,并解析出其中的插件文件。
[0006] 可选地,所述客户端上的插件启用失败的原因包括下列至少之一:
[0007] 所述启用失败的插件的插件文件在所述客户端中不存在;
[0008] 所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件;
[0009] 所述启用失败的插件未成功安装在所述客户端中。
[0010] 可选地,所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件,包括:所述客户端中存在的插件文件被篡改为不合法的插件文件。
[0011] 可选地,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0012] 可选地,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0013] 可选地,所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息为URL(Uniform Resource Locator,统一资源定位符)地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0014] 可选地,根据所述插件信息下载所述启用失败的插件的云端文件,包括:判断本客户端中是否已存在所述云端文件和/或插件文件;若是,则直接调用所述已存储的云端文件和/或插件文件;若否,则根据所述插件信息下载所述云端文件。
[0015] 可选地,所述解析出其中的插件文件,包括:解析所述云端文件,获取其中的云端文件头;对所述云端文件头进行校验;若校验成功,则去掉所述云端文件头剩下的部分即为所述插件文件。
[0016] 可选地,对所述云端文件头进行校验,包括:
[0017] 对所述云端文件头中的MD5进行校验;和/或
[0018] 对所述云端文件头中的插件接口证书进行校验;和/或
[0019] 对所述云端文件头中的插件协议版本进行校验。
[0020] 可选地,根据所述插件信息下载所述启用失败的插件的云端文件,并解析出其中的插件文件之后,还包括:用解析出的插件文件覆盖客户端中的原插件文件。
[0021] 可选地,所述方法还包括:若所述客户端上的插件启用成功,则进入插件使用界面。
[0022] 依据本发明的另一个方面,提供了一种插件下载方法,应用于云端服务器,包括:接收客户端上传的插件获取请求;在所述云端服务器预存的、包括与所述客户端适配的多个插件信息的插件列表中查找与所述插件获取请求对应的插件信息;将查找到的插件信息返回至所述客户端。
[0023] 可选地,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0024] 可选地,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0025] 可选地,所述云端服务器返回的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0026] 依据本发明的又一个方面,还提供了一种插件下载装置,应用于客户端,包括:
[0027] 请求发送器,用于在所述客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,所述云端服务器中预存有包括与所述客户端适配的多个插件信息的插件列表;
[0028] 信息接收器,用于接收所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息;
[0029] 下载器,用于根据所述插件信息下载所述启用失败的插件的云端文件;
[0030] 解析器,用于解析出下载的云端文件中的插件文件。
[0031] 可选地,所述客户端上的插件启用失败的原因包括下列至少之一:
[0032] 所述启用失败的插件的插件文件在所述客户端中不存在;
[0033] 所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件;
[0034] 所述启用失败的插件未成功安装在所述客户端中。
[0035] 可选地,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0036] 可选地,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0037] 可选地,所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0038] 可选地,所述下载器还用于:判断本客户端中是否已存在所述云端文件和/或插件文件;若是,则直接调用所述已存储的云端文件和/或插件文件;若否,则根据所述插件信息下载所述云端文件。
[0039] 可选地,所述解析器还用于:解析所述云端文件,获取其中的云端文件头;对所述云端文件头进行校验;若校验成功,则去掉所述云端文件头剩下的部分即为所述插件文件。
[0040] 可选地,所述解析器还用于:
[0041] 对所述云端文件头中的MD5进行校验;和/或
[0042] 对所述云端文件头中的插件接口证书进行校验;和/或
[0043] 对所述云端文件头中的插件协议版本进行校验。
[0044] 可选地,所述装置还包括:覆盖器,用于使用解析出的插件文件覆盖客户端中的原插件文件。
[0045] 依据本发明的再一个方面,还提供了一种插件下载装置,应用于云端服务器,包括:
[0046] 请求接收器,用于接收客户端上传的插件获取请求;
[0047] 信息查找器,用于在所述云端服务器预存的、包括与所述客户端适配的多个插件信息的插件列表中查找与所述插件获取请求对应的插件信息;
[0048] 信息发送器,用于将查找到的插件信息返回至所述客户端。
[0049] 可选地,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0050] 可选地,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0051] 可选地,所述云端服务器返回的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0052] 本发明实施例中,在云端服务器预存包括与客户端适配的多个插件信息的插件列表,从而当客户端上的插件启用失败时,可以从云端服务器获取与客户端适配的插件信息,进而利用获取的插件信息下载与客户端适配的插件,以供后续在客户端中正常启用该插件,从而解决了现有技术中只能够使用固定的插件信息的插件,导致插件启用失败后无法及时、准确下载适配的插件,进而无法实现后续正常启用的问题。进一步,本发明中,云端服务器提供的与客户端适配的多个插件信息中可以包含一些老版本的插件信息,从而可以利用老版本的插件信息下载相应的插件,可以提高老版本插件的利用率,同时能够提供更多版本的插件,满足多样化的需求。此外,相对于各个客户端,云端服务器更易于实现统一管理和操作,本发明在云端服务器预存包括与客户端适配的多个插件信息的插件列表,可以及时、便捷地更新插件列表中的插件信息,从而实现给客户端提供准确的插件信息的目的。并且,由于本发明可以对云端服务器的插件信息及时更新,从而在客户端版本没有升级的情况下,可任意从云端服务器下载最新版本的插件,无需像前一代那样,需要修改客户端代码才能获得。
[0053] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
[0054] 根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

[0055] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0056] 图1示出了根据本发明一个实施例的应用于客户端的插件下载方法的流程图;
[0057] 图2示出了根据本发明一个实施例的插件版本控制示意图;
[0058] 图3示出了根据本发明一个实施例的应用于云端服务器的插件下载方法的流程图;
[0059] 图4示出了根据本发明一个实施例结合客户端和云端服务器的插件下载方法的流程图;
[0060] 图5示出了根据本发明一个实施例的应用于客户端的插件下载装置的结构示意图;
[0061] 图6示出了根据本发明另一个实施例的应用于客户端的插件下载装置的结构示意图;以及
[0062] 图7示出了根据本发明一个实施例的应用于云端服务器的插件下载装置的结构示意图。

具体实施方式

[0063] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0064] 为解决上述技术问题,本发明提供了一种插件下载方法,应用于客户端。图1示出了根据本发明一个实施例的应用于客户端的插件下载方法的流程图。如图1所示,该方法至少包括以下步骤S102至步骤S106。
[0065] 步骤S102、客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,云端服务器中预存有包括与客户端适配的多个插件信息的插件列表。
[0066] 步骤S104、接收云端服务器根据插件列表返回的、该启用失败的插件在云端服务器上对应的插件信息。
[0067] 步骤S106、根据插件信息下载该启用失败的插件的云端文件,并解析出其中的插件文件。
[0068] 上文提及的客户端可以是指某主程序,即宿主程序,如360手机卫士等。插件可以是指附属程序,如360手机卫士中的“防盗”插件、“开机加速”插件、“日历”插件,等等。另外,步骤S106中提及的插件文件表示具体的、可运行的插件文件。云端文件是指加了“云端文件头”的插件文件,其中,“云端文件头”是指在文件内容的最前面加入的标记,如插件版本、插件标识等。
[0069] 本发明实施例中,在云端服务器预存包括与客户端适配的多个插件信息的插件列表,从而当客户端上的插件启用失败时,可以从云端服务器获取与客户端适配的插件信息,进而利用获取的插件信息下载与客户端适配的插件,以供后续在客户端中正常启用该插件,从而解决了现有技术中只能够使用固定的插件信息的插件,导致插件启用失败后无法及时、准确下载适配的插件,进而无法实现后续正常启用的问题。进一步,本发明中,云端服务器提供的与客户端适配的多个插件信息中可以包含一些老版本的插件信息,从而可以利用老版本的插件信息下载相应的插件,可以提高老版本插件的利用率,同时能够提供更多版本的插件,满足多样化的需求。此外,相对于各个客户端,云端服务器更易于实现统一管理和操作,本发明在云端服务器预存包括与客户端适配的多个插件信息的插件列表,可以及时、便捷地更新插件列表中的插件信息,从而实现给客户端提供准确的插件信息的目的。并且,由于本发明可以对云端服务器的插件信息及时更新,从而在客户端版本没有升级的情况下,可任意从云端服务器下载最新版本的插件,无需像前一代那样,需要修改客户端代码才能获得。
[0070] 上文步骤S102中,客户端上的插件启用失败的原因包括多种情况,例如客户端程序异常,插件文件在客户端中不存在,插件文件不合法,插件文件未成功安装在客户端中,等等。这里,插件文件不合法可能是因为插件文件被篡改为不合法的插件文件,如插件文件被木马或病毒感染等。此外,若客户端上的插件启用成功,则直接进入插件使用界面。
[0071] 在本发明一实施例中,云端服务器中预存有包括与客户端适配的多个插件信息的插件列表,即预存有与主程序适配的多个插件信息的插件列表。此外,云端服务器还预先收集了各种可能出现的操作系统特征信息以及对应的插件信息,以便于通过将操作系统平台信息与这些预先收集的特征信息进行匹配比较,找到与操作系统平台信息匹配的特征信息,与所述特征信息对应的插件即为适合当前操作系统的插件。随后,获得所述操作系统适配的插件之后,服务器可以将插件下载地址返回给插件加载系统。例如,服务器可以返回插件的配置结构,其中包括了URL节点,该URL节点即为该插件的下载地址。
[0072] 进一步,步骤S102提及的插件列表中包括插件相关的插件信息,如插件名、插件版本、插件唯一标识和插件下载地址。这里,插件唯一标识可以是插件的MD5(Message Digest Algorithm5,信息摘要算法5)值或SHA1(Secure Hash Algorithm1,安全哈希算法1)值等等。具体的,本发明实施例中通过MD5算法计算出插件的唯一的hash(哈希)值,即MD5值。MD5算法的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。当然,本发明实施例根据实际情况采用其他算法计算可执行文件的哈希值均是可行的,例如采用SHA1等,本发明对此并不限制。如下表1所示,插件列表中包括插件A和插件B,其中,插件A的最新版本为2,客户端适配插件A的版本1和版本2,插件B的最新版本为
1,客户端适配插件B的版本1,插件A的两个插件版本的插件唯一标识(如MD5值)分别为A111和A222,插件B的版本1的插件唯一标识(如MD5值)为B111。
[0073] 表1
[0074]插件名 插件版本 插件唯一标识 插件下载地址
插件A 1 A111 http://a.360.cn/a.apk
插件A 2 A222 http://a.360.cn/a2.apk
插件B 1 B111 http://a.360.cn/b.apk
[0075] 此外,插件列表中的插件信息还可以包括插件大小、插件简介、适配主程序、最低版本、兼容版本等插件信息,从而云端服务器可以结合插件大小、插件简介等信息进行插件的选取,将选取的插件的插件信息返回给客户端;或者,云端服务器将插件大小、插件简介等信息返回给客户端,客户端根据这些信息进行插件的选取,进而下载选取的插件。并且,由于提供最低版本、兼容版本等更多版本的插件,从而可以满足多样化的需求。如下表2所示,插件列表中的插件信息包括了插件所能使用的最低接口版本和最高接口版本。
[0076] 表2
[0077]
[0078] 本发明实施例中提供了插件版本控制方案,从而可以在客户端与插件之间的接口发生变化后,判断插件版本与客户端版本是否适配。即可以获取客户端所能支持的最低接口版本和最高接口版本、以及插件的各插件版本所能使用的最低接口版本和最高接口版本,随后在插件的各插件版本中,将其所能使用的最低接口版本和最高接口版本均位于客户端所能支持的最低接口版本和最高接口版本的区间范围内的插件版本,确定为客户端与插件之间的接口发生变化后与客户端适配的插件版本。这里提及的与客户端适配的插件版本,是指该插件版本与客户端之间的接口能够进行正常交互。并且,如果需要插件使用客户端提供的新的接口,或者需要删除一些过老的客户端接口,那么只需要调整客户端所能支持的最低接口版本,就可以让一些老版本的插件自发的“下线”,并更新到新版本。
[0079] 以下结合图2详细说明插件版本控制方案。图2中,(1)表示版本的演进,从左向右版本越来越新(或高);(2)表示客户端所能支持的最低接口版本,又称兼容版本,该信息可以写在客户端代码中或通过其他形式记载;(3)表示客户端所能支持的最高接口版本,又称HOST(主机)版本,该信息也可以写在客户端代码中或通过其他形式记载;(4)表示插件所能使用的最低接口版本,该信息可以写在插件的配置信息中或通过其他形式记载;(5)表示插件所能使用的最高接口版本,该信息也可以写在插件的配置信息中或通过其他形式记载。
[0080] 如图2所示,当插件所能使用的最低接口版本和最高接口版本均落在客户端所能支持的最低接口版本和最高接口版本的区间范围内,也可以相等,可以认定该插件版本有效,即该插件版本与客户端版本适配。具体地,图2中,<1>为有效插件版本,该插件版本所能使用的最低接口版本和最高接口版本相同,且都在客户端所能支持的最低接口版本和最高接口版本区间范围内,这是通常插件很少涉及删改接口的情况。<2>为有效插件版本,该插件版本所能使用的最低接口版本和最高接口版本不同,但都在客户端所能支持的最低接口版本和最高接口版本区间范围内,一般认为是对插件的接口进行了调整,但对当前客户端没有影响,满足插件与客户端适配的条件。<3>为无效插件版本,即插件版本与客户端版本不适配,补充了<2>的一种情形,插件所能使用的最高接口版本进行了调整,当前客户端版本不再兼容。一般而言,调整插件所能使用的最高接口版本,是为了使用客户端提供的新的接口,而这时候,如果仍使用老的客户端,则会出现插件与客户端不适配。<4>为无效插件版本,也即插件版本与客户端版本不适配,这里补充了<2>的另一种情形,如果需要插件使用客户端提供的新的接口,或者需要删除一些过老的客户端接口,那么只需要调整客户端所能支持的最低接口版本,就可以让一些老版本的插件自发的“下线”,并更新到新版本。
[0081] 结合以上关于插件版本控制方案的描述,可以通过一具体实施例来详细说明。以表2所示为例,在客户端与插件之间的接口发生了变化,若客户端所能支持的最低接口版本为1,最高接口版本为1,那么能够与客户端适配的插件版本为插件A的版本1。若客户端所能支持的最低接口版本为1,最高接口版本为2,那么能够与客户端适配的插件版本为插件A的版本1和插件B的版本1。若客户端所能支持的最低接口版本为2,最高接口版本为3,那么能够与客户端适配的插件版本为插件A的版本2。
[0082] 在步骤S104中,接收云端服务器根据插件列表返回的、该启用失败的插件在云端服务器上对应的插件信息,若云端服务器根据插件列表返回的、该启用失败的插件在云端服务器上对应的插件信息为URL地址时,该URL地址后缀可以携带有插件名、主程序、最低和兼容版本等信息,从而可以根据这些信息下载相应的插件。例如,插件列表中的插件在云端服务器的固定的URL地址为http://a.360.cn/plgs/list.php,在其后缀需带上插件名后的URL地址为http://a.360.cn/plgs/list.php?plg=PlgA。
[0083] 在步骤S104接收到对应的插件信息后,步骤S106中根据插件信息下载该启用失败的插件的云端文件,本发明提供了一种优选的方案,在该方案中,可以判断本客户端中是否已存在该云端文件和/或插件文件,若是,则直接调用已存储的云端文件和/或插件文件,以及若否,则根据插件信息下载云端文件,从而确保不会重复下载云端文件和/或插件文件,不浪费流量。进一步,为了提高安全性,在解析出其中的插件文件时,解析云端文件,获取其中的云端文件头,对云端文件头进行校验,若校验成功,则去掉云端文件头剩下的部分即为插件文件,若校验失败,则输出校验失败的信息。这里,对云端文件头进行校验可以采用多种方式,如对云端文件头中的MD5进行校验,或者对云端文件头中的插件接口证书进行校验,或者对云端文件头中的插件协议版本进行校验。
[0084] 此外,根据插件信息下载该启用失败的插件的云端文件,并解析出其中的插件文件之后,使用解析出的插件文件覆盖客户端中的原插件文件。
[0085] 在本发明另一实施例中,在步骤S106根据插件信息下载该启用失败的插件的云端文件,并解析出其中的插件文件之后,还可以根据插件文件启动相应的插件。在根据插件文件启动相应的插件之前,可以先查杀进程,如果不杀进程就启动的话,可能老版本的插件还在运行,可能会出现各种意料不到的问题,如Resource Manager(资源管理)冲突等。因此,可以查找是否存在老版本的插件对应的启动进程,若存在,则使用该进程进行插件的启动,若不存在,则需要查找空闲的进程,进而分配该空闲的进程进行插件的启动。
[0086] 在本发明实施例中,可以通过预留进程,以实现插件可自由在独立进程中使用,可以形象地称之为“占坑”。在客户端主程序中的AndroidManifest.xml中预留多种“坑”,全部以Provider的形式来展现,其中,ProviderX中的X是个数字,代表应跑在哪个进程里,如Provider0表示跑在loader0进程,Provider1表示跑在loader1进程。坑位列表的注册比较简单,只需要在代码中写死原在AndroidManifest.xml中的坑位即可,在应用程序或插件启动时(Application.onCreate)调用。每一个进程坑位至少包括以下信息:
[0087] (1)ID:该进程的编号,如loader0的ID为0,以此类推;
[0088] (2)state:进程状态;
[0089] (3)modified:进程启动和修改Service、Activity等状态的时间;
[0090] (4)plugin:该进程对应的插件名;
[0091] (5)pid:插件在系统中的进程PID;
[0092] (6)activities:Activity的使用数量;
[0093] (7)services:Service的使用数量;
[0094] (8)binders:Service-Binder的使用数量。
[0095] 它们在各个地方都有赋值的情况,其中modified字段所有地方都会被赋值。下面分别举例:
[0096] 1、进入卫士时,会在Application.attachBaseContext中,初始化该进程的上述信息,将state设置为STATE_UNUSED;
[0097] 2、某个进程启动时,会在Application.onCreate时,初始化该进程的其它信息,并将state设置为STATE_ALLOCATED。
[0098] 3、Service创建和销毁时,这就要求所有插件的Service,必须在Service.onCreate时修改进程信息,将services字段加1。同样地,在Service.onDestroy时,将该字段减1,并将State字段改为STATE_RUNNING。
[0099] 4、Service绑定或解绑时,类似,只不过是onBind和onUnbind,对应的字段是binders。
[0100] 5、Activity创建和销毁时,等同于Service,只不过字段对应为activities。
[0101] 下面详细介绍分配进程的步骤:首先通过遍历“已用进程列表”(ALL对象),寻找某个正在运行的进程是否属于该插件,如果是,则直接返回分配结果,无需分配新的。也就是说,插件使用过进程,即之前在用,但后来不用了的情况,可以通过直接判断STATE来断定,此时需要调用killProcess强制将该进程杀死,然后重新创建它,以确保进程纯净。如果不存在正在运行的进程属于该插件,则判断是否存在空闲的进程(没用过),或不再使用(连插件都不再绑定了),如果否,则杀掉再利用;如果是,则直接分配空闲的进程。
[0102] 本实施例中,实现了及时处理运行插件的进程,避免出现插件之间进程的冲突问题,从而保证了插件的独立运行,减少系统内存的占用。
[0103] 相应的,本发明提供了一种插件下载方法,应用于云端服务器。图3示出了根据本发明一个实施例的应用于云端服务器的插件下载方法的流程图。如图3所示,该方法至少包括以下步骤S302至步骤S306。
[0104] 步骤S302、接收客户端上传的插件获取请求。
[0105] 步骤S304、在云端服务器预存的、包括与客户端适配的多个插件信息的插件列表中查找与插件获取请求对应的插件信息。
[0106] 步骤S306、将查找到的插件信息返回至客户端。
[0107] 本发明实施例中,在云端服务器预存包括与客户端适配的多个插件信息的插件列表,从而当客户端上的插件启用失败时,可以从云端服务器获取与客户端适配的插件信息,进而利用获取的插件信息下载与客户端适配的插件,以供后续在客户端中正常启用该插件,从而解决了现有技术中只能够使用固定的插件信息的插件,导致插件启用失败后无法及时、准确下载适配的插件,进而无法实现后续正常启用的问题。
[0108] 上述步骤S304提及的插件列表中包括插件相关的插件信息,如插件名、插件版本、插件唯一标识和插件下载地址,还可以包括插件大小、插件简介、适配主程序、最低版本、兼容版本等插件信息,可以参见前文关于插件信息的介绍,此处不再赘述。
[0109] 进一步,云端服务器提供的与客户端适配的多个插件信息中可以包含一些老版本的插件信息,若客户端与插件之间的接口发生变化,则可以根据插件版本控制方案判断插件版本与客户端版本是否适配。关于插件版本控制方案的说明可以参见前文,此处不再赘述。
[0110] 下面结合客户端和云端服务器详细介绍本发明插件下载的实现过程。
[0111] 图4示出了根据本发明一个实施例结合客户端和云端服务器的插件下载方法的流程图。如图4所示,该方法至少包括以下步骤S402至步骤S416。
[0112] 步骤S402、客户端启动其上的插件,若客户端上的插件启用成功,则继续执行步骤S404;反之,若客户端上的插件启用失败,则继续执行步骤S406。
[0113] 这里,客户端上的插件启用失败的原因包括多种情况,例如客户端程序异常,插件文件在客户端中不存在,插件文件不合法,插件文件未成功安装在客户端中,等等。这里,插件文件不合法可能是因为插件文件被篡改为不合法的插件文件,如插件文件被木马或病毒感染等。
[0114] 步骤S404、客户端直接进入插件使用界面。
[0115] 步骤S406、客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,云端服务器中预存有包括与客户端适配的多个插件信息的插件列表。
[0116] 这里,插件列表中包括插件相关的插件信息,如插件名、插件版本、插件唯一标识和插件下载地址。此外,插件列表中的插件信息还可以包括插件大小、插件简介、适配主程序、最低版本、兼容版本等插件信息,从而云端服务器可以结合插件大小、插件简介等信息进行插件的选取,将选取的插件的插件信息返回给客户端;或者,云端服务器将插件大小、插件简介等信息返回给客户端,客户端根据这些信息进行插件的选取,进而下载选取的插件。并且,由于提供最低版本、兼容版本等更多版本的插件,从而可以满足多样化的需求。
[0117] 步骤S408、云端服务器接收客户端上传的插件获取请求。
[0118] 步骤S410、在云端服务器预存的、包括与客户端适配的多个插件信息的插件列表中查找与插件获取请求对应的插件信息。
[0119] 云端服务器提供的与客户端适配的多个插件信息中可以包含一些老版本的插件信息,若客户端与插件之间的接口发生变化,则可以根据插件版本控制方案判断插件版本与客户端版本是否适配。
[0120] 步骤S412、将查找到的插件信息返回至客户端。
[0121] 步骤S414、接收云端服务器根据插件列表返回的、该启用失败的插件在云端服务器上对应的插件信息。
[0122] 步骤S416、根据插件信息下载该启用失败的插件的云端文件,并解析出其中的插件文件。
[0123] 在步骤S416中,根据插件信息下载该启用失败的插件的云端文件,本发明提供了一种优选的方案,在该方案中,可以判断本客户端中是否已存在该云端文件和/或插件文件,若是,则直接调用已存储的云端文件和/或插件文件,以及若否,则根据插件信息下载云端文件,从而确保不会重复下载云端文件和/或插件文件,不浪费流量。进一步,为了提高安全性,在解析出其中的插件文件时,解析云端文件,获取其中的云端文件头,对云端文件头进行校验,若校验成功,则去掉云端文件头剩下的部分即为插件文件,若校验失败,则输出校验失败的信息。这里,对云端文件头进行校验可以采用多种方式,如对云端文件头中的MD5进行校验,或者对云端文件头中的插件接口证书进行校验,或者对云端文件头中的插件协议版本进行校验。
[0124] 本实施例中,当客户端上的插件启用成功,则可以直接进入插件使用界面;当客户端上的插件启用失败时,可以从云端服务器获取与客户端适配的插件信息,进而利用获取的插件信息下载与客户端适配的插件,以供后续在客户端中正常启用该插件。并且,云端服务器提供的与客户端适配的多个插件信息中可以包含一些老版本的插件信息,从而可以利用老版本的插件信息下载相应的插件,可以提高老版本插件的利用率,同时能够提供更多版本的插件,满足多样化的需求。进一步,若客户端与插件之间的接口发生变化,则可以根据插件版本控制方案判断插件版本与客户端版本是否适配,实现给客户端提供准确的插件信息的目的。
[0125] 需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。
[0126] 基于同一发明构思,本发明实施例还提供了一种插件下载装置,应用于客户端。图5示出了根据本发明一个实施例的应用于客户端的插件下载装置的结构示意图。如图5所示,该装置至少可以包括:请求发送器510、信息接收器520、下载器530以及解析器540。
[0127] 现介绍本发明实施例的应用于客户端的插件下载装置的各组成或器件的功能以及各部分间的连接关系:
[0128] 请求发送器510,用于在所述客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,所述云端服务器中预存有包括与所述客户端适配的多个插件信息的插件列表;
[0129] 信息接收器520,与请求发送器510相耦合,用于接收所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息;
[0130] 下载器530,与信息接收器520相耦合,用于根据所述插件信息下载所述启用失败的插件的云端文件;
[0131] 解析器540,与下载器530相耦合,用于解析出下载的云端文件中的插件文件。
[0132] 在本发明的一个实施例中,所述客户端上的插件启用失败的原因包括下列至少之一:
[0133] 所述启用失败的插件的插件文件在所述客户端中不存在;
[0134] 所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件;
[0135] 所述启用失败的插件未成功安装在所述客户端中。
[0136] 在本发明的一个实施例中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0137] 在本发明的一个实施例中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0138] 在本发明的一个实施例中,所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0139] 在本发明的一个实施例中,上述下载器530还用于:
[0140] 判断本客户端中是否已存在所述云端文件和/或插件文件;
[0141] 若是,则直接调用所述已存储的云端文件和/或插件文件;
[0142] 若否,则根据所述插件信息下载所述云端文件。
[0143] 在本发明的一个实施例中,上述解析器540还用于:
[0144] 解析所述云端文件,获取其中的云端文件头;
[0145] 对所述云端文件头进行校验;
[0146] 若校验成功,则去掉所述云端文件头剩下的部分即为所述插件文件。
[0147] 在本发明的一个实施例中,上述解析器540还用于:
[0148] 对所述云端文件头中的MD5进行校验;和/或
[0149] 对所述云端文件头中的插件接口证书进行校验;和/或
[0150] 对所述云端文件头中的插件协议版本进行校验。
[0151] 在本发明的一个实施例中,图6示出了根据本发明另一个实施例的应用于客户端的插件下载装置的结构示意图。该装置还可以包括:覆盖器610,与解析器540相耦合,用于使用解析出的插件文件覆盖客户端中的原插件文件。
[0152] 相应的,本发明实施例还提供了一种插件下载装置,应用于云端服务器。图7示出了根据本发明一个实施例的应用于云端服务器的插件下载装置的结构示意图。如图7所示,该装置至少可以包括:请求接收器710、信息查找器720以及信息发送器730。
[0153] 现介绍本发明实施例的应用于云端服务器的插件下载装置的各组成或器件的功能以及各部分间的连接关系:
[0154] 请求接收器710,用于接收客户端上传的插件获取请求;
[0155] 信息查找器720,与请求接收器710相耦合,用于在所述云端服务器预存的、包括与所述客户端适配的多个插件信息的插件列表中查找与所述插件获取请求对应的插件信息;
[0156] 信息发送器730,与信息查找器720相耦合,用于将查找到的插件信息返回至所述客户端。
[0157] 在本发明的一个实施例中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0158] 在本发明的一个实施例中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0159] 在本发明的一个实施例中,所述云端服务器返回的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0160] 根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
[0161] 本发明实施例中,在云端服务器预存包括与客户端适配的多个插件信息的插件列表,从而当客户端上的插件启用失败时,可以从云端服务器获取与客户端适配的插件信息,进而利用获取的插件信息下载与客户端适配的插件,以供后续在客户端中正常启用该插件,从而解决了现有技术中只能够使用固定的插件信息的插件,导致插件启用失败后无法及时、准确下载适配的插件,进而无法实现后续正常启用的问题。进一步,本发明中,云端服务器提供的与客户端适配的多个插件信息中可以包含一些老版本的插件信息,从而可以利用老版本的插件信息下载相应的插件,可以提高老版本插件的利用率,同时能够提供更多版本的插件,满足多样化的需求。此外,相对于各个客户端,云端服务器更易于实现统一管理和操作,本发明在云端服务器预存包括与客户端适配的多个插件信息的插件列表,可以及时、便捷地更新插件列表中的插件信息,从而实现给客户端提供准确的插件信息的目的。并且,如果需要插件使用客户端提供的新的接口,或者需要删除一些过老的客户端接口,那么只需要调整客户端所能支持的最低接口版本,就可以让一些老版本的插件自发的“下线”,并更新到新版本。
[0162] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0163] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0164] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0165] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0166] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的插件下载装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0167] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0168] 至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
[0169] 本发明还公开了:A1、一种插件下载方法,应用于客户端,包括:
[0170] 所述客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,所述云端服务器中预存有包括与所述客户端适配的多个插件信息的插件列表;
[0171] 接收所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息;
[0172] 根据所述插件信息下载所述启用失败的插件的云端文件,并解析出其中的插件文件。
[0173] A2、根据A1所述的方法,其中,所述客户端上的插件启用失败的原因包括下列至少之一:
[0174] 所述启用失败的插件的插件文件在所述客户端中不存在;
[0175] 所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件;
[0176] 所述启用失败的插件未成功安装在所述客户端中。
[0177] A3、根据A2所述的方法,其中,所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件,包括:所述客户端中存在的插件文件被篡改为不合法的插件文件。
[0178] A4、根据A1至A3任一项所述的方法,其中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0179] A5、根据A4所述的方法,其中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0180] A6、根据A1至A5任一项所述的方法,其中,所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0181] A7、根据A1至A6任一项所述的方法,其中,根据所述插件信息下载所述启用失败的插件的云端文件,包括:
[0182] 判断本客户端中是否已存在所述云端文件和/或插件文件;
[0183] 若是,则直接调用所述已存储的云端文件和/或插件文件;
[0184] 若否,则根据所述插件信息下载所述云端文件。
[0185] A8、根据A1至A7任一项所述的方法,其中,所述解析出其中的插件文件,包括:
[0186] 解析所述云端文件,获取其中的云端文件头;
[0187] 对所述云端文件头进行校验;
[0188] 若校验成功,则去掉所述云端文件头剩下的部分即为所述插件文件。
[0189] A9、根据A8所述的方法,其中,对所述云端文件头进行校验,包括:
[0190] 对所述云端文件头中的MD5进行校验;和/或
[0191] 对所述云端文件头中的插件接口证书进行校验;和/或
[0192] 对所述云端文件头中的插件协议版本进行校验。
[0193] A10、根据A1至A9任一项所述的方法,其中,根据所述插件信息下载所述启用失败的插件的云端文件,并解析出其中的插件文件之后,还包括:用解析出的插件文件覆盖客户端中的原插件文件。
[0194] A11、根据A1至A10任一项所述的方法,其中,还包括:若所述客户端上的插件启用成功,则进入插件使用界面。
[0195] B12、一种插件下载方法,应用于云端服务器,包括:
[0196] 接收客户端上传的插件获取请求;
[0197] 在所述云端服务器预存的、包括与所述客户端适配的多个插件信息的插件列表中查找与所述插件获取请求对应的插件信息;
[0198] 将查找到的插件信息返回至所述客户端。
[0199] B13、根据B12所述的方法,其中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0200] B14、根据B13所述的方法,其中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0201] B15、根据B12至B14任一项所述的方法,其中,所述云端服务器返回的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0202] C16、一种插件下载装置,应用于客户端,包括:
[0203] 请求发送器,用于在所述客户端上的插件启用失败时,向云端服务器发送插件获取请求,其中,所述云端服务器中预存有包括与所述客户端适配的多个插件信息的插件列表;
[0204] 信息接收器,用于接收所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息;
[0205] 下载器,用于根据所述插件信息下载所述启用失败的插件的云端文件;
[0206] 解析器,用于解析出下载的云端文件中的插件文件。
[0207] C17、根据C16所述的装置,其中,所述客户端上的插件启用失败的原因包括下列至少之一:
[0208] 所述启用失败的插件的插件文件在所述客户端中不存在;
[0209] 所述启用失败的插件在所述客户端中存在的插件文件为不合法的插件文件;
[0210] 所述启用失败的插件未成功安装在所述客户端中。
[0211] C18、根据C16或C17所述的装置,其中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0212] C19、根据C18所述的装置,其中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0213] C20、根据C16至C19任一项所述的装置,其中,所述云端服务器根据所述插件列表返回的、所述启用失败的插件在所述云端服务器上对应的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。
[0214] C21、根据C16至C20任一项所述的装置,其中,所述下载器还用于:
[0215] 判断本客户端中是否已存在所述云端文件和/或插件文件;
[0216] 若是,则直接调用所述已存储的云端文件和/或插件文件;
[0217] 若否,则根据所述插件信息下载所述云端文件。
[0218] C22、根据C16至C21任一项所述的装置,其中,所述解析器还用于:
[0219] 解析所述云端文件,获取其中的云端文件头;
[0220] 对所述云端文件头进行校验;
[0221] 若校验成功,则去掉所述云端文件头剩下的部分即为所述插件文件。
[0222] C23、根据C22所述的装置,其中,所述解析器还用于:
[0223] 对所述云端文件头中的MD5进行校验;和/或
[0224] 对所述云端文件头中的插件接口证书进行校验;和/或
[0225] 对所述云端文件头中的插件协议版本进行校验。
[0226] C24、根据C16至C23任一项所述的装置,其中,还包括:
[0227] 覆盖器,用于使用解析出的插件文件覆盖客户端中的原插件文件。
[0228] D25、一种插件下载装置,应用于云端服务器,包括:
[0229] 请求接收器,用于接收客户端上传的插件获取请求;
[0230] 信息查找器,用于在所述云端服务器预存的、包括与所述客户端适配的多个插件信息的插件列表中查找与所述插件获取请求对应的插件信息;
[0231] 信息发送器,用于将查找到的插件信息返回至所述客户端。
[0232] D26、根据D25所述的装置,其中,所述插件列表中至少包括:插件名、插件版本、插件唯一标识和插件下载地址。
[0233] D27、根据D26所述的装置,其中,所述插件列表还包括下列至少之一:插件大小、插件简介、适配主程序、最低版本、兼容版本。
[0234] D28、根据D25至D27任一项所述的装置,其中,所述云端服务器返回的插件信息为URL地址时,所述URL地址后缀携带有下列至少之一:插件名、主程序、最低和兼容版本。