CN104008060A - 插件与宿主兼容性的检测方法及检测服务器 - Google Patents

插件与宿主兼容性的检测方法及检测服务器 Download PDF

Info

Publication number
CN104008060A
CN104008060A CN201410273180.0A CN201410273180A CN104008060A CN 104008060 A CN104008060 A CN 104008060A CN 201410273180 A CN201410273180 A CN 201410273180A CN 104008060 A CN104008060 A CN 104008060A
Authority
CN
China
Prior art keywords
unit
calling interface
host
plug
analysis result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410273180.0A
Other languages
English (en)
Other versions
CN104008060B (zh
Inventor
詹勋昌
罗锦坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410273180.0A priority Critical patent/CN104008060B/zh
Publication of CN104008060A publication Critical patent/CN104008060A/zh
Application granted granted Critical
Publication of CN104008060B publication Critical patent/CN104008060B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种插件与宿主兼容性的检测方法及检测服务器;所述检测方法包括:获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;及依据所述判断结果确定所述插件是否与所述宿主兼容。

Description

插件与宿主兼容性的检测方法及检测服务器
技术领域
本发明涉及信息处理领域的兼容性技术,尤其涉及一种插件与宿主兼容性的检测方法及检测服务器。
背景技术
宿主:又可称为宿主环境或宿主代码,可调用插件来执行指定的功能。所述宿主可以***或应用程序等计算机可执行代码。
插件:是一种遵循一定规范的调用接口编写出来的程序。通过插件技术可以在宿主发行之后,通过更新插件达到修改宿主的目的,而不需要发布整个应用程序的新版本。
插件能被宿主调用,则认为该插件与该宿主兼容,否则不兼容。由于插件和宿主均可以独立发布,当安装新版本的宿主程序时,旧版宿主上已经安装的插件有一些可以继续使用,一些无法继续使用,可以继续使用的就叫兼容的,反之是不兼容的。然而在现在技术中没有一种行之有效的方法能检测出插件与宿主的兼容性。
客户端应用了一段时间后,可能会出现代码程序越来越臃肿,且代码维护成本也越来越高的问题,尤其是进行了宿主程序的升级或版本更新后。造成这种显现的原因之一是宿主程序更新后,为了保持与旧版本宿主的插件的兼容性,通常不会对插件进行删减;然而实际应用过程中有一些旧版本宿主的插件与新版本的宿主是不兼容的,但是由于无法甄别出那些旧版本宿主的插件与新版本宿主是兼容的,哪些是不兼容的,从而也没有办法删除不兼容的插件。此外,若在宿主和插件加载的过程中,若加载了与宿主不兼容的插件将导致加载异常,如***崩溃等。
因此,提出一种能检测出插件与宿主兼容性的方法是现有技术亟待解决的问题。
发明内容
有鉴于此,本发明实施例期望提供一种插件与宿主兼容性的检测方法及检测服务器,以检测插件与宿主的兼容性,以便根据兼容性的检测结果删除与宿主不兼容的插件,以实现客户端的插件的正常加载及精简客户端的程序代码及降低代码维护成本。
本发明实施例的技术方案是这样实现的:
本发明实施例第一方面提供一种插件与宿主兼容性的检测方法,所述方法包括:
获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
依据所述判断结果确定所述插件是否与所述宿主兼容。
优选地,
所述获取所述插件的第一解析结果包括:
获取所述插件的编译信息;
解析所述插件的编译信息形成第一解析结果;
所述获取所述宿主的第二解析结果包括:
获取所述宿主的编译信息;
解析所述宿主的编译信息形成第二解析结果。
优选地,
所述依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中包括:
将所述第一解析结果中,描述每一个所述第一调用接口的第一信息与所述第二解析结果中第二调用接口的第二信息进行比对,形成比对结果;
当所述比对结果表明一个所述第一调用接口的所述第一信息全包括在所述第二信息中时,确定该所述第一调用接口包括在所述第二调用接口中;
当所述比对结果表明一个所述第一调用接口的所述第一信息未全包括在所述第二信息中时,确定该所述第一调用接口不包括在所述第二调用接口中。
优选地,
所述依据所述判断结果确定所述插件是否与所述宿主兼容包括:
当依据所述第一解析结果及所述第二解析结果判断出至少有一个所述第一调用接口不包括在所述第二调用接口中时,确定所述插件与所述宿主不兼容;当依据所述第一解析结果及所述第二解析结果判断出每一个所述第一调用接口都包括在所述第二调用接口中时,
从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;
从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;
判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致,
若一致时,则确定所述插件与所述宿主兼容。
优选地,所述方法还包括:
在所述依据判断结果确定所述插件是否与所述宿主兼容之后,依据确定结果形成所述宿主的兼容配置文件。
优选地,
所述兼容配置文件包括与所述宿主兼容的插件信息。
本发明实施例第二方面提供一种检测服务器,所述服务器包括:
第一获取单元,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
第二获取单元,用于获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
判断单元,用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
确定单元,用于依据所述判断结果确定所述插件是否与所述宿主兼容。
优选地,
所述第一获取单元包括:
第一获取模块,用于获取所述插件的编译信息;
第一解析模块,用于解析所述插件的编译信息形成第一解析结果;
第二获取模块,用于依据所述第一解析结果获取至少一个所述第一调用接口;
所述第二获取单元包括:
第三获取模块,用于获取所述宿主的编译信息;
第二解析模块,用于解析所述宿主的编译信息形成第二解析结果;
第四获取模块,用于依据所述第二解析结果获取所述第二调用接口;
所述判断单元,具体用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中。
优选地,
所述判断单元包括:
对比模块,用于将所述第一解析结果中,描述每一个所述第一调用接口的第一信息与所述第二解析结果中第二调用接口的第二信息进行比对,形成对比结果;
确定模块,用于当所述对比结果表明一个所述第一调用接口的所述第一信息全包括在所述第二信息中时,从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致,当所述第一混淆表信息与对应的第二调用接口的所述第二混淆信息一致时,确定所述插件与所述宿主兼容;当所述对比结果表明一个所述第一调用接口的所述第一信息未全包括在所述第二信息中时,确定所述该第一调用接口不包括在所述第二调用接口中。
优选地,
所述第一获取单元,还用于从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;
所述第二获取单元,还用于从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;
所述判断单元,还用于当依据所述第一解析结果及所述第二解析结果判断出每一个所述第一调用接口都包括在所述第二调用接口中时,判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致;
所述确定单元,具体用于每一个所述第一调用接口包括在所述第二调用接口中,且所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息一致时,确定所述插件与所述宿主兼容;否则确定所述插件与所述宿主不兼容。
优选地,所述检测服务器还包括:
形成单元,用于在所述依据判断结果确定所述插件是否与所述宿主兼容之后,依据确定结果形成所述宿主的兼容配置文件。
优选地,
所述兼容配置文件包括与所述宿主兼容的插件信息。
本发明实施例所述插件与宿主兼容性的检测方法及检测服务器,通过插件被调用时用到的每一个第一调用接口是否包括在宿主可提供用于插件的第二调用接口中来判断插件是否与宿主兼容,首先,提出了一种插件与宿主是否兼容的有效的检测方法;其次,基于该兼容性检测方法形成了检测结果,便于客户端依据检测结果仅加载兼容的插件,从而可以避免加载不兼容的插件导致的加载异常;同时还便于客户端依据检测结果可以删除与宿主不兼容的插件,从而避免了客户端中代码越来越臃肿,代码维护成本越来越高的问题。
附图说明
图1为本发明方法实施例一所述的插件与宿主兼容性的检测方法的流程示意图;
图2为本发明方法实施例一所述的第一版本宿主与插件的兼容性的效果显示图;
图3为本发明方法实施例一所述的第一版本宿主及第二版本宿主与插件的兼容性的效果显示图;
图4为本发明方法实施例二所述的获取插件的编译信息的流程示意图;
图5为本发明方法实施例二所述的获取宿主的编译信息的流程示意图;
图6a为本发明方法实施例三所述的判断每一个第一调用接口是否包括在第二调用接口中的流程示意图;
图6b为本发明方法实施例四所述的确定插件是否与宿主兼容的部分流程示意图;
图7为本发明方法实施例五所述的插件与宿主兼容性的检测方法的流程示意图;
图8本发明方法实施例七所述的插件与宿主兼容性的检测方法的流程示意图;
图9本发明方法实施例九所述加载方法的流程示意图;
图10为本发明实施例十所述的插件与宿主兼容性的检测方法的流程示意图;
图11为本发明设备实施例一所述的检测服务器的结构示意图;
图12为本发明设备实施例二所述的第一获取单元的结构示意图;
图13为本发明设备实施例二所述的第二获取单元的结构示意图;
图14为本发明设备实施例三所述的判断单元的结构示意图;
图15为本发明设备实施例七所述的客户端的结构示意图;
图16为本发明设备实施例九所述的客户端的结构示意图;
图17为本发明设备实施例九所述通信***的结构示意图;
图18为本发明实施例所述的插件删除方法的流程示意图。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述。
方法实施例一:
如图1所述,本实施例提供一种插件与宿主兼容性的检测方法,所述方法包括:
步骤S110:获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
步骤S120:获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
步骤S130:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
步骤S140:依据所述判断结果确定所述插件是否与所述宿主兼容。
所述步骤S110中获取第一调用接口,可以通过解析所述插件的源代码等方法来确定;所述步骤S120中获取第二调用接口,也可以通过解析宿主的源代码等方法来确定。
在具体的实现过程中,所述第一调用接口可以为一个或多个;所述第二调用接口为所述宿主调用插件的所有调用接口的总称。
所述步骤S130中判断一个插件是否与宿主兼容,是通过判定该插件的被宿主调用时需要用到的每一个所述的第一调用接口是否包括在宿主可提供的第二调用接口中来确定。
如图2所示,若宿主为第一版本宿主,此时第一版本宿主包括两个插件,分别是插件1和插件2;其中,第一版本宿主通过调用接口A和调用接口B调用所述插件2,通过所述调用接口B和调用接口C调用所述插件1。
如图3所示,此时开发了第二版本的宿主;所述第二版本宿主为所述第一版本宿主的升级产品,用来替代所述第一版本宿主。所述第二版本宿主的部分代码与所述第一版本宿主的部分代码相同。具体如,在第二版本宿主中依旧包括调用接口B和调用接口C;此外第二版本宿主还包括新开发的调用接口D;此时插件2被宿主调用时所要用到的调用接口A不包括在第二版本宿主中;插件1的被宿主调用时所用到的所有调用接口B和调用接口C均包括在第二版本宿主中。
当宿主源代码被编译计算机可执行代码的过程中,没有进行混淆等处理时,直接可以根据插件被宿主调用时所要到的第一调用接口是否全部包括在宿主可提供的第二调用接口中,直接确定出所述插件是否与第二版本宿主兼容。
结合图2和图3可知,所述第一版本宿主的插件1与第二版本宿主兼容,插件2与第二版本宿主不兼容。
故步骤S140可为:
当所述判断结果表明插件所对应的每一个第一调用接口都包括在所述第二调用接口中时,所述插件与所述宿主兼容;
当所述判断结果表明插件所对应的至少一个所述第一调用接口未包括在所述第二调用接口中时,所述插件与所述宿主不兼容。
综合上述,本实施例提供了一种插件与宿主兼容性的检测方法,该方法通过检测插件被宿主调用时所要用到的所有调用接口是否包括在宿主可提供的调用接口中来确定插件是否与宿主兼容,具有实现简单便捷及填补了现有技术中无法检测插件与宿主是否兼容的空白的有益效果。
方法实施例二:
如图1所述,本实施例提供一种插件与宿主兼容性的检测方法,所述方法包括:
步骤S110:获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
步骤S120:获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
步骤S130:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
步骤S140:依据判断结果确定所述插件是否与所述宿主兼容。
所述步骤S110中获取第一调用接口,可以通过解析所述插件的源代码等方法来确定;所述步骤S120中获取第二调用接口,也可以通过解析宿主的源代码等方法来确定。在具体的实现过程中,所述第一调用接口可以为一个或多个;
所述第二调用接口为所述宿主调用插件的所有调用接口的总称,至少包括一个。
所述步骤S130中判断一个插件是否与宿主兼容,是通过判定该插件的所述的第一调用接口是否包括在宿主可提供的第二调用接口中。
如图4所示,所述步骤S110可包括:
步骤S111:获取所述插件的编译信息;
步骤S112:解析所述插件的编译信息形成第一解析结果;
步骤S113:依据所述第一解析结果获取至少一个所述第一调用接口;
如图5所示,所述步骤S120可包括:
步骤S121:获取所述宿主的编译信息;
步骤S122:解析所述宿主的编译信息形成第二解析结果;
步骤S123:依据所述第二解析结果获取所述第二调用接口;
所述步骤S130中的所述判断每一个所述第一调用接口是否包括在所述第二调用接口中为:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中。
在本实施例中分别根据插件和宿主的编译信息来获取第一调用接口和第二调用接口,实现简便快捷。
具体的如何获取插件的编译信息,可以通过在将插件源代码进行编译时,存储编译过程中形成的编译信息;同样的,获取所述宿主的编译信息,也可以通过存储宿主编译过程形成的编译信息来获取。
所述解析插件的编译信息和宿主的编译信息的方法,可以采用现有技术中的任意一种可行的方法,在此就不做进一步详细的论述了。
在执行所述步骤S112时,解析插件的编译信息时,包括排除插件被自身或宿主以外的程序(如***)调用时的调用接口,形成仅包括用于被宿主调用时需要用到的第一调用接口的第一解析结果。
同样的在执行所述步骤S122时,解析宿主的编译信息时,同样包括排除宿主对自身或其他应用程序(非插件)调用时的非调用插件的调用接口,形成仅包括用于被宿主调用时需要用到的第二调用接口的第二解析结果。
如方法实施例一所述的获取第一调用接口和第二调用接口的方式有多种,在本实施例中提供了一种实现简单的优选方法。
判断每一个第一调用接口是否包括在第二调用接口中的方法也可以通过比对源代码等方式来实现,但是在本实施例中优选为:根据第一解析结果和第二解析结果判断插件的每一个第一调用接口是否包括在第二调用接口中,同样具有实现简便的优点。
具体的如,宿主程序和插件程序都是采用JAVA语言编写的时候,可以通过反射机制判断方式判断插件的每一个所述第一调用接口是否全包括在第二调用接口中。
所述反射机制为JAVA程序在运行状态下,用于获取JAVA程序中任意一个类的属性等信息的方法;利用反射机制能够调用JAVA程序中任意一个对象,并能动态获取每一对象的信息。
方法实施例三:
如图1所述,本实施例提供一种插件与宿主兼容性的检测方法,所述方法包括:
步骤S110:获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
步骤S120:获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
步骤S130:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
步骤S140:依据判断结果确定所述插件是否与所述宿主兼容。
所述步骤S110中获取第一调用接口,可以通过解析所述插件的源代码等方法来确定;所述步骤S120中获取第二调用接口,也可以通过解析宿主的源代码等方法来确定。在具体的实现过程中,所述第一调用接口可以为一个或多个;
所述第二调用接口为所述宿主调用插件的所有调用接口的总称,可包括一个或多个。
所述步骤S130中判断一个插件是否与宿主兼容,是通过判定该插件的所述的第一调用接口是否包括在宿主可提供的第二调用接口中。
如图4所示,所述步骤S110可包括:
步骤S111:获取所述插件的编译信息;
步骤S112:解析所述插件的编译信息形成第一解析结果;
步骤S113:依据所述第一解析结果获取至少一个所述第一调用接口;
如图5所示,所述步骤S120可包括:
步骤S121:获取所述宿主的编译信息;
步骤S122:解析所述宿主的编译信息形成第二解析结果;
步骤S123:依据所述第二解析结果获取所述第二调用接口;
所述步骤S130中的所述判断每一个所述第一调用接口是否包括在所述第二调用接口中为:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中。
如图6a所示,所述步骤S130中,所述依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中可包括:
步骤S131:将所述第一解析结果中,描述每一个所述第一调用接口的第一信息与所述第二解析结果中第二调用接口的第二信息进行比对,形成比对结果
步骤S132:当所述比对结果表明一个所述第一调用接口的所述第一信息未全包括在所述第二信息中时,确定该所述第一调用接口不包括在所述第二调用接口中;
步骤S133:当所述比对结果表明一个所述第一调用接口的所述第一信息全包括在所述第二信息中时,确定该所述第一调用接口包括在所述第二调用接口中;
其中,反复执行步骤S131至S133直至比对完每一个所述第一调用接口或直至发现有一个第一调用接口不包括在所述第二调用接口中。
所述第一信息可包括第一调用接口的类、类名、函数、参数以及返回值等信息。所述第二信息可包括第二调用接口的类、类名、函数、参数以及返回值等信息。
所述步骤S130具体可为:将第一解析结果中获得的第一调用接口的类、类名、函数、参数以及返回值等信息分别与第二解析结果中各个第二调用接口的类、类名、函数、参数以及返回值等信息进行比较,若比较结果一致,则可认为该第一调用接口包括在第二调用接口中,否则认为该第一调用接口不包括在第二调用接口中。
本实施例相对与上一方法实施例提供了具体如何根据解析结果获取确定第一调用接口是否包括在第二调用接口中的方法,实现简便快捷。
方法实施例四:
如图1所述,本实施例提供一种插件与宿主兼容性的检测方法,所述方法包括:
步骤S110:获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
步骤S120:获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
步骤S130:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
步骤S140:依据判断结果确定所述插件是否与所述宿主兼容。
所述步骤S110中获取第一调用接口,可以通过解析所述插件的源代码等方法来确定;所述步骤S120中获取第二调用接口,也可以通过解析宿主的源代码等方法来确定。在具体的实现过程中,所述第一调用接口可以为一个或多个;
所述第二调用接口为所述宿主调用插件的所有调用接口的总称,至少包括一个。
所述步骤S130中判断一个插件是否与宿主兼容,是通过判定该插件的所述的第一调用接口是否包括在宿主可提供的第二调用接口中。
如图4所示,所述步骤S110可包括:
步骤S111:获取所述插件的编译信息;
步骤S112:解析所述插件的编译信息形成第一解析结果;
步骤S113:依据所述第一解析结果获取至少一个所述第一调用接口;
如图5所示,所述步骤S120可包括:
步骤S121:获取所述宿主的编译信息;
步骤S122:解析所述宿主的编译信息形成第二解析结果;
步骤S123:依据所述第二解析结果获取所述第二调用接口;
所述步骤S130中的所述判断每一个所述第一调用接口是否包括在所述第二调用接口中为:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中。
如图6a所示,所述步骤S130具体可包括:
步骤S131:将所述第一解析结果中,描述每一个所述第一调用接口的第一信息与所述第二解析结果中第二调用接口的第二信息进行比对,形成比对结果
步骤S132:当所述比对结果表明一个所述第一调用接口的所述第一信息未全包括在所述第二信息中时,确定该所述第一调用接口不包括在所述第二调用接口中;
步骤S133:当所述比对结果表明一个所述第一调用接口的所述第一信息全包括在所述第二信息中时,确定该所述第一调用接口包括在所述第二调用接口中。
所述步骤S140可包括:
当依据所述第一解析结果及所述第二解析结果判断出至少有一个所述第一调用接口不包括在所述第二调用接口中时,确定所述插件与所述宿主不兼容;
当依据所述第一解析结果及所述第二解析结果判断出每一个所述第一调用接口都包括在所述第二调用接口中时,包括如图6b所示的步骤,具体如下:
步骤S141:从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;
步骤S142:从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;
步骤S143:判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致,
若一致时,则进入步骤S144;
若不一致时,则进入步骤S145;
步骤S144:确定所述插件与所述宿主兼容;
步骤S145:确定所述插件与所述宿主不兼容。
在具体的实现过程中,为了加快检测速度,所述步骤S141和步骤S142不局限于在当在步骤S130中确定了第一调用接口全部包括在第二调用接口之后执行,也可以与所述步骤S130同步执行等;只是执行所述步骤S143的条件为:当依据所述第一解析结果及所述第二解析结果判断出每一个所述第一调用接口都包括在所述第二调用接口中时。
如当所述宿主和插件都是由JAVA语言编写的程序时,为了压缩和加密代码,防止反编译及计算机可执行程序过大,将进行混淆处理,在本实施例中还考虑了混淆处理对插件与宿主兼容性的影响,从而提高了检测结果的准确性和精确度。
具体的如,第一调用接口和第二调用接口的类名都class AA;但是经混淆处理后,第一调用接口对应的class AA被映射为class a,第二调用接口对应的class AA被映射为class a1;此时即便第一调用接口包括在第二调用接口中,插件与宿主也不兼容。
方法实施例五:
如图7所述,本实施例提供一种插件与宿主兼容性的检测方法,所述方法包括:
步骤S110:获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
步骤S120:获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
步骤S130:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
步骤S140:依据判断结果确定所述插件是否与所述宿主兼容。
步骤S150:在所述依据判断结果确定所述插件是否与所述宿主兼容之后,依据确定结果形成所述宿主的兼容配置文件。
本实施例是在上述任一方法实施例的基础上的进一步的改进,在执行步骤S140之后,还包括根据判断结果形成兼容配置文件。
所述兼容配置文件可以仅包括宿主不兼容的插件的插件信息,也可以仅包括宿主兼容的插件的插件信息,也可以前述两者都包括。所述插件信息可包括插件名等标识插件的信息。
所述兼容配置文件用于所述宿主安装到客户端后,为客户端删除与所述宿主不兼容的插件及加载与宿主兼容的插件提供依据。
在本实施例中,优选所述兼容配置文件包括与所述宿主兼容的插件信息。
若所述兼容配置文件中仅记载了与宿主不兼容的插件的插件信息,通常若宿主已经更新到多个版本,宿主不兼容的插件的个数较多,若采用一一列举的方式,可能会造成信息量大且容易出现遗漏等问题,将导致插件删除不完全的问题。
而兼容配置文件仅包括与宿主兼容的插件的插件信息时,由于一个新开发的宿主通常插件数较少,从而信息量小。
方法实施例六:
如图7所述,本实施例提供一种插件与宿主兼容性的检测方法,所述方法包括:
步骤S110:获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
步骤S120:获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
步骤S130:依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
步骤S140:依据判断结果确定所述插件是否与所述宿主兼容。
步骤S150:在所述依据判断结果确定所述插件是否与所述宿主兼容之后,依据确定结果形成所述宿主的兼容配置文件。
本实施例是在上述任一方法实施例的基础上的进一步的改进,在执行步骤S140之后,还包括根据确定结果形成兼容配置文件的步骤。
所述兼容配置文件可以仅包括宿主不兼容的插件的插件信息,也可以仅包括宿主兼容的插件的插件信息,也可以前述两者都包括。所述插件信息可包括插件名等标识插件的信息。
所述插件为与第N-1版本宿主兼容的插件;
所述第N-1版本宿主为所述第N版本宿主的前一版本宿主;
其中,所述N为不小于2的整数。
在具体的实现过程中,为了简化插件与宿主之间兼容性检测操作,通常仅将最新发布的宿主,如第N版本宿主,与前一版本的宿主(如第N-1版本宿主)的插件进行兼容性检测;由于宿主在开发过程中具有一定的继承性,通常第N版本的宿主是在第N-1版本宿主的基础上的改进或重新开发,以实现通过第N版本宿主的开发,解决第N-1版本宿主不能解决的一些问题。如在第N-1版本宿主需要调用插件才能解决的问题B,则第N版本宿主可不调用插件就能解决问题B;原因可能是第N版本宿主把插件的内容已经写到了宿主自身中了,此时就不需要再调用对应的插件。故第N-1版本宿主不需要调用的插件,通常第N版本也不需要调用,在进行插件与第N版本宿主的兼容性时,可以利用上述原理,仅对第N版本宿主与对应于第N-1版本兼容的插件进行兼容性检测,而无需所有插件与第N版本宿主的兼容性的检测,从而降低了检测的工作量,提高了检测效率。
且进一步的,在本实施例中依然优选为所述兼容配置文件包括与第N版本宿主兼容的插件信息。其中,所述兼容配置文件用于所述宿主安装到客户端后,为客户端删除与所述宿主不兼容的插件提供依据。
原因是:但是在具体的实际应用过程中,客户端可能从第一版本宿主一下升级到第三版本的宿主;这样若兼容配置文件通过与第二版本插件兼容性检测,仅包括了对应于第二版本宿主不兼容的插件,可能导致不能完全删除与第三版本不兼容的插件。如一个插件A仅与第一版本宿主兼容,若对应于第三版本的兼容配置文件中,仅包括了第三版本不兼容且与第二版本兼容的插件,客户端依据所述兼容配置文件,将无法删除插件A,导致不能彻底删除不予宿主兼容的插件。
但是采用配置文件中包括与宿主兼容的插件信息,则可以很好的解决上述问题。客户端在接收到所述兼容配置文件后,依据兼容配置文件确定哪些插件与宿主兼容,其他的都可以删除;从而实现简单。
综合上述,本实施例所述的方法在上述方法实施例的基础上,提出了一种提高检测效率的检测方法,其次通过使兼容配置文件包括与第N宿主兼容的插件的插件信息,从而同样的可以达到彻底删除与第N版本宿主不兼容插件的目的,且实现简便快捷。
方法实施例七:
如图8所示,本实施例提供一种插件删除方法,所述方法包括:
步骤S210:接收所述第N版本宿主的兼容配置文件;所述兼容配置文件包括与所述第N版本宿主兼容的插件信息;
步骤S220:依据所述兼容配置文件,删除与所述第N版本宿主不兼容的插件;
其中,所述兼容配置文件是根据方法实施例一至方法实施例六任一项所述方法形成的;
所述第N版本宿主为已经安装在所述客户端的宿主。
在所述步骤S210中,客户端可以在接收所述第N版本宿主的同时,一起接收与所述第N版本宿主一起发送的兼容配置文件;也可以单独仅接收所述兼容配置文件。
在步骤S220中,依据所述兼容配置文件删除与第N版本不兼容的插件,从而能减少客户端内的冗余插件,从而精简代码,降低代码维护成本。
方法实施例八:
步骤S210:接收所述第N版本宿主的兼容配置文件;所述兼容配置文件包括与所述第N版本宿主兼容的插件信息;
步骤S220:依据所述兼容配置文件,删除与所述第N版本宿主不兼容的插件;
其中,所述兼容配置文件是根据方法实施例一至方法实施例六任一项所述方法形成的;
所述第N版本宿主为已经安装在所述客户端的宿主。
所述步骤S210具体可为:
在接收第N版本宿主的同时,接收所述第N版本宿主的兼容配置文件;
所述步骤S220具体可为:
在将所述第N版本宿主替换第M版本宿主安装在所述客户端后,依据所述兼容配置文件删除与所述第N版本宿主不兼容的插件;
所述M不小于1的整数;所述M小于所述N。
在本实施例中将兼容配置文件与第N版本宿主一同接收,在将第N版本宿主替换第M版本宿主安装在所述客户端后,直接将与第N版本宿主不兼容的插件直接删除,实现更加简便,不用再次单独接收兼容配置文件,从而减少了客户端与检测服务器的交互次数;且在客户端安装好第N版本宿主后,能及时的删除了与第N版本宿主不兼容的插件。
方法实施例九:
如图9所示,本实施例提供一种加载方法,所述方法包括:
步骤S311:读取对应于已安装宿主的兼容配置文件;
步骤S312:依据所述兼容配置文件加载与所述宿主兼容的插件;
其中,所述兼容配置文件是根据方法实施例一至方法实施例六任一项所述方法形成的。
上述加载方法是插件的加载方法,应用于客户端;在加载插件的过程中,根据所述兼容配置文件仅加载与宿主兼容的配置文件,可以避免加载了与宿主不兼容的配置文件导致的加载异常。
方法实施例十:
如图10所示,本实施例提供一种插件与宿主兼容性的检测方法,包括:
步骤S310:检测服务器获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
步骤S320:检测服务器获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
步骤S330:检测服务器依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
步骤S340:检测服务器依据判断结果形成兼容配置文件;
步骤S350:检测服务器向客户端发送兼容配置文件;
步骤S360:客户端接收兼容配置文件;
步骤S370:客户端依据兼容配置文件,删除与宿主不兼容的插件和/或加载与所述宿主兼容的插件。
在本实施例中所述检测服务器执行的步骤可参见方法实施例一至方法实施例六任一技术方案所述的方法;所述客户端执行的步骤可参见方法实施例七至方法实施例八或方法实施例九任一技术方案所述的方法。
综合上述,本发明实施例提供了一种插件与宿主兼容性的检测方法,提供了一种简便实现插件与宿主兼容性检测的方法,同时依据检测形成的判断结果删除与宿主不兼容的插件,从而避免客户端随之应用时间的增加,导致代码臃肿及代码维护费用高的问题。
设备实施例一:
如图10所示,本实施例提供一种检测服务器,所述服务器包括:
第一获取单元110,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
第二获取单元120,用于获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
判断单元130,用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
确定单元140,用于依据所述判断结果确定所述插件是否与所述宿主兼容。
所述检测服务器的具体结构可包括至少一个处理器、存储介质以及至少一个外部通信接口;所述处理器、存储介质及所述外部通信接口的任意两者之间通过总线连接,并通过总线进行数据交互。
所述存储介质上存储有计算机可执行指令;所述处理器读取并运行所述计算机可执行指令,可以执行上述各个单元的各项功能。
所述处理器可为微处理器、中央处理器、单片机、数字信号处理器或可编程逻辑阵列等具有处理功能的电子元器件。
所述外部通信接口具体可为收发天线等互联网通信接口,可用来收发信息,如向客户端发送信息。
所述第一获取单元110、第二获取单元120、判断单元130及确定单元140可为所述检测服务器的逻辑划分。以上仅是检测服务器的优选结构,但不限于上述结构。
本实施例所述的检测服务器可在实体上对应一个电子设备或多个通过互联网相互连接的电子设备群组。
本实施例所述检测服务器为方法实施例一所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例一中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
设备实施例二:
如图10所示,本实施例提供一种检测服务器,所述服务器包括:
第一获取单元110,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
第二获取单元120,用于获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
判断单元130,用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
确定单元140,用于依据判断结果确定所述插件是否与所述宿主兼容。
进一步地,
如图12所示,所述第一获取单元110可包括:
第一获取模块111,用于获取所述插件的编译信息;
第一解析模块112,用于解析所述插件的编译信息形成第一解析结果;
第二获取模块113,用于依据所述第一解析结果获取至少一个所述第一调用接口;
和/或
如图13所示,所述第二获取单元120包括:
第三获取模块121,用于获取所述宿主的编译信息;
第二解析模块122,用于解析所述宿主的编译信息形成第二解析结果;
第四获取模块123,用于依据所述第二解析结果获取所述第二调用接口;
所述判断单元130,具体用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中。
在具体的实现过程中,所述第一获取模块111和第三获取模块121的具体结构可包括编译器,通过直接对插件和宿主的源代码的编译形成所述插件的编译信息和宿主的编译信息。
所述第一获取模块111和第三获取模块121的具体结构还可是与编译器连接的通信接口,读取所述编译器形成的插件和宿主的编译信息。
所述第一解析模块112及第二解析模块122均可为现有电子设备或开发平台中的解析器。
本实施例所述检测服务器为方法实施例二所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例二中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
设备实施例三:
如图11所示,本实施例提供一种检测服务器,所述服务器包括:
第一获取单元110,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
第二获取单元120,用于获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
判断单元130,用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
确定单元140,用于依据判断结果确定所述插件是否与所述宿主兼容。
进一步地,
如图12所示,所述第一获取单元110可包括:
第一获取模块111,用于获取所述插件的编译信息;
第一解析模块112,用于解析所述插件的编译信息形成第一解析结果;
第二获取模块113,用于依据第一解析结果获取至少一个所述第一调用接口;
和/或
如图13所示,所述第二获取单元120包括:
第三获取模块121,用于获取所述宿主的编译信息;
第二解析模块122,用于解析所述宿主的编译信息形成第二解析结果;
第四获取模块123,用于依据所述第二解析结果获取所述第二调用接口;
所述判断单元130,具体用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中。
如图14所示,所述判断单元130可包括:
对比模块131,用于将所述第一解析结果中,描述每一个所述第一调用接口的第一信息与所述第二解析结果中第二调用接口的第二信息进行比对,形成对比结果;
确定模块132,用于当所述对比结果表明一个所述第一调用接口的所述第一信息全包括在所述第二信息中时,从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致,当所述第一混淆表信息与对应的第二调用接口的所述第二混淆信息一致时,确定所述插件与所述宿主兼容;当所述对比结果表明一个所述第一调用接口的所述第一信息未全包括在所述第二信息中时,确定所述该第一调用接口不包括在所述第二调用接口中。
在具体的实施过程中,所述确定模块132还用于当所述第一混淆表信息与对应的第二调用接口的所述第二混淆信息不一致时,确定所述插件与所述宿主不兼容。
所述对比模块131的具体结构可包括比较器或具有比较功能的处理器。
所述确定模块132的具体结构同样可对应于处理器;且可与所述对比模块131集成对应于同一处理器。
本实施例所述检测服务器为方法实施例三所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例三中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
设备实施例四:
如图11所示,本实施例提供一种检测服务器,所述服务器包括:
第一获取单元110,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
第二获取单元120,用于获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
判断单元130,用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
确定单元140,用于依据判断结果确定所述插件是否与所述宿主兼容。
进一步地,
如图12所示,所述第一获取单元110可包括:
第一获取模块111,用于获取所述插件的编译信息;
第一解析模块112,用于解析所述插件的编译信息形成第一解析结果;
第二获取模块113,用于依据所述第一解析结果获取至少一个所述第一调用接口;
和/或
如图13所示,所述第二获取单元120包括:
第三获取模块121,用于获取所述宿主的编译信息;
第二解析模块122,用于解析所述宿主的编译信息形成第二解析结果;
第四获取模块123,用于依据所述第二解析结果获取所述第二调用接口;
所述判断单元130,具体用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中。
在具体的实现过程中,所述第一获取模块111和第三获取模块121的具体结构可包括编译器,通过直接对插件和宿主的源代码的编译形成所述插件的编译信息和宿主的编译信息。
所述第一获取单元110,还用于从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;
所述第二获取单元120,还用于从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;
所述判断单元130,还用于当依据所述第一解析结果及所述第二解析结果判断出每一个所述第一调用接口都包括在所述第二调用接口中时,判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致;
所述确定单元140,具体用于每一个所述第一调用接口包括在所述第二调用接口中,且所述第一调用接口的第一混淆表信息与对应的第二调用接口的所述第二混淆信息中一致时,确定所述插件与所述宿主兼容;否则确定所述插件与所述宿主不兼容。
本实施例是在前述两个实施例的基础上的进一步限定,具体限定了各个功能单元是如何检测插件与宿主兼容性的。
本实施例所述检测服务器为方法实施例四所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例四中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
设备实施例五:
如图11所示,本实施例提供一种检测服务器,所述服务器包括:
第一获取单元110,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
第二获取单元120,用于获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
判断单元130,用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
确定单元140,用于依据判断结果确定所述插件是否与所述宿主兼容。
所述检测服务器还包括:
形成单元,用于在所述依据判断结果确定所述插件是否与所述宿主兼容之后,依据确定结果形成所述宿主的兼容配置文件。
所述形成单元依据检测形成的确定结果形成兼容配置文件,其具体结构同样的对应于处理器。
所述兼容配置文件用于所述宿主安装到客户端时,为客户端删除与所述宿主不兼容的插件及加载与宿主兼容的插件提供依据;具体可包括与宿主兼容的插件信息及与宿主不兼容的插件信息中的至少之一。当所述兼容配置文件同时包括与宿主兼容的插件信息和与宿主不兼容的插件信息时,还包括标识信息;所述标注信息是用来指示哪些插件信息所对应的插件是与宿主兼容的,哪些插件信息所对应的插件是与宿主不兼容的。
优选地,所述兼容配置文件包括与所述宿主兼容的插件信息。
本实施例所述检测服务器为方法实施例五所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例五中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
设备实施例六:
如图11所示,本实施例提供一种检测服务器,所述服务器包括:
第一获取单元110,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
第二获取单元120,用于获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
判断单元130,用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
确定单元140,用于依据判断结果确定所述插件是否与所述宿主兼容。
所述检测服务器还包括:
形成单元,用于在所述依据判断结果确定所述插件是否与所述宿主兼容之后,依据确定结果形成所述宿主的兼容配置文件。
所述形成单元依据检测形成的确定结果形成兼容配置文件,其具体结构同样的可对应于处理器。
其中,所述宿主为第N版本宿主;
所述插件为与第N-1版本宿主兼容的插件;
所述第N-1版本宿主为所述第N版本宿主的前一版本宿主;
其中,所述N为不小于2的整数。
在本实施例所述的检测服务器,第一获取单元110获取的是与第N-1版本宿主兼容的插件的第一调用接口;第二获取单元120获取的是第N版本宿主的第二调用接口,能减少检测操作的繁琐度,提高检测效率。
本实施例所述检测服务器为方法实施例六所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例六中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
设备实施例七:
如图15所示,本实施例提供一种客户端,所述客户端包括:
接收单元210,用于接收所述第N版本宿主的兼容配置文件;所述兼容配置文件包括与所述第N版本宿主兼容的插件信息;
删除单元220,用于依据所述兼容配置文件,删除与所述第N版本宿主不兼容的插件;
其中,所述兼容配置文件是根据设备实施例一至设备实施例六中所述检测服务器的对插件与宿主兼容性的检测形成的。
所述接收单元210的具体结构可包括接收接口,如接收天线及其他互联网接收接口,如RJ45及光线通信接口等。
在具体的实现过程中,所述客户端还包括存储介质,所述存储介质可包括ROM、RAM或flash等存储介质,优选为可读写的非瞬间存储介质。
所述删除单元220的具体结构可包括处理器,可依据所述接收单元220接收的兼容配置文件,删除存储在所述存储介质中与客户端中安装的宿主不兼容的插件,以精简客户端中的代码,降低维护代码的成本。
所述客户端的具体结构可为手机(如安卓手机)或平板电脑等电子设备。
本实施例所述检测服务器为方法实施例七所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例七中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
设备实施例八:
如图15所示,本实施例提供一种客户端,所述客户端包括:
接收单元210,用于接收所述第N版本宿主的兼容配置文件;所述兼容配置文件包括与所述第N版本宿主兼容的插件信息;
删除单元220,用于依据所述兼容配置文件,删除与所述第N版本宿主不兼容的插件;
其中,所述兼容配置文件是根据设备实施例一至设备实施例六中所述检测服务器的对插件与宿主兼容性的检测形成的。
所述接收单元210,具体用于在接收第N版本宿主的同时,接收所述第N版本宿主的兼容配置文件;
所述删除单元220,具体在将所述第N版本宿主替换第M版本宿主安装在所述客户端后,依据所述兼容配置文件删除与所述第N版本宿主不兼容的插件;
所述M不小于1的整数;所述M小于所述N。
本实施例所述检测服务器为方法实施例八所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例八中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
设备实施例十:
如图16所示,本实施例提供一种客户端,所述客户端包括:
读取单元311,用于读取对应于已安装宿主的兼容配置文件;
加载单元312,用于依据所述兼容配置文件加载与所述宿主兼容的插件;
所述兼容配置文件是根据设备实施例一至设备实施例六中所述检测服务器的对插件与宿主兼容性的检测形成的。
在具体的实现过程中,所述客户端还包括存储介质,所述存储介质存储有所述兼容配置文件;
本实施例所述读取单元311及加载单元312的具体结构可包括处理器,所述处理器与所述存储介质通过总线等客户端内部的通信接口相连。
所述处理器可包括微处理器、中央处理器、数字信号处理器或具有可编程逻辑阵列等具有处理功能的电子元器件。
在本实施例中通过所述读取单元311及加载单元312的设置,在加载插件时,根据兼容配置文件仅加载与已安装宿主兼容的插件,从而避免宿主与插件不兼容导致的加载异常。
本实施例所述的客户端为方法实施例所述的方法提供了硬件支撑,具体结构可是智能手机或平板电脑等设备。
设备实施例十:
如图17所示,本实施例提供一种通信***,所述通信***包括:
检测服务器310,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;及依据所述判断结果形成兼容配置文件;及向客户端发送兼容配置文件;
客户端320,用于接收兼容配置文件;及依据兼容配置文件,删除与宿主不兼容的插件和/或加载与所述宿主兼容的插件。
所述检测服务器310通过网络与所述客户端320连接,并通过网络与所述客户端交互信息;所述网络可包括有线网或无线网或有线网与无线网的混合网络。
本实施例所述检测服务器为方法实施例九所述插件与宿主兼容性的检测方法,提供了硬件支撑,能用于实现方法实施例九中任一技术方案所述的方法,同样的具有能检测出插件与宿主的兼容性,并依据检测形成的判断结果删除与宿主不兼容的插件,能减少客户端中冗余的插件,精简客户端中的代码,降低代码维护成本。
本发明实施例还记载了一个实施例,具体如图18所示,所述方法插件删除方法包括:
步骤S411:解析插件的编译信息;
步骤S412:依据步骤S411的解析结果,得到该插件被调用时的所有调用接口;
步骤S413:排除对插件自身及***类调用接口,获得被宿主调用需要的第一调用接口;
步骤S414:判断是否有未比对的第一调用接口;若是,则进入步骤S420;若否,则进入步骤S415;
步骤S420:选定一个未比对的第一调用接口为下一比对的调用接口;
步骤S421:通过反射机制判断该调用接口是否在新版宿主的混淆后的信息中;若否,则进入步骤S425;若是,则进入步骤S422;
步骤S422:解析比对该调用接口在插件和新版宿主中的两个混淆表;
步骤S423:判断该调用接口的映射关系在插件和新版宿主的混淆表中是否完全一致;若是,则进入步骤S414;若否,则进入步骤S425;
步骤S415:确定该插件与新版宿主兼容;
步骤S425:确定该插件与新版宿主不兼容。
本发明实施例所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的所述插件与宿主兼容性的检测方法、插件删除方法及加载方法的至少其中之一。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (12)

1.一种插件与宿主兼容性的检测方法,其特征在于,所述方法包括:
获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
依据所述判断结果确定所述插件是否与所述宿主兼容。
2.根据权利要求1所述的方法,其特征在于,
所述获取所述插件的第一解析结果包括:
获取所述插件的编译信息;
解析所述插件的编译信息形成第一解析结果;
所述获取所述宿主的第二解析结果包括:
获取所述宿主的编译信息;
解析所述宿主的编译信息形成第二解析结果。
3.根据权利要求1或2所述的方法,其特征在于,
所述依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中包括:
将所述第一解析结果中,描述每一个所述第一调用接口的第一信息与所述第二解析结果中第二调用接口的第二信息进行比对,形成比对结果;
当所述比对结果表明一个所述第一调用接口的所述第一信息全包括在所述第二信息中时,确定该所述第一调用接口包括在所述第二调用接口中;
当所述比对结果表明一个所述第一调用接口的所述第一信息未全包括在所述第二信息中时,确定该所述第一调用接口不包括在所述第二调用接口中。
4.根据权利要求1或2所述的方法,其特征在于,
所述依据所述判断结果确定所述插件是否与所述宿主兼容包括:
当依据所述第一解析结果及所述第二解析结果判断出至少有一个所述第一调用接口不包括在所述第二调用接口中时,确定所述插件与所述宿主不兼容;当依据所述第一解析结果及所述第二解析结果判断出每一个所述第一调用接口都包括在所述第二调用接口中时,
从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;
从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;
判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致,
若一致时,则确定所述插件与所述宿主兼容。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在所述依据判断结果确定所述插件是否与所述宿主兼容之后,依据确定结果形成所述宿主的兼容配置文件。
6.根据权利要求5所述的方法,其特征在于,
所述兼容配置文件包括与所述宿主兼容的插件信息。
7.一种检测服务器,其特征在于,所述服务器包括:
第一获取单元,用于获取所述插件的第一解析结果,依据所述第一解析结果获取所述插件被宿主调用时需要用到的至少一个第一调用接口;
第二获取单元,用于获取所述宿主的第二解析结果,依据所述第二解析结果获取所述宿主用于调用插件的第二调用接口;
判断单元,用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中,形成判断结果;
确定单元,用于依据所述判断结果确定所述插件是否与所述宿主兼容。
8.根据权利要求7所述的检测服务器,其特征在于,
所述第一获取单元包括:
第一获取模块,用于获取所述插件的编译信息;
第一解析模块,用于解析所述插件的编译信息形成第一解析结果;
第二获取模块,用于依据所述第一解析结果获取至少一个所述第一调用接口;
所述第二获取单元包括:
第三获取模块,用于获取所述宿主的编译信息;
第二解析模块,用于解析所述宿主的编译信息形成第二解析结果;
第四获取模块,用于依据所述第二解析结果获取所述第二调用接口;
所述判断单元,具体用于依据所述第一解析结果及所述第二解析结果判断每一个所述第一调用接口是否包括在所述第二调用接口中。
9.根据权利要求7或8所述的检测服务器,其特征在于,
所述判断单元包括:
对比模块,用于将所述第一解析结果中,描述每一个所述第一调用接口的第一信息与所述第二解析结果中第二调用接口的第二信息进行比对,形成对比结果;
确定模块,用于当所述对比结果表明一个所述第一调用接口的所述第一信息全包括在所述第二信息中时,从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致,当所述第一混淆表信息与对应的第二调用接口的所述第二混淆信息一致时,确定所述插件与所述宿主兼容;当所述对比结果表明一个所述第一调用接口的所述第一信息未全包括在所述第二信息中时,确定所述该第一调用接口不包括在所述第二调用接口中。
10.根据权利要求7或8所述的检测服务器,其特征在于,
所述第一获取单元,还用于从所述第一解析结果中,获取所述第一调用接口的第一混淆表信息;
所述第二获取单元,还用于从所述第二解析结果中,获取所述第二调用接口的第二混淆表信息;
所述判断单元,还用于当依据所述第一解析结果及所述第二解析结果判断出每一个所述第一调用接口都包括在所述第二调用接口中时,判断所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息是否一致;
所述确定单元,具体用于每一个所述第一调用接口包括在所述第二调用接口中,且所述第一调用接口的所述第一混淆表信息与对应的第二调用接口的所述第二混淆表信息一致时,确定所述插件与所述宿主兼容;否则确定所述插件与所述宿主不兼容。
11.根据权利要求7或8所述的检测服务器,其特征在于,所述检测服务器还包括:
形成单元,用于在所述依据判断结果确定所述插件是否与所述宿主兼容之后,依据确定结果形成所述宿主的兼容配置文件。
12.根据权利要求11所述的检测服务器,其特征在于,
所述兼容配置文件包括与所述宿主兼容的插件信息。
CN201410273180.0A 2014-06-18 2014-06-18 插件与宿主兼容性的检测方法及检测服务器 Active CN104008060B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410273180.0A CN104008060B (zh) 2014-06-18 2014-06-18 插件与宿主兼容性的检测方法及检测服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410273180.0A CN104008060B (zh) 2014-06-18 2014-06-18 插件与宿主兼容性的检测方法及检测服务器

Publications (2)

Publication Number Publication Date
CN104008060A true CN104008060A (zh) 2014-08-27
CN104008060B CN104008060B (zh) 2017-02-01

Family

ID=51368720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410273180.0A Active CN104008060B (zh) 2014-06-18 2014-06-18 插件与宿主兼容性的检测方法及检测服务器

Country Status (1)

Country Link
CN (1) CN104008060B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598247A (zh) * 2015-02-03 2015-05-06 厦门美图网科技有限公司 一种第三方库的校验方法和***
CN104866341A (zh) * 2015-05-07 2015-08-26 北京金山安全软件有限公司 一种组件升级方法、装置及终端
CN105138451A (zh) * 2015-07-31 2015-12-09 百度在线网络技术(北京)有限公司 一种用于测试插件的功能的方法、装置和***
CN105511909A (zh) * 2015-11-26 2016-04-20 北京奇虎科技有限公司 处理插件的方法及装置
CN107203461A (zh) * 2016-03-16 2017-09-26 阿里巴巴集团控股有限公司 兼容性测试方法及装置
CN107273142A (zh) * 2017-07-12 2017-10-20 北京潘达互娱科技有限公司 程序更新方法、程序运行方法及装置
CN107291503A (zh) * 2017-06-23 2017-10-24 广东神马搜索科技有限公司 应用程序升级设备、装置及方法
CN107341106A (zh) * 2017-06-21 2017-11-10 努比亚技术有限公司 应用程序兼容性检测方法、开发终端及存储介质
CN107943532A (zh) * 2017-11-06 2018-04-20 北京潘达互娱科技有限公司 直播软件升级包发布方法、装置、电子设备以及存储介质
CN108197020A (zh) * 2017-12-28 2018-06-22 掌阅科技股份有限公司 插件校验方法、电子设备及计算机存储介质
CN108415844A (zh) * 2018-03-22 2018-08-17 北京奇虎科技有限公司 插件化调试方法及装置
CN111190791A (zh) * 2019-12-20 2020-05-22 北京你财富计算机科技有限公司 应用异常上报方法、装置和电子设备
CN113535194A (zh) * 2021-07-23 2021-10-22 平安国际智慧城市科技股份有限公司 安装包的更新方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467392B1 (en) * 2004-09-10 2008-12-16 Microsoft Corporation System and method for supporting new and existing extensions to application programming interfaces
CN101566954A (zh) * 2009-05-31 2009-10-28 珠海金山软件股份有限公司 一种管理插件的方法及管理插件的装置
CN103197972A (zh) * 2013-04-28 2013-07-10 北京奇虎科技有限公司 浏览器插件的管理方法及装置、浏览器与插件的交互***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467392B1 (en) * 2004-09-10 2008-12-16 Microsoft Corporation System and method for supporting new and existing extensions to application programming interfaces
CN101566954A (zh) * 2009-05-31 2009-10-28 珠海金山软件股份有限公司 一种管理插件的方法及管理插件的装置
CN103197972A (zh) * 2013-04-28 2013-07-10 北京奇虎科技有限公司 浏览器插件的管理方法及装置、浏览器与插件的交互***

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598247A (zh) * 2015-02-03 2015-05-06 厦门美图网科技有限公司 一种第三方库的校验方法和***
CN104866341A (zh) * 2015-05-07 2015-08-26 北京金山安全软件有限公司 一种组件升级方法、装置及终端
CN104866341B (zh) * 2015-05-07 2018-10-09 北京金山安全软件有限公司 一种组件升级方法、装置及终端
CN105138451A (zh) * 2015-07-31 2015-12-09 百度在线网络技术(北京)有限公司 一种用于测试插件的功能的方法、装置和***
CN105138451B (zh) * 2015-07-31 2017-12-26 百度在线网络技术(北京)有限公司 一种用于测试插件的功能的方法、装置和***
CN105511909B (zh) * 2015-11-26 2018-09-11 北京奇虎科技有限公司 处理插件的方法及装置
CN105511909A (zh) * 2015-11-26 2016-04-20 北京奇虎科技有限公司 处理插件的方法及装置
CN107203461A (zh) * 2016-03-16 2017-09-26 阿里巴巴集团控股有限公司 兼容性测试方法及装置
CN107203461B (zh) * 2016-03-16 2020-11-06 创新先进技术有限公司 兼容性测试方法及装置
CN107341106A (zh) * 2017-06-21 2017-11-10 努比亚技术有限公司 应用程序兼容性检测方法、开发终端及存储介质
CN107341106B (zh) * 2017-06-21 2021-06-15 努比亚技术有限公司 应用程序兼容性检测方法、开发终端及存储介质
CN107291503A (zh) * 2017-06-23 2017-10-24 广东神马搜索科技有限公司 应用程序升级设备、装置及方法
CN107273142A (zh) * 2017-07-12 2017-10-20 北京潘达互娱科技有限公司 程序更新方法、程序运行方法及装置
CN107273142B (zh) * 2017-07-12 2021-04-23 北京龙之心科技有限公司 程序更新方法、程序运行方法及装置
CN107943532A (zh) * 2017-11-06 2018-04-20 北京潘达互娱科技有限公司 直播软件升级包发布方法、装置、电子设备以及存储介质
CN108197020A (zh) * 2017-12-28 2018-06-22 掌阅科技股份有限公司 插件校验方法、电子设备及计算机存储介质
CN108415844A (zh) * 2018-03-22 2018-08-17 北京奇虎科技有限公司 插件化调试方法及装置
CN111190791A (zh) * 2019-12-20 2020-05-22 北京你财富计算机科技有限公司 应用异常上报方法、装置和电子设备
CN113535194A (zh) * 2021-07-23 2021-10-22 平安国际智慧城市科技股份有限公司 安装包的更新方法、装置、计算机设备及存储介质
CN113535194B (zh) * 2021-07-23 2024-07-09 平安国际智慧城市科技股份有限公司 安装包的更新方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN104008060B (zh) 2017-02-01

Similar Documents

Publication Publication Date Title
CN104008060A (zh) 插件与宿主兼容性的检测方法及检测服务器
CN109062617B (zh) 一种支持多类型设备的平台的应用方法、移动终端
US9558016B2 (en) Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product
CN103679029A (zh) 一种修复山寨应用程序的方法及装置
CN105009139A (zh) 用于恶意软件检测的对应用的通用拆包
CN103412769A (zh) 外接卡参数配置方法、设备以及***
US10318479B2 (en) Method and device for automatically identifying junk file
CN104008340A (zh) 病毒查杀方法及装置
CN105138382A (zh) 一种Android***升级的方法及终端
CN104220987A (zh) 应用安装
CN106293782A (zh) 一种***升级方法及终端
CN103530552B (zh) Native API函数重构方法及装置
CN106909362A (zh) Bmc固件生成的方法和装置、bmc***启动的方法和装置
CN103631573A (zh) 可迁移函数执行时间的获得方法及***
CN111538521A (zh) 智能合约部署、交易方法及装置
CN104462968A (zh) 恶意应用程序的扫描方法、装置和***
CN105739961A (zh) 一种嵌入式***的启动方法和装置
WO2018014798A1 (zh) 机顶盒动态配置多ca的方法及***
US9513762B1 (en) Static content updates
CN106055375A (zh) 应用程序安装方法及装置
CN112000382A (zh) 一种Linux***启动方法、装置及可读存储介质
CN110515671B (zh) 初始化方法、初始化装置、终端设备及可读存储介质
KR102128472B1 (ko) 인-스토리지 컴퓨팅 동작들을 수행할 수 있는 스토리지 장치, 이의 동작 방법, 및 이를 포함하는 시스템
CN105335432A (zh) oracle数据库访问方法
CN104462969A (zh) 查杀恶意应用程序的方法、装置和***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant