CN112764797A - 软件兼容性检测方法、装置、电子装置和存储介质 - Google Patents
软件兼容性检测方法、装置、电子装置和存储介质 Download PDFInfo
- Publication number
- CN112764797A CN112764797A CN202110011101.9A CN202110011101A CN112764797A CN 112764797 A CN112764797 A CN 112764797A CN 202110011101 A CN202110011101 A CN 202110011101A CN 112764797 A CN112764797 A CN 112764797A
- Authority
- CN
- China
- Prior art keywords
- dynamic link
- link library
- version number
- app file
- api function
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种软件兼容性检测方法、装置、电子装置和存储介质,其中,该软件兼容性检测方法包括:获取APP文件,提取APP文件中封装的API函数信息,API函数信息包括APP文件中应用的API函数所依赖的各个动态链接库的最高版本号,将每个动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,实际动态链接库为系统所使用的链接库,当任意一动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定APP文件与系统中的实际动态链接库版本不兼容。通过本申请,解决了支撑平台将编译时的动态链接库版本与自身的动态链接库版本进行比较,导致兼容性检测范围大、效率低的问题,提高了应用程序兼容性检测效率和准确度。
Description
技术领域
本申请涉及电子技术领域,特别是涉及软件兼容性检测方法、装置、电子装置和存储介质。
背景技术
在软件开发过程中,动态链接库作为一种常见的模块组织形式被用于软件开发工作中。应用程序(APP)从开发到运行,一般经过三个环节,即应用程序的开发、应用程序安装到支撑平台、应用程序在支撑平台中运行。其中,应用程序的开发环节通常会引用动态链接库公开的API头文件进行程序开发。当应用程序引用高版本的动态链接库进行集成并构成一个完整的应用程序时,可能发生应用程序引用的动态链接库的版本高于支撑平台实际集成的动态链接库的版本,发生应用程序与支撑平台不兼容的问题。
因此应用程序被安装到对应的支撑平台中运行时,通常会存在一个兼容性判断的过程。在相关技术中,通常的兼容性检测方法为,支撑平台将可执行程序在编译链接的时采用的动态链接库的版本与自身实际集成的动态链接库的版本进行比较,根据比较结果判断兼容性。这种方法没有切实考虑调用者具体使用了哪些API,以及这些API所依赖的动态链接库的版本,其兼容性检测范围大,并且常常出现兼容性检测错误的情况。
目前针对相关技术中支撑平台将编译时的动态链接库版本与自身的动态链接库版本进行比较,导致兼容性检测范围大、效率低的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种软件兼容性检测方法、装置、电子装置和存储介质,以至少解决相关技术中支撑平台将编译时的动态链接库版本与自身的动态链接库版本进行比较,导致兼容性检测范围大、效率低的问题。
第一方面,本申请实施例提供了一种软件兼容性检测方法,包括:
获取APP文件;
提取所述APP文件中封装的API函数信息,所述API函数信息包括所述APP文件中应用的API函数所依赖的各个动态链接库的最高版本号;
将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为系统所使用的链接库;
当任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容。
在其中一些实施例中,所述提取所述APP文件中封装的API函数信息的步骤包括:
当系统安装所述APP文件时,提取所述APP文件中封装的API函数信息;
当确定到所述APP文件与本地存储器中的动态链接库的版本不兼容时,所述软件兼容性检测方法还包括:
终止安装所述APP文件。
在其中一些实施例中,所述提取所述APP文件中封装的API函数信息的步骤包括:
当系统运行所述APP文件时,提取所述APP文件中封装的API函数信息;
当确定到所述APP文件与本地存储器中的动态链接库的版本不兼容时,所述软件兼容性检测方法还包括:
终止运行所述APP文件。
在其中一些实施例中,所述将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤之前还包括:
查询所述系统中是否存在每个所述API函数所依赖的实际动态链接库;
若是,执行将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤。
在其中一些实施例中,所述将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤包括:
获取所述系统中预存的动态链接库信息表,所述动态链接库信息表包括所有实际动态链接库的标识信息以及对应的版本号;
根据所述标识信息查询所述动态链接库信息表中,所述动态链接库对应的实际动态链接库的版本号,并进行版本号比较。
在其中一些实施例中,还包括:
当检测到所述系统中任意一所述实际动态链接库的版本更新时,更新所述动态链接库信息表。
在其中一些实施例中,所述API函数信息封装在所述APP文件的头部信息中。
第二方面,本申请实施例提供了一种软件兼容性检测装置,包括获取模块、提取模块、比较模块和确定模块:
所述获取模块,用于获取APP文件;
所述提取模块,用于提取所述APP文件中封装的API函数信息,所述API函数信息包括所述APP文件中应用的API函数所依赖的各个动态链接库的最高版本号;
所述比较模块,用于将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为系统所使用的链接库;
所述确定模块,用于当任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容。
第三方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的软件兼容性检测方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的软件兼容性检测方法。
相比于相关技术,本申请实施例提供的软件兼容性检测方法,通过获取APP文件,提取APP文件中封装的API函数信息,API函数信息包括APP文件中应用的API函数所依赖的各个动态链接库的最高版本号,将每个动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,实际动态链接库为系统所使用的链接库,当任意一动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定APP文件与系统中的实际动态链接库版本不兼容,解决了支撑平台将编译时的动态链接库版本与自身的动态链接库版本进行比较,导致兼容性检测范围大、效率低的问题,缩小了应用程序对依赖的动态链接库的版本精确范围,提高了应用程序兼容性检测效率和准确度。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请第一实施例中软件兼容性检测方法的流程图;
图2为本申请第一实施例中APP文件封装示意图;
图3为本申请第二实施例中软件兼容性检测方法的流程图;
图4为本申请第三实施例中软件兼容性检测方法的流程图;
图5为本申请实施例的软件兼容性检测方法的硬件结构框图;
图6为本申请第四实施例中软件兼容性检测装置的结构框图;
图7为本申请第五实施例中软件兼容性检测装置的结构框图;
图8为本申请第六实施例中软件兼容性检测装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
请参阅图1,为本申请第一实施例中的软件兼容性检测方法,包括步骤S11~S14。
步骤S11,获取APP文件。
步骤S12,提取所述APP文件中封装的API函数信息,所述API函数信息包括所述APP文件中应用的API函数所依赖的各个动态链接库的最高版本号。
本实施例中的软件兼容性检测方法应用于终端中,该终端例如为手机、平板电脑、可穿戴设备等移动终端,或计算机终端及类似的运算装置。
APP(应用程序)一般在软件开发端如PC端,进行开发后,在终端上进行安装并运行。本实施例中在APP封装时,将API函数信息封装至APP文件中,该API函数信息包括APP文件应用的API函数所依赖的各个动态链接库的最高版本号。即APP文件中所使用的所有API函数所引用的每个动态链接库的最高版本号,与APP头文件、源文件等信息进行封装并打包到APP文件中。具体实施时,PC端进行APP封装过程包括如下步骤:
获取APP文件所应用的所有API函数所依赖的动态链接库的版本号;
根据获取的各个动态链接库的版本号确定每一类型的动态链接库的最高版本号;
将每一类型的动态链接库的最高版本号封装到APP文件中。可以理解的,进行APP文件封装时,动态链接库的库标识与对应的最高版本号一起封装到APP文件中。
其中,该APP文件所应用的API函数可根据API标记进行区分,即在进行APP开发时针对获取的SDK(软件开发工具包)中API函数添加API标记,根据该API标记来区分APP中应用的API函数。
具体的,开发环境中将集成API函数所依赖的动态链接库的版本汇总如表1所示。即对于开发环境中动态链接库的每个API进行版本管理,记录开发环境中每个API对应的动态链接库的版本。
表1
虽然可执行程序在编译链接时,采用了如表1中所示的API函数的动态链接库,但该APP文件中所有API函数使用情况如表2所示。当可执行程序在编译链接的时候,采用的是高版本的动态链接库,但实际应用到的是低版本的动态链接库,所以应用程序在运行时,支持平台中集成的动态链接库的版本应满足应用程序中被使用的API函数对应的动态链接库的最高版本。如下表2所示,为该应用程序使用到的所有外部函数列表,其中使用到的函数必须在支撑平台中集成的动态链接库中能够存在。
表2
API(函数名) | 程序是否使用 |
Function_1 | 是 |
Function_2 | 是 |
Function_3 | 否 |
Function_4 | 是 |
Function_5 | 否 |
…… | …… |
Function_a | 否 |
Function_b | 是 |
Function_xyz | 是 |
…… | …… |
根据表1结合表2的内容,最终得到APP文件中应用的所有API函数所依赖的动态链接库的最高版本号,如表3所示。即最后将表3中的信息封装至APP文件中。
表3
对应依赖的动态链接库 | 动态链接库的最高版本 |
Lib_A | V2 |
Lib_B | V2 |
Function_xyz | V2 |
可以理解的,该API函数信息可从APP中生成的可执行程序文件中获取。该可执行程序文如Linux系统下的ELF文件,其包含对应的外部链接函数的信息,通过这些信息能够获取到当前可执行文件对依赖的库的版本要求。
通常终端在应用程序安装和运行时,如升级过程,数据传输先将需要用于检测的信息封装中APP的头部,因此,如图2所示,为了尽可能的将版本兼容性检测过程前移,本实施例中可以将API函数信息封装在APP文件的头部信息中,因此在传输小量数据时,就可以开始版本兼容性检测,当兼容性检测不通过,后面的数据则无须进行传输或下载。
PC端完成APP的开发和封装后,在获取终端发送的APP文件安装请求时,将APP文件发送至对应的终端。终端获取到该APP文件后,进行解封并提取APP文件中封装的API函数信息。由于该API函数信息封装在文件的头部,因此在数据传输层即可解封得到该API函数信息。
步骤S13,将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为系统所使用的链接库。
步骤S14,当任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容。
终端系统提取到API函数信息后,需要进行APP文件版本的兼容性检测,即检测APP文件中API函数所引用的动态链接库的版本号与终端中存储的实际动态链接库的版本是否兼容。具体实施时,终端可通过动态库的固定接口获取实际动态链接库的版本号。
动态链接库在设计的时候会考虑向后兼容,即高版本兼容低版本,所以当API函数所依赖的动态链接库的版本Vx低于或等于系统实际动态链接库的版本Vy时,版本兼容性检查通过,应用程序可以被正常运行。如果Vx版本高于Vy版本,兼容性判断的逻辑将给出兼容失败的结果。
本实施例中,对应用程序所有API函数对应的动态链接库的进行版本管理,并在应用程序开发时将APP文件应用的API函数所依赖的各个动态链接库的最高版本号封装在APP文件中。系统获取到获取APP文件后提取该动态链接库的最高版本号,并与自身系统中对应的实际动态链接库的版本号进行比较,以此来确定应用程序与系统中的实际动态链接库是否兼容。本实施例可对库中每个API函数进行精确管理,缩小了应用程序对依赖的动态链接库的版本精确范围,提高了应用程序兼容性检测效率和准确度。
需要说明的是,APP文件中部分API函数所依赖的动态链接库可能在终端系统中无法找到对应的动态链接库,此种情况下APP将无法正常运行。因此,作为本申请的另一种可实施方式,所述将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤之前还包括:
查询所述系统中是否存在每个所述API函数所依赖的实际动态链接库;
若是,执行将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤。
请参阅图3,为申请第二实施例中的软件兼容性检测方法,包括步骤S21~S24。
步骤S21,获取APP文件。
步骤S22,当系统安装所述APP文件时,提取所述APP文件中封装的API函数信息,所述API函数信息包括所述APP文件中应用的API函数所依赖的各个动态链接库的最高版本号。
步骤S23,将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为系统所使用的链接库。
步骤S24,当任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容,并终止安装所述APP文件。
本实施例与第一实施例相比区别在于,本实施例中在安装该APP文件时进行文件版本兼容性检测。即在安装过程中从APP文件中提取如表3中的信息,并与终端系统中的实际动态链接库的版本进行比较,当实际动态链接库的版本不低于表3中的对应的版本号时,则允许安装,否则终止安装过程。
本实施例可以在终端获取到APP文件并在安装环节中即可判断出该APP文件的动态链接库的版本是否与终端系统中的动态链接库兼容,大大提高了兼容性检测的效率,避免不必要的程序运行。
可以理解的,应用程序安装过程主要是建立运行环境,若进行数据的提取则需要设置额外的程序进行数据解封,操作难度大。鉴于此,在本申请的另一实施例中,该APP文件兼容性检测环节还可在运行过程中进行检测。即在安装过程中不做兼容性判断,APP文件安装后,运行该APP文件时,提取该APP文件中封装的API函数信息;将每个动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,当任意一动态链接库的最高版本号高于对应的实际动态链接库的版本号时,终止运行APP文件。该方式较第二实施例虽然兼容性检测有一定的滞后,但是其操作更为简便。
具体实施时可根据终端系统的使用需求选择是在安装环境进行兼容性检测还是在运行环节进行兼容性检测。
进一步的,作为本申请的另一种可实施方式,所述将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤包括:
获取所述系统中预存的动态链接库信息表,所述动态链接库信息表包括所有实际动态链接库的标识信息以及对应的版本号;
根据所述标识信息查询所述动态链接库信息表中所述动态链接库对应的实际动态链接库的版本号,并进行版本号比较。
即在终端系统中预存有动态链接库信息表,该态链接库信息表记录了终端系统中所有动态链接库的标识信息以及对应的版本号,该标识信息用于识别动态连接库。当进行版本比较时,将APP文件中所依赖的动态链接库的版本号与态链接库信息表中对应的动态连接库的版本号进行比较。
通过该方式,可以避免终端系统中每安装一个应用程序均进行获取系统中实际动态链接库的版本号的操作,提高了终端系统对应用程序版本兼容性检测的效率。
进一步的,当检测到所述系统中任意一所述实际动态链接库的版本更新时,更新所述动态链接库信息表。
请参阅图4,为了清楚的说明本申请的构思,本申请第三实施例中给出了一种软件兼容性检测方法的具体实现方式,包括步骤S31~S37。
步骤S31,PC端获取API标记,以及获取PC端系统中所有API函数所依赖的动态链接库的版本号,所述API标记用于标识APP文件应用的API函数。
具体的,APP文件中应用的所有API函数即为软件开发工具中的API函数。该API标记可在PC端系统获取到软件开发工具包时,对该软件开发工具中的API函数进行标记。
步骤S32,所述PC端根据所述API标记在PC端系统中查询APP文件中应用的所有API函数所依赖的动态链接库的版本号。
即PC端根据该API标记在PC端系统中所有动态链接库的版本号中进行查询,以获取APP文件应用的所有API函数所依赖的动态链接库的版本号。
步骤S33,所述PC端根据获取的各个动态链接库的版本号确定每一类型的所述动态链接库的最高版本号。
该APP文件中应用的API函数有多种,并且存在多个API函数共用一个动态链接库的情况,因此,只需要统计每一类型的动态链接库的最高版本号。
步骤S34,所述PC端将每一类型的动态链接库的最高版本号封装到APP文件中,并发送至终端中。
步骤S35,所述终端获取APP文件,并提取所述APP文件应用的API函数所依赖的动态链接库的最高版本号。
步骤S36,所述终端将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为终端系统运行时所使用的链接库。
步骤S37,当所述终端判断到任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。以运行在终端上为例,图5为本申请实施例的软件兼容性检测方法的硬件结构框图。如图5所示,终端50可以包括一个或多个(图5中仅示出一个)处理器502(处理器502可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器504,可选地,上述终端还可以包括用于通信功能的传输设备506以及输入输出设备508。本领域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述终端的结构造成限定。例如,终端50还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。
存储器504可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的软件兼容性检测方法对应的计算机程序,处理器502通过运行存储在存储器504内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器504可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器504可进一步包括相对于处理器502远程设置的存储器,这些远程存储器可以通过网络连接至终端50。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备506用于经由一个网络接收或者发送数据。上述的网络具体实例可包括终端50的通信供应商提供的无线网络。在一个实例中,传输设备506包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备506可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
本实施例还提供了一种软件兼容性检测装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
请参阅图6,为本申请第四实施例中的软件兼容性检测装置,包括:
获取模块10,用于获取APP文件;
提取模块20,用于提取所述APP文件中封装的API函数信息,所述API函数信息包括所述APP文件中应用的API函数所依赖的各个动态链接库的最高版本号;
比较模块30,用于将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为系统所使用的链接库;
确定模块40,用于当任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容。
进一步的,上述软件兼容性检测装置,其中,所述提取模块20用于:
当系统安装所述APP文件时,提取所述APP文件中封装的API函数信息;
所述软件兼容性检测装置还包括:
第一终止模块50,用于当确定到所述APP文件与本地存储器中的动态链接库的版本不兼容时,终止安装所述APP文件。
进一步的,上述软件兼容性检测装置,还包括:
查询模块60,用于查询所述系统中是否存在每个所述API函数所依赖的实际动态链接库;
当所述系统中存在每个所述API函数所依赖的实际动态链接库时,所述比较模块执行将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤。
进一步的,如图7所示,本申请的第五实施例提供了一种软件兼容性检测装置,其与第四实施例中软件兼容性检测装置结构基本相同,不同的是所述提取模块20用于:
当系统运行所述APP文件时,提取所述APP文件中封装的API函数信息;
所述软件兼容性检测装置还包括:
第二终止模块70,用于当确定到所述APP文件与本地存储器中的动态链接库的版本不兼容时,终止运行所述APP文件。
进一步的,如图8所示,本申请的第六实施例提供了一种软件兼容性检测装置,其与第四实施例中软件兼容性检测装置结构基本相同,不同的是所述比较模块30具体用于:
获取所述系统中预存的动态链接库信息表,所述动态链接库信息表包括所有实际动态链接库的标识信息以及对应的版本号;
根据所述标识信息查询所述动态链接库信息表中,所述动态链接库对应的实际动态链接库的版本号,并进行版本号比较。
具体的,该软件兼容性检测装置还包括:
更新模块80,用于当检测到所述系统中任意一所述实际动态链接库的版本更新时,更新所述动态链接库信息表。
本申请实施例所提供的软件兼容性检测装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取APP文件。
S2,提取所述APP文件中封装的API函数信息,所述API函数信息包括所述APP文件中应用的API函数所依赖的各个动态链接库的最高版本号。
S3,将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为系统所使用的链接库。
S4,当任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的软件兼容性检测方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种软件兼容性检测方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种软件兼容性检测方法,其特征在于,包括:
获取APP文件;
提取所述APP文件中封装的API函数信息,所述API函数信息包括所述APP文件中应用的API函数所依赖的各个动态链接库的最高版本号;
将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为系统所使用的链接库;
当任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容。
2.根据权利要求1所述的软件兼容性检测方法,其特征在于,所述提取所述APP文件中封装的API函数信息的步骤包括:
当系统安装所述APP文件时,提取所述APP文件中封装的API函数信息;
当确定到所述APP文件与本地存储器中的动态链接库的版本不兼容时,所述软件兼容性检测方法还包括:
终止安装所述APP文件。
3.根据权利要求1所述的软件兼容性检测方法,其特征在于,所述提取所述APP文件中封装的API函数信息的步骤包括:
当系统运行所述APP文件时,提取所述APP文件中封装的API函数信息;
当确定到所述APP文件与本地存储器中的动态链接库的版本不兼容时,所述软件兼容性检测方法还包括:
终止运行所述APP文件。
4.根据权利要求1所述的软件兼容性检测方法,其特征在于,所述将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤之前还包括:
查询所述系统中是否存在每个所述API函数所依赖的实际动态链接库;
若是,执行将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤。
5.根据权利要求1所述的软件兼容性检测方法,其特征在于,所述将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较的步骤包括:
获取所述系统中预存的动态链接库信息表,所述动态链接库信息表包括所有实际动态链接库的标识信息以及对应的版本号;
根据所述标识信息查询所述动态链接库信息表中,所述动态链接库对应的实际动态链接库的版本号,并进行版本号比较。
6.根据权利要求1所述的软件兼容性检测方法,其特征在于,还包括:
当检测到所述系统中任意一所述实际动态链接库的版本更新时,更新所述动态链接库信息表。
7.根据权利要求1所述的软件兼容性检测方法,其特征在于,所述API函数信息封装在所述APP文件的头部信息中。
8.一种软件兼容性检测装置,其特征在于,包括获取模块、提取模块、比较模块和确定模块:
所述获取模块,用于获取APP文件;
所述提取模块,用于提取所述APP文件中封装的API函数信息,所述API函数信息包括所述APP文件中应用的API函数所依赖的各个动态链接库的最高版本号;
所述比较模块,用于将每个所述动态链接库的最高版本号分别与对应的实际动态链接库的版本号进行比较,所述实际动态链接库为系统所使用的链接库;
所述确定模块,用于当任意一所述动态链接库的最高版本号高于对应的实际动态链接库的版本号时,则确定所述APP文件与所述系统中的实际动态链接库版本不兼容。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至7中任一项所述的软件兼容性检测方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至7中任一项所述的软件兼容性检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110011101.9A CN112764797B (zh) | 2021-01-06 | 2021-01-06 | 软件兼容性检测方法、装置、电子装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110011101.9A CN112764797B (zh) | 2021-01-06 | 2021-01-06 | 软件兼容性检测方法、装置、电子装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764797A true CN112764797A (zh) | 2021-05-07 |
CN112764797B CN112764797B (zh) | 2023-03-21 |
Family
ID=75699813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110011101.9A Active CN112764797B (zh) | 2021-01-06 | 2021-01-06 | 软件兼容性检测方法、装置、电子装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764797B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377429A (zh) * | 2021-07-06 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 安卓应用的运行方法及设备 |
CN115167949A (zh) * | 2022-09-08 | 2022-10-11 | 西安芯瞳半导体技术有限公司 | 高版本OpenGL函数适配低版本应用程序的方法、装置及介质 |
WO2023051127A1 (zh) * | 2021-09-29 | 2023-04-06 | 上海同星智能科技有限公司 | 软件平台用第三方程序库函数拆解调用方法及调用系统 |
CN115934157A (zh) * | 2022-12-28 | 2023-04-07 | 中国人民解放军国防科技大学 | 软件依赖范围自动推断方法、装置、计算机设备和存储器 |
CN117251205A (zh) * | 2023-11-16 | 2023-12-19 | 沐曦集成电路(杭州)有限公司 | 一种头文件的处理方法、装置、设备及介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440337A (zh) * | 2013-09-09 | 2013-12-11 | 百度在线网络技术(北京)有限公司 | Api兼容性扫描方法和api兼容性扫描装置 |
CN103809974A (zh) * | 2014-02-12 | 2014-05-21 | Tcl集团股份有限公司 | 一种应用自动审核的方法、装置及云服务器 |
CN109683954A (zh) * | 2018-12-29 | 2019-04-26 | 北京小米移动软件有限公司 | lib库集成方法、装置及存储介质 |
CN109977008A (zh) * | 2019-02-22 | 2019-07-05 | 福建天泉教育科技有限公司 | 一种应用程序依赖的js代码与原生库兼容的方法及终端 |
US20200097300A1 (en) * | 2015-02-13 | 2020-03-26 | Oracle International Corporation | Modular Co-Versioning in a Dynamically Linked Runtime Environment |
CN111026439A (zh) * | 2019-11-22 | 2020-04-17 | 广州华多网络科技有限公司 | 应用程序的兼容方法、装置、设备及计算机存储介质 |
CN111061643A (zh) * | 2019-12-24 | 2020-04-24 | 五八同城信息技术有限公司 | Sdk集群的兼容性检测方法、装置、电子设备及存储介质 |
CN111159045A (zh) * | 2019-12-31 | 2020-05-15 | 中国银行股份有限公司 | 一种兼容性问题检测方法、装置及存储介质 |
CN111414189A (zh) * | 2020-03-20 | 2020-07-14 | 深圳前海微众银行股份有限公司 | 一种确定版本兼容性的方法及装置 |
CN111797009A (zh) * | 2020-06-22 | 2020-10-20 | 北京字节跳动网络技术有限公司 | 用于检测代码兼容性的方法、装置和电子设备 |
CN111857860A (zh) * | 2019-04-30 | 2020-10-30 | 烽火通信科技股份有限公司 | 一种安全加载插件的实现方法及系统 |
CN112000367A (zh) * | 2020-10-29 | 2020-11-27 | 杭州圆石网络安全技术有限公司 | 一种二进制库文件版本兼容性识别方法和装置 |
-
2021
- 2021-01-06 CN CN202110011101.9A patent/CN112764797B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440337A (zh) * | 2013-09-09 | 2013-12-11 | 百度在线网络技术(北京)有限公司 | Api兼容性扫描方法和api兼容性扫描装置 |
CN103809974A (zh) * | 2014-02-12 | 2014-05-21 | Tcl集团股份有限公司 | 一种应用自动审核的方法、装置及云服务器 |
US20200097300A1 (en) * | 2015-02-13 | 2020-03-26 | Oracle International Corporation | Modular Co-Versioning in a Dynamically Linked Runtime Environment |
CN109683954A (zh) * | 2018-12-29 | 2019-04-26 | 北京小米移动软件有限公司 | lib库集成方法、装置及存储介质 |
CN109977008A (zh) * | 2019-02-22 | 2019-07-05 | 福建天泉教育科技有限公司 | 一种应用程序依赖的js代码与原生库兼容的方法及终端 |
CN111857860A (zh) * | 2019-04-30 | 2020-10-30 | 烽火通信科技股份有限公司 | 一种安全加载插件的实现方法及系统 |
CN111026439A (zh) * | 2019-11-22 | 2020-04-17 | 广州华多网络科技有限公司 | 应用程序的兼容方法、装置、设备及计算机存储介质 |
CN111061643A (zh) * | 2019-12-24 | 2020-04-24 | 五八同城信息技术有限公司 | Sdk集群的兼容性检测方法、装置、电子设备及存储介质 |
CN111159045A (zh) * | 2019-12-31 | 2020-05-15 | 中国银行股份有限公司 | 一种兼容性问题检测方法、装置及存储介质 |
CN111414189A (zh) * | 2020-03-20 | 2020-07-14 | 深圳前海微众银行股份有限公司 | 一种确定版本兼容性的方法及装置 |
CN111797009A (zh) * | 2020-06-22 | 2020-10-20 | 北京字节跳动网络技术有限公司 | 用于检测代码兼容性的方法、装置和电子设备 |
CN112000367A (zh) * | 2020-10-29 | 2020-11-27 | 杭州圆石网络安全技术有限公司 | 一种二进制库文件版本兼容性识别方法和装置 |
Non-Patent Citations (2)
Title |
---|
MAANSHANCSS: "Android SDK版本号 与 APILevel 对应关系 201911", 《HTTPS://WWW.CNBLOGS.COM/MAANSHANCSS/P/11904183.HTML》 * |
陈智雨;汪明;巩少岩;王栋;史睿: "电力行业Web应用兼容性测试", 《电力信息与通信技术》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377429A (zh) * | 2021-07-06 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 安卓应用的运行方法及设备 |
WO2023051127A1 (zh) * | 2021-09-29 | 2023-04-06 | 上海同星智能科技有限公司 | 软件平台用第三方程序库函数拆解调用方法及调用系统 |
CN115167949A (zh) * | 2022-09-08 | 2022-10-11 | 西安芯瞳半导体技术有限公司 | 高版本OpenGL函数适配低版本应用程序的方法、装置及介质 |
CN115167949B (zh) * | 2022-09-08 | 2022-12-06 | 西安芯瞳半导体技术有限公司 | 高版本OpenGL函数适配低版本应用程序的方法、装置及介质 |
CN115934157A (zh) * | 2022-12-28 | 2023-04-07 | 中国人民解放军国防科技大学 | 软件依赖范围自动推断方法、装置、计算机设备和存储器 |
CN115934157B (zh) * | 2022-12-28 | 2024-04-16 | 中国人民解放军国防科技大学 | 软件依赖范围自动推断方法、装置、计算机设备和存储器 |
CN117251205A (zh) * | 2023-11-16 | 2023-12-19 | 沐曦集成电路(杭州)有限公司 | 一种头文件的处理方法、装置、设备及介质 |
CN117251205B (zh) * | 2023-11-16 | 2024-02-06 | 沐曦集成电路(杭州)有限公司 | 一种头文件的处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112764797B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112764797B (zh) | 软件兼容性检测方法、装置、电子装置和存储介质 | |
CN111752641A (zh) | 微服务容器之间服务启动方法、装置、设备及存储介质 | |
US20130152069A1 (en) | Method, apparatus and system for initiating terminal operation | |
CN103259936B (zh) | 移动终端操作系统升级方法及其装置 | |
CN104298532B (zh) | 一种软件升级方法及系统 | |
CN106293887A (zh) | 数据库处理方法及装置 | |
CN108460271B (zh) | 终端识别方法及装置 | |
CN109656572A (zh) | 安装包的打包方法及装置、计算机设备、存储介质 | |
CN113010378B (zh) | 微服务模块的日志处理方法及装置、存储介质、电子装置 | |
CN110119280A (zh) | 多固件升级的方法及装置 | |
CN104765624A (zh) | 虚拟机应用程序的更新处理方法和装置 | |
CN113064685A (zh) | 一种h5页面加载方法及装置 | |
CN104699509A (zh) | 下载应用软件的方法及装置 | |
CN113014626B (zh) | 数据服务的管理方法及装置、存储介质及电子装置 | |
CN107291637A (zh) | 在安卓系统中兼容多型号移动通信模块的方法和装置 | |
CN101938765B (zh) | 一种网管和网元自动适配的方法和系统 | |
CN114860204B (zh) | 程序处理、运行方法、装置、终端、智能卡及存储介质 | |
US20030236744A1 (en) | Connection information management system for managing connection information used in communications between IC cards | |
CN105068791A (zh) | 一种实现底层库的方法及装置 | |
CN111427603B (zh) | 应用程序的升级方法及装置 | |
CN113900937A (zh) | 脚本调用方法、装置、电子装置和存储介质 | |
KR102550574B1 (ko) | 오픈 에이피아이를 이용한 에이아이 모델 연계 서비스 시스템 및 서비스 방법 | |
CN114968489A (zh) | 自定义服务的本地调测方法、装置和计算机可读存储介质 | |
CN113434171A (zh) | 资源包的更新方法和装置、存储介质及电子装置 | |
CN116491217A (zh) | 通信方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |