关联插件的释放方法及装置与流程

文档序号:12596427阅读:333来源:国知局
关联插件的释放方法及装置与流程

本发明涉及互联网技术领域,特别是涉及一种关联插件的释放方法及装置。



背景技术:

现有技术中,对于多个关联插件,通常采用如下下发方法:例如对于两个关联插件A和B,其版本均为100,插件B定义了一个接口B1供插件A使用。后来,插件B发布了新的版本101,并删除了接口B1,这种情况下,如果插件A再调用插件B的接口B1时,就会因找不到该接口而造成系统崩溃。

为了解决上述问题,通常在插件A为版本100时就做适配,这样,当发现调用接口B1失败时至少不会造成系统崩溃。但是,这种方法无法满足产品需求,原因在于插件B删除了接口B1之后,一定会有替代该接口的更新方案,此时如果插件A不升级,则无法使用该替代的更新方案。

另一种解决上述问题的方案为:对于旧版本中的接口不做删除处理。仍以上述插件A和插件B为例,在插件B发布版本101后,不删除接口B1,而是添加了个新的接口B2,这种情况下,如果产品要求插件A也立即使用该新的接口B2,则需插件A和插件B必须同时升级,否则如果仅升级插件A而不升级插件B,也会导致无法调用新的接口B2的情况。

可见,目前仍无法达到让多个关联插件同时升级的目的,这使得在释放多个关联插件方面具有很大的局限性。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的关联插件的释放方法及装置。

依据本发明的一个方面,提供了一种关联插件的释放方法,包括:

下载应用程序的第一复合插件,所述第一复合插件包括相互关联的多个子插件及其属性信息;

解析所述第一复合插件以获取所述多个子插件的属性信息,所述属性信息包括各子插件的版本信息;

验证所述各子插件的版本信息是否满足匹配条件,得到验证结果,其中,所述匹配条件指所述各子插件的版本之间相互匹配;

丢弃所述验证结果中不满足所述匹配条件的子插件,并释放所述验证结果中满足所述匹配条件的子插件。

可选地,所述属性信息还包括所述第一复合插件中子插件的个数、各子插件在所述第一复合插件中的偏移量、各子插件在所述第一复合插件中的占用长度中的至少一项。

可选地,所述验证所述各子插件的版本信息是否满足匹配条件,包括:

确定所述应用程序的内置插件的版本;

判断所述子插件的版本是否低于所述内置插件的版本;

当所述子插件的版本低于所述内置插件的版本时,确定所述子插件的版本信息不满足所述匹配条件。

可选地,所述验证所述各子插件的版本信息是否满足匹配条件,包括:

获取所述应用程序的第二复合插件,所述第二复合插件与所述第一复合插件中存在有相同的子插件;

判断所述相同的子插件在所述第一复合插件中的版本是否高于在所述第二复合插件中的版本;

当所述相同的子插件在所述第一复合插件中的版本高于在所述第二复合插件中的版本时,确定所述相同的子插件的版本信息满足所述匹配条件。

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

丢弃所述第二复合插件。

可选地,所述应用程序具有已下载的预设类型的非内置插件;所述验证所述各子插件的版本信息是否满足匹配条件,包括:

当所述第一复合插件中包括与所述非内置插件相同的子插件时,判断该子插件的版本是否低于所述非内置插件的版本;

当该子插件的版本低于所述非内置插件的版本时,确定该子插件的版本信息满足所述匹配条件。

可选地,所述预设类型为V5对象类型。

可选地,所述释放所述验证结果中满足所述匹配条件的子插件,包括:

读取所述第一复合插件中子插件的个数;

按照所述个数以及所述第一复合插件中各子插件的顺序读取当前子插件的偏移量及占用长度,并根据所述偏移量及占用长度读取所述当前子插件的内容;

释放所述当前子插件,并读取所述当前子插件的下一个子插件的偏移量及占用长度,根据所述偏移量及占用长度释放所述下一个子插件。

可选地,所述释放所述验证结果中满足所述匹配条件的子插件之前,所述方法还包括:

对所述验证结果中满足所述匹配条件的子插件进行标记;

将带有标记的所述第一复合插件存储在预设内存表中。

可选地,所述释放所述验证结果中满足所述匹配条件的子插件,包括:

当接收到对满足所述匹配条件的子插件的释放请求时,从所述预设内存表中查询所述子插件的偏移量及占用长度;

根据所述偏移量定位并跳转至所述子插件的位置;

从所述位置处开始读取所述占用长度的子插件内容,并释放所述读取到的子插件。

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

对所述各子插件的属性信息进行校验,以判断待释放的各子插件的属性信息是否正确,所述校验包括以下至少一项:

校验所述各子插件在所述第一复合插件中的偏移量是否超出所述第一复合插件的总大小;

校验所述各子插件在所述第一复合插件中的占用长度是否超出预设长度。

依据本发明的另一个方面,提供了一种关联插件的释放装置,包括:

下载模块,适于下载应用程序的第一复合插件,所述第一复合插件包括相互关联的多个子插件及其属性信息;

解析模块,适于解析所述第一复合插件以获取所述多个子插件的属性信息,所述属性信息包括各子插件的版本信息;

验证模块,适于验证所述各子插件的版本信息是否满足匹配条件,得到验证结果,其中,所述匹配条件指所述各子插件的版本之间相互匹配;

释放模块,适于丢弃所述验证结果中不满足所述匹配条件的子插件,并释放所述验证结果中满足所述匹配条件的子插件。

可选地,所述属性信息还包括所述第一复合插件中子插件的个数、各子插件在所述第一复合插件中的偏移量、各子插件在所述第一复合插件中的占用长度中的至少一项。

可选地,所述验证模块,还适于确定所述应用程序的内置插件的版本;判断所述子插件的版本是否低于所述内置插件的版本;当所述子插件的版本低于所述内置插件的版本时,确定所述子插件的版本信息不满足所述匹配条件。

可选地,所述验证模块,还适于获取所述应用程序的第二复合插件,所述第二复合插件与所述第一复合插件中存在有相同的子插件;判断所述相同的子插件在所述第一复合插件中的版本是否高于在所述第二复合插件中的版本;当所述相同的子插件在所述第一复合插件中的版本高于在所述第二复合插件中的版本时,确定所述相同的子插件的版本信息满足所述匹配条件。

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

丢弃模块,适于丢弃所述第二复合插件。

可选地,所述应用程序具有已下载的预设类型的非内置插件;所述验证模块,还适于当所述第一复合插件中包括与所述非内置插件相同的子插件时,判断该子插件的版本是否低于所述非内置插件的版本;当该子插件的版本低于所述非内置插件的版本时,确定该子插件的版本信息满足所述匹配条件。

可选地,所述预设类型为V5对象类型。

可选地,所述释放模块,还适于读取所述第一复合插件中子插件的个数;按照所述个数以及所述第一复合插件中各子插件的顺序读取当前子插件的偏移量及占用长度,并根据所述偏移量及占用长度读取所述当前子插件的内容;释放所述当前子插件,并读取所述当前子插件的下一个子插件的偏移量及占用长度,根据所述偏移量及占用长度释放所述下一个子插件。

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

标记模块,适于在释放所述验证结果中满足所述匹配条件的子插件之前,对所述验证结果中满足所述匹配条件的子插件进行标记;

存储模块,适于将带有标记的所述第一复合插件存储在预设内存表中。

可选地,所述释放模块,还适于当接收到对满足所述匹配条件的子插件的释放请求时,从所述预设内存表中查询所述子插件的偏移量及占用长度;根据所述偏移量定位并跳转至所述子插件的位置;从所述位置处开始读取所述占用长度的子插件内容,并释放所述读取到的子插件。

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

校验模块,适于对所述各子插件的属性信息进行校验,以判断待释放的各子插件的属性信息是否正确,所述校验包括以下至少一项:

校验所述各子插件在所述第一复合插件中的偏移量是否超出所述第一复合插件的总大小;

校验所述各子插件在所述第一复合插件中的占用长度是否超出预设长度。

采用本发明实施例提供的技术方案,通过下载包括相关互联的多个插件的复合插件,进而释放复合插件中的各子插件,实现了可捆绑下载、安装、加载多个关联插件的目的,并且,在释放各子插件时首先对各子插件的版本进行验证,进而丢弃不满足匹配条件(即与其他子插件的版本不相匹配)的子插件,释放满足匹配条件的子插件,使得复合插件中满足匹配条件的一个或多个子插件能够同时被释放,从而实现了多个相互关联的子插件能够同时升级的目的,避免了各子插件间因版本不相匹配而导致的无法使用的情况,为用户升级多个子插件带来了方便。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1是根据本发明一个实施例的一种关联插件的释放方法的示意性流程图;

图2是根据本发明一个实施例的一种关联插件的释放方法中V5下发复合插件的文件格式示意图;

图3是根据本发明一个实施例的一种关联插件的释放方法中步骤S103的示意性流程图;

图4是根据本发明另一个实施例的一种关联插件的释放方法中步骤S103的示意性流程图;

图5是根据本发明另一个实施例的一种关联插件的释放方法中步骤S103的示意性流程图;

图6是根据本发明一个实施例的一种关联插件的释放方法中步骤S104的示意性流程图;

图7是根据本发明另一个实施例的一种关联插件的释放方法中步骤S104的示意性流程图;

图8是根据本发明一个实施例的一种关联插件的释放装置的示意性框图;

图9是根据本发明另一个实施例的一种关联插件的释放装置的示意性框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1是根据本发明一个实施例的一种关联插件的释放方法的示意性流程图。如图1所示,该关联插件的释放方法一般性地可包括步骤S101-S104:

步骤S101,下载应用程序的第一复合插件,第一复合插件包括相互关联的多个子插件及其属性信息。

步骤S102,解析第一复合插件以获取多个子插件的属性信息,属性信息包括各子插件的版本信息。

步骤S103,验证各子插件的版本信息是否满足匹配条件,得到验证结果,其中,匹配条件指各子插件的版本之间相互匹配。例如,当某个子插件的版本比其他子插件的版本低时,可认为该子插件的版本信息不满足匹配条件。

步骤S104,丢弃验证结果中不满足匹配条件的子插件,并释放验证结果中满足匹配条件的子插件。

在一个实施例中,在执行步骤S101(即下载完第一复合插件)之后,可先通过正则表达式判断第一复合插件的文件名是否符合预设命名条件,其中,预设命名条件可由用户自定义。当判定第一复合插件的文件名符合预设命名条件时,再继续执行步骤S102。执行这一判断过程可避免用户下载错误的复合插件的情况。在一个实施例中,判定第一复合插件的文件名符合预设命名条件时,还可构建V5FileInfo(自定义)对象,表明当前所下载的是一个V5(即V5对象类型)下发插件。

上述实施例中,属性信息除包括各子插件的版本信息之外,还包括第一复合插件中子插件的个数、各子插件在第一复合插件中的偏移量、各子插件在第一复合插件中的占用长度中的至少一项。其中,偏移量可用于定位各子插件在第一复合插件中的位置,占用长度可用于确定各子插件在第一复合插件中的结束位置,因此,根据这些属性信息,即可准确地从第一复合插件中读取到各子插件。

图2是根据本发明一个实施例的一种关联插件的释放方法中V5下发复合插件的文件格式示意图。如图2所示,count表示该复合插件中包含的子插件的个数,Pluign n info record表示子插件的内容,Name/low/high/ver/md5的含义与现有技术中单个插件中Name/low/high/ver/md5所指的含义相同,在此不再赘述,Offset表示子插件在该复合插件中的偏移量,Length表示子插件在该复合插件中的占用长度。

采用本发明实施例提供的技术方案,通过下载包括相关互联的多个插件的复合插件,进而释放复合插件中的各子插件,实现了可捆绑下载、安装、加载多个关联插件的目的,并且,在释放各子插件时首先对各子插件的版本进行验证,进而丢弃不满足匹配条件(即与其他子插件的版本不相匹配)的子插件,释放满足匹配条件的子插件,使得复合插件中满足匹配条件的一个或多个子插件能够同时被释放,从而实现了多个相互关联的子插件能够同时升级的目的,避免了各子插件间因版本不相匹配而导致的无法使用的情况,为用户升级多个子插件带来了方便。

上述实施例中,执行步骤S103时,可采用多种方式来验证各子插件的版本信息是否满足匹配条件,以下分别介绍几种验证版本信息的方式。

在一个实施例中,应用程序具有内置插件,内置插件是满足应用程序的最基本插件,是不允许出现降低版本的情况的。因此,如图3所示,执行步骤S102(即解析第一复合插件以获取多个子插件的属性信息)之后,可按照以下步骤S301-S304来验证各子插件的版本信息是否满足匹配条件。

步骤S301,确定应用程序的内置插件的版本。

步骤S302,判断子插件的版本是否低于内置插件的版本。如果子插件的版本低于内置插件的版本,则执行步骤S303;否则,执行步骤S304。

步骤S303,确定子插件的版本信息不满足匹配条件。

步骤S304,确定子插件的版本信息满足匹配条件。

本实施例中,如果确定子插件的版本信息不满足匹配条件,则丢弃该子插件。

在一个实施例中,应用程序具有已下载的第二复合插件,该第二复合插件可以是与第一复合插件不同的一个复合插件,也可以是与第一复合插件不同的多个复合插件,在此不做限定。因此,如图4所示,执行步骤S102(即解析第一复合插件以获取多个子插件的属性信息)之后,可按照以下步骤S401-S404来验证各子插件的版本信息是否满足匹配条件。

步骤S401,获取应用程序的第二复合插件,第二复合插件与第一复合插件中存在有相同的子插件。

步骤S402,判断该相同的子插件在第一复合插件中的版本是否高于在第二复合插件中的版本。如果该相同的子插件在第一复合插件中的版本高于在第二复合插件中的版本,则执行步骤S403;否则,执行步骤S404。

步骤S403,确定该相同的子插件的版本信息满足匹配条件。

步骤S404,确定该相同的子插件的版本信息不满足匹配条件。

本实施例中,如果确定该相同的子插件的版本信息不满足匹配条件,在其他条件满足(例如第一复合插件中的其他子插件的版本信息均满足匹配条件)的前提下,丢弃第二复合插件。

举例而言,第一复合插件中包括插件A和插件B,第二复合插件中包括插件A和插件C,二者具有相同的子插件A,如何第一复合插件中子插件A的版本高于第二复合插件中子插件A的版本,则确定第一复合插件中的子插件A的版本信息满足匹配条件,此时可丢弃第二复合插件。

在一个实施例中,应用程序具有已下载的预设类型的非内置插件,预设类型可以是V5对象类型。此时,如图5所示,执行步骤S102(即解析第一复合插件以获取多个子插件的属性信息)之后,可按照以下步骤S501-S503来验证各子插件的版本信息是否满足匹配条件。

步骤S501,当第一复合插件中包括与非内置插件相同的子插件时,判断该子插件的版本是否低于非内置插件的版本。如果该子插件的版本低于非内置插件的版本,则执行步骤S502;否则,执行步骤S503。

步骤S502,确定该子插件的版本信息满足所述匹配条件。

步骤S503,确定该子插件的版本信息不满足所述匹配条件。

以预设类型为V5对象类型为例,假设应用程序的第一复合插件中包括子插件A和B,且该应用程序还具有V5下发的插件A,该插件A为非内置插件,如果第一复合插件中子插件A的版本低于V5下发的插件A的版本,则确定第一复合插件中子插件A的版本信息满足匹配条件,此时可丢弃V5下发的插件A。本实施例中,保留版本较低的子插件A的原因在于,通常情况下不会对相同的插件同时配置V5下发插件和复合插件,如果出现同时配置V5下发插件和复合插件的情况时,很可能该插件之前属于V5下发插件,之后又为其配置了复合插件,因此,若让V5下发插件继续生效,则会破坏掉后来配置复合插件的原则和用意,导致复合插件下发不下去,或者导致插件版本不匹配,因此这种情况下选择丢弃V5下发插件。

上述几个实施例中提供的验证子插件版本信息的方式可单独使用,也可结合其中至少两个结合使用。例如,如果结合上述三种验证方式,则仅在验证子插件的版本高于内置插件的版本、高于其他复合插件中相同子插件的版本、并且低于V5下发的相同子插件的版本时,才能确定该子插件的版本信息满足匹配条件。

在得到验证结果之后,即可释放满足匹配条件的子插件。释放满足匹配条件的子插件的方式可分为两种,一种是验证结束后直接释放,另一种是验证结束后将验证结果存储起来,并在后续需要释放子插件时再进行针对性地释放。以下分别针对这两种方式说明如何释放子插件。

在一个实施例中,执行步骤S103之后,直接释放满足匹配条件的子插件。因此,如图6所示,可按照以下步骤S601-S603释放满足匹配条件的子插件。

步骤S601,读取第一复合插件中子插件的个数。通常情况下,复合插件的前四个字节用来表示其中子插件的个数,因此,可通过读取第一复合插件的前四个字节来获取到子插件的个数。

步骤S602,按照个数以及第一复合插件中各子插件的顺序读取当前子插件的偏移量及占用长度,并根据偏移量及占用长度读取当前子插件的内容。

步骤S603,释放当前子插件,并读取当前子插件的下一个子插件的偏移量及占用长度,根据偏移量及占用长度释放下一个子插件。

在第一复合插件中用以表明子插件个数的字节之后,即可读取到第一个子插件的属性信息及内容。具体而言,首先读取第一个子插件的偏移量及占用长度,第一个子插件的偏移量及占用长度分别用于定位第一个子插件在第一复合插件中的开始位置和结束位置,根据开始位置和结束位置即可准确读取到第一个子插件的内容,进而释放第一个子插件。读取完第一个子插件之后,读取指针会停留在第一个子插件的内容末尾的下一个字节上,因此可直接读取到第二个子插件的偏移量及占用长度,然后根据第二个子插件的偏移量及占用长度定位第二个子插件在第一复合插件中的开始位置和结束位置,根据开始位置和结束位置即可准确读取到第二个子插件的内容,进而释放第二个子插件。按照第一复合插件中各子插件的顺序依次读取每个子插件,直至读取并释放完第N个子插件,其中,N为第一复合插件中子插件的个数。通过预先读取到的第一复合插件中子插件的个数,即可得知第一复合插件中的子插件是否已被读取完毕。

本实施例中,在验证第一复合插件中各子插件的版本信息之后,直接释放其中满足匹配信息的子插件,能够大幅度节省首次加载的时间,缺点在于需要占用终端更多的存储空间。因此,若想要节省终端内部的存储空间,可采用下一种释放方式。

在一个实施例中,执行步骤S103之后,上述方法还包括以下步骤:对验证结果中满足匹配条件的子插件进行标记,并将带有标记的第一复合插件存储在预设内存表中。基于此,可按照如图7所示的步骤S701-S703释放满足匹配条件的子插件。

步骤S701,当接收到对满足匹配条件的子插件的释放请求时,从预设内存表中查询该子插件的偏移量及占用长度。

步骤S702,根据偏移量定位并跳转至该子插件的位置。该步骤中,偏移量能够定位子插件在第一复合插件中的开始位置,因此,根据偏移量可准确定位并跳转至该子插件在第一复合插件中的开始位置。

步骤S703,从跳转到的位置处开始读取占用长度的子插件内容,并释放读取到的子插件。该步骤中,根据子插件的开始位置及占用长度,可准确定位到子插件的结束位置。因此,只要获取到子插件在第一复合插件中的偏移量及占用长度,即可准确读取进而释放该子插件,而无需依次释放第一复合插件中的所有满足匹配条件的子插件。

本实施例中,通过将带有标记的第一复合插件存储在预设内存表中,使得用户能够在需要释放某一子插件时,从预设内存表中查询该子插件即可准确释放,而无需依次释放第一复合插件中的所有满足匹配条件的子插件,从而节省终端内部大量的存储空间。

在上述任一实施例中,解析第一复合插件从而获取到多个子插件的属性信息之后,还需对各子插件的属性信息进行校验,以判断待释放的各子插件的属性信息是否正确。其中,对各子插件的属性信息的校验可以包括以下至少一项:校验各子插件在第一复合插件中的偏移量是否超出第一复合插件的总大小、校验各子插件在第一复合插件中的占用长度是否超出预设长度。具体的,当校验子插件在第一复合插件中的偏移量时,如果子插件在第一复合插件中的偏移量超出了第一复合插件的总大小,则判定该插件的偏移量错误;当校验子插件在第一复合插件中的占用长度时,如果子插件在第一复合插件中的占用长度超出预设长度,则判定该子插件的占用长度错误,通常情况下,该预设长度可设为第一复合插件的总长度。本实施例中,通过校验各子插件的属性信息是否正确,可防止其他外来因素对第一复合插件的攻击,如果其中存在有各子插件的属性信息发生错误,则说明该第一复合插件已被攻击,用户可对此采取相应措施,从而避免释放被攻击的子插件。此外,这里仅以列举形式说明了对子插件的偏移量及占用长度的校验,但并不代表其他属性信息不做校验,实际应用中,可对子插件的任一属性进行校验来防止复合插件被攻击的情况,在此不一一列举。

图8是根据本发明一个实施例的一种关联插件的释放装置的示意性框图。如图8所示,该关联插件的释放装置一般性地可包括:

下载模块810,适于下载应用程序的第一复合插件,第一复合插件包括相互关联的多个子插件及其属性信息;

解析模块820,与下载模块810相耦合,适于解析第一复合插件以获取多个子插件的属性信息,属性信息包括各子插件的版本信息;

验证模块830,与解析模块820相耦合,适于验证各子插件的版本信息是否满足匹配条件,得到验证结果,其中,匹配条件指各子插件的版本之间相互匹配;

释放模块840,与验证模块830相耦合,适于丢弃验证结果中不满足匹配条件的子插件,并释放验证结果中满足匹配条件的子插件。

在一个实施例中,属性信息还包括第一复合插件中子插件的个数、各子插件在第一复合插件中的偏移量、各子插件在第一复合插件中的占用长度中的至少一项。

在一个实施例中,验证模块830,还适于确定应用程序的内置插件的版本;判断子插件的版本是否低于内置插件的版本;当子插件的版本低于内置插件的版本时,确定子插件的版本信息不满足匹配条件。

在一个实施例中,验证模块830,还适于获取应用程序的第二复合插件,第二复合插件与第一复合插件中存在有相同的子插件;判断相同的子插件在第一复合插件中的版本是否高于在第二复合插件中的版本;当相同的子插件在第一复合插件中的版本高于在第二复合插件中的版本时,确定相同的子插件的版本信息满足匹配条件。

在一个实施例中,上述装置还包括丢弃模快,适于丢弃第二复合插件。

在一个实施例中,应用程序具有已下载的预设类型的非内置插件;验证模块83,还适于当第一复合插件中包括与非内置插件相同的子插件时,判断该子插件的版本是否低于非内置插件的版本;当该子插件的版本低于非内置插件的版本时,确定该子插件的版本信息满足匹配条件。

在一个实施例中,预设类型为V5对象类型。

在一个实施例中,释放模块840,还适于读取第一复合插件中子插件的个数;按照个数以及第一复合插件中各子插件的顺序读取当前子插件的偏移量及占用长度,并根据偏移量及占用长度读取当前子插件的内容;释放当前子插件,并读取当前子插件的下一个子插件的偏移量及占用长度,根据偏移量及占用长度释放下一个子插件。

在一个实施例中,如图9所示,上述装置还包括:

标记模块850,与验证模块830相耦合,适于在释放验证结果中满足匹配条件的子插件之前,对验证结果中满足匹配条件的子插件进行标记;

存储模块860,与标记模块850和释放模块840相耦合,适于将带有标记的第一复合插件存储在预设内存表中。

相应地,释放模块840,还适于当接收到对满足匹配条件的子插件的释放请求时,从预设内存表中查询子插件的偏移量及占用长度;根据偏移量定位并跳转至子插件的位置;从位置处开始读取占用长度的子插件内容,并释放读取到的子插件。

在一个实施例中,上述装置还包括:

校验模块,适于对各子插件的属性信息进行校验,以判断待释放的各子插件的属性信息是否正确,校验包括以下至少一项:

校验各子插件在第一复合插件中的偏移量是否超出第一复合插件的总大小;

校验各子插件在第一复合插件中的占用长度是否超出预设长度。

采用本发明实施例提供的装置,通过下载包括相关互联的多个插件的复合插件,进而释放复合插件中的各子插件,实现了可捆绑下载、安装、加载多个关联插件的目的,并且,在释放各子插件时首先对各子插件的版本进行验证,进而丢弃不满足匹配条件(即与其他子插件的版本不相匹配)的子插件,释放满足匹配条件的子插件,使得复合插件中满足匹配条件的一个或多个子插件能够同时被释放,从而实现了多个相互关联的子插件能够同时升级的目的,避免了各子插件间因版本不相匹配而导致的无法使用的情况,为用户升级多个子插件带来了方便。

本领域的技术人员应可理解,图8和图9中的关联插件的释放装置能够用来实现前文的关联插件的释放方案,其中的细节描述应与前文方法部分描述类似,为避免繁琐,此处不另赘述。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的关联插件的释放装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

本发明实施例提供了A1.一种关联插件的释放方法,包括:

下载应用程序的第一复合插件,所述第一复合插件包括相互关联的多个子插件及其属性信息;

解析所述第一复合插件以获取所述多个子插件的属性信息,所述属性信息包括各子插件的版本信息;

验证所述各子插件的版本信息是否满足匹配条件,得到验证结果,其中,所述匹配条件指所述各子插件的版本之间相互匹配;

丢弃所述验证结果中不满足所述匹配条件的子插件,并释放所述验证结果中满足所述匹配条件的子插件。

A2.根据A1所述的方法,其中,所述属性信息还包括所述第一复合插件中子插件的个数、各子插件在所述第一复合插件中的偏移量、各子插件在所述第一复合插件中的占用长度中的至少一项。

A3.根据A1或A2所述的方法,其中,所述验证所述各子插件的版本信息是否满足匹配条件,包括:

确定所述应用程序的内置插件的版本;

判断所述子插件的版本是否低于所述内置插件的版本;

当所述子插件的版本低于所述内置插件的版本时,确定所述子插件的版本信息不满足所述匹配条件。

A4.根据A1-A3中任一项所述的方法,其中,所述验证所述各子插件的版本信息是否满足匹配条件,包括:

获取所述应用程序的第二复合插件,所述第二复合插件与所述第一复合插件中存在有相同的子插件;

判断所述相同的子插件在所述第一复合插件中的版本是否高于在所述第二复合插件中的版本;

当所述相同的子插件在所述第一复合插件中的版本高于在所述第二复合插件中的版本时,确定所述相同的子插件的版本信息满足所述匹配条件。

A5.根据A4所述的方法,其中,所述方法还包括:

丢弃所述第二复合插件。

A6.根据A1-A5中任一项所述的方法,其中,所述应用程序具有已下载的预设类型的非内置插件;所述验证所述各子插件的版本信息是否满足匹配条件,包括:

当所述第一复合插件中包括与所述非内置插件相同的子插件时,判断该子插件的版本是否低于所述非内置插件的版本;

当该子插件的版本低于所述非内置插件的版本时,确定该子插件的版本信息满足所述匹配条件。

A7.根据A6所述的方法,其中,所述预设类型为V5对象类型。

A8.根据A2所述的方法,其中,所述释放所述验证结果中满足所述匹配条件的子插件,包括:

读取所述第一复合插件中子插件的个数;

按照所述个数以及所述第一复合插件中各子插件的顺序读取当前子插件的偏移量及占用长度,并根据所述偏移量及占用长度读取所述当前子插件的内容;

释放所述当前子插件,并读取所述当前子插件的下一个子插件的偏移量及占用长度,根据所述偏移量及占用长度释放所述下一个子插件。

A9.根据A2所述的方法,其中,所述释放所述验证结果中满足所述匹配条件的子插件之前,所述方法还包括:

对所述验证结果中满足所述匹配条件的子插件进行标记;

将带有标记的所述第一复合插件存储在预设内存表中。

A10.根据A9所述的方法,其中,所述释放所述验证结果中满足所述匹配条件的子插件,包括:

当接收到对满足所述匹配条件的子插件的释放请求时,从所述预设内存表中查询所述子插件的偏移量及占用长度;

根据所述偏移量定位并跳转至所述子插件的位置;

从所述位置处开始读取所述占用长度的子插件内容,并释放所述读取到的子插件。

A11.根据A1-A10中任一项所述的方法,其中,所述方法还包括:

对所述各子插件的属性信息进行校验,以判断待释放的各子插件的属性信息是否正确,所述校验包括以下至少一项:

校验所述各子插件在所述第一复合插件中的偏移量是否超出所述第一复合插件的总大小;

校验所述各子插件在所述第一复合插件中的占用长度是否超出预设长度。

本发明实施例还提供了B12.一种关联插件的释放装置,包括:

下载模块,适于下载应用程序的第一复合插件,所述第一复合插件包括相互关联的多个子插件及其属性信息;

解析模块,适于解析所述第一复合插件以获取所述多个子插件的属性信息,所述属性信息包括各子插件的版本信息;

验证模块,适于验证所述各子插件的版本信息是否满足匹配条件,得到验证结果,其中,所述匹配条件指所述各子插件的版本之间相互匹配;

释放模块,适于丢弃所述验证结果中不满足所述匹配条件的子插件,并释放所述验证结果中满足所述匹配条件的子插件。

B13.根据B12所述的装置,其中,所述属性信息还包括所述第一复合插件中子插件的个数、各子插件在所述第一复合插件中的偏移量、各子插件在所述第一复合插件中的占用长度中的至少一项。

B14.根据B12或B13所述的装置,其中,所述验证模块,还适于确定所述应用程序的内置插件的版本;判断所述子插件的版本是否低于所述内置插件的版本;当所述子插件的版本低于所述内置插件的版本时,确定所述子插件的版本信息不满足所述匹配条件。

B15.根据B12-B14中任一项所述的装置,其中,所述验证模块,还适于获取所述应用程序的第二复合插件,所述第二复合插件与所述第一复合插件中存在有相同的子插件;判断所述相同的子插件在所述第一复合插件中的版本是否高于在所述第二复合插件中的版本;当所述相同的子插件在所述第一复合插件中的版本高于在所述第二复合插件中的版本时,确定所述相同的子插件的版本信息满足所述匹配条件。

B16.根据B15所述的装置,其中,所述装置还包括:

丢弃模块,适于丢弃所述第二复合插件。

B17.根据B12-B16中任一项所述的装置,其中,所述应用程序具有已下载的预设类型的非内置插件;所述验证模块,还适于当所述第一复合插件中包括与所述非内置插件相同的子插件时,判断该子插件的版本是否低于所述非内置插件的版本;当该子插件的版本低于所述非内置插件的版本时,确定该子插件的版本信息满足所述匹配条件。

B18.根据B17所述的装置,其中,所述预设类型为V5对象类型。

B19.根据B13所述的装置,其中,所述释放模块,还适于读取所述第一复合插件中子插件的个数;按照所述个数以及所述第一复合插件中各子插件的顺序读取当前子插件的偏移量及占用长度,并根据所述偏移量及占用长度读取所述当前子插件的内容;释放所述当前子插件,并读取所述当前子插件的下一个子插件的偏移量及占用长度,根据所述偏移量及占用长度释放所述下一个子插件。

B20.根据B13所述的装置,其中,所述装置还包括:

标记模块,适于在释放所述验证结果中满足所述匹配条件的子插件之前,对所述验证结果中满足所述匹配条件的子插件进行标记;

存储模块,适于将带有标记的所述第一复合插件存储在预设内存表中。

B21.根据B20所述的装置,其中,所述释放模块,还适于当接收到对满足所述匹配条件的子插件的释放请求时,从所述预设内存表中查询所述子插件的偏移量及占用长度;根据所述偏移量定位并跳转至所述子插件的位置;从所述位置处开始读取所述占用长度的子插件内容,并释放所述读取到的子插件。

B22.根据B12-B21中任一项所述的装置,其中,所述装置还包括:

校验模块,适于对所述各子插件的属性信息进行校验,以判断待释放的各子插件的属性信息是否正确,所述校验包括以下至少一项:

校验所述各子插件在所述第一复合插件中的偏移量是否超出所述第一复合插件的总大小;

校验所述各子插件在所述第一复合插件中的占用长度是否超出预设长度。

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