CN113721940A - 一种软件部署方法、装置、电子设备及存储介质 - Google Patents
一种软件部署方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113721940A CN113721940A CN202110979978.7A CN202110979978A CN113721940A CN 113721940 A CN113721940 A CN 113721940A CN 202110979978 A CN202110979978 A CN 202110979978A CN 113721940 A CN113721940 A CN 113721940A
- Authority
- CN
- China
- Prior art keywords
- software
- deployed
- application program
- software package
- code base
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/76—Adapting program code to run in a different environment; Porting
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
本申请公开一种软件部署方法、装置、电子设备及存储介质,属于软件技术领域,该方法包括:接收包含有待部署软件包和元数据的软件部署请求,对元数据进行解析,得到待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息,将该接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定待部署软件包是否与本地的软件运行环境兼容,基于待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应软件部署请求。这样,在部署软件之前对待部署软件与本地的软件运行环境之间的兼容性进行判断,可有效避免由于不兼容而带来的软件部署问题。
Description
技术领域
本申请涉及软件技术领域,尤其涉及一种软件部署方法、装置、电子设备及存储介质。
背景技术
一般地,软件开发人员在软件开发环境中开发出软件包后,会将软件包部署到运行环境/生产环境中,这就涉及到软件的安装/升级问题。
如果软件开发时对运行环境是有依赖或要求的,如软件包是基于运行环境提供的动态库或静态库开发的,那么,在软件安装/升级过程中,如果待部署的软件包与本地的软件运行环境不匹配,则会导致软件功能失效或异常崩溃,甚至可能会触发运行系统异常重启。
发明内容
本申请实施例提供一种软件部署方法、装置、电子设备及存储介质,用以解决相关技术中由于不兼容而带来的软件部署问题。
第一方面,本申请实施例提供一种软件部署方法,包括:
接收软件部署请求,所述软件部署请求中包含有待部署软件包和元数据,所述元数据用于描述所述待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息;
对所述元数据进行解析,得到所述接口信息;
将所述接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定所述待部署软件包是否与本地的软件运行环境兼容;
基于所述待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应所述软件部署请求。
在一些可能的实施方式中,根据以下步骤生成所述元数据:
解析所述待部署软件包中可执行文件的应用程序接口符号,得到所述待部署软件包对应的应用程序接口,从所述应用程序接口中筛选符合预设命名规则的应用程序接口;
解析在开发所述待部署软件包时使用的公共代码库,得到应用程序接口集合;
若筛选出的任一应用程序接口包含在所述应用程序接口集合中,则确定所述应用程序接口为所述待部署软件包在运行时所需的公共代码库中的应用程序接口;
按照预设格式保存所述待部署软件包在运行时所需的公共代码库中各应用程序接口的接口信息,得到所述元数据。
在一些可能的实施方式中,将所述接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定所述待部署软件包是否与本地的软件运行环境兼容,包括:
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境兼容;
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口不为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境不兼容。
在一些可能的实施方式中,基于所述待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应所述软件部署请求,包括:
若所述待部署软件包与本地的软件运行环境兼容,则确定响应所述软件部署请求;
若所述待部署软件包与本地的软件运行环境不兼容,则确定拒绝所述软件部署请求。
在一些可能的实施方式中,若所述待部署软件包与本地的软件运行环境兼容,则还包括:
在所述待部署软件包中包含公共代码库时,删除所述待部署软件包中的公共代码库。
第二方面,本申请实施例提供一种软件部署装置,包括:
接收模块,用于接收软件部署请求,所述软件部署请求中包含有待部署软件包和元数据,所述元数据用于描述所述待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息;
解析模块,用于对所述元数据进行解析,得到所述接口信息;
控制模块,用于将所述接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定所述待部署软件包是否与本地的软件运行环境兼容;
确定模块,用于基于所述待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应所述软件部署请求。
在一些可能的实施方式中,根据以下步骤生成所述元数据:
解析所述待部署软件包中可执行文件的应用程序接口符号,得到所述待部署软件包对应的应用程序接口,从所述应用程序接口中筛选符合预设命名规则的应用程序接口;
解析在开发所述待部署软件包时使用的公共代码库,得到应用程序接口集合;
若筛选出的任一应用程序接口包含在所述应用程序接口集合中,则确定所述应用程序接口为所述待部署软件包在运行时所需的公共代码库中的应用程序接口;
按照预设格式保存所述待部署软件包在运行时所需的公共代码库中各应用程序接口的接口信息,得到所述元数据。
在一些可能的实施方式中,所述控制模块具体用于:
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境兼容;
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口不为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境不兼容。
在一些可能的实施方式中,所述确定模块具体用于:
若所述待部署软件包与本地的软件运行环境兼容,则确定响应所述软件部署请求;
若所述待部署软件包与本地的软件运行环境不兼容,则确定拒绝所述软件部署请求。
在一些可能的实施方式中,所述确定模块还用于:
若所述待部署软件包与本地的软件运行环境兼容,则在所述待部署软件包中包含公共代码库时,删除所述待部署软件包中的公共代码库。
第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:
存储器存储有可被至少一个处理器执行的指令,该指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述软件部署方法。
第四方面,本申请实施例提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,所述电子设备能够执行上述软件部署方法。
本申请实施例中,接收软件部署请求,其中,软件部署请求中包含有待部署软件包和元数据,对元数据进行解析,可以得到待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息,将该接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定待部署软件包是否与本地的软件运行环境兼容,基于待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应软件部署请求。这样,在部署软件之前对待部署软件与本地的软件运行环境之间的兼容性进行判断,基于判断结果来确定是否进行软件部署,可有效避免由于不兼容而带来的软件部署问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种软件部署方法的流程图;
图2为本申请实施例提供的一种元数据的生成方法的流程图;
图3为本申请实施例提供的一种DevOs的示意图;
图4为本申请实施例提供的一种AppPackage的制作过程示意图;
图5为本申请实施例提供的一种将ELF制作成AppPackage的过程示意图;
图6为本申请实施例提供的又一种软件部署方法的流程图;
图7为本申请实施例提供的一种软件部署装置的结构示意图;
图8为本申请实施例提供的一种用于实现软件部署方法的电子设备的硬件结构示意图。
具体实施方式
为了解决相关技术中由于不兼容而带来的软件部署问题,本申请实施例提供了一种软件部署方法、装置、电子设备及存储介质。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
首选需要说明的是,本申请实施例的执行主体可以为电子设备,如摄像机、录像机等,并且,电子设备中安装有公共代码库如动态库或静态库等,软件包配合公共代码库可为电子设备提供一些独特的业务功能。
图1为本申请实施例提供的一种软件部署方法的流程图,包括以下步骤。
在步骤S101中,接收软件部署请求,其中,软件部署请求中包含有待部署软件包和元数据,元数据用于描述待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息。
其中,软件部署请求可以为软件安装请求或软件升级请求;应用程序接口的接口信息如应用程序接口的函数名。
具体实施时,可以根据图2所示的流程生成元数据,包括以下步骤:
在步骤S201a中,解析待部署软件包中可执行文件的应用程序接口符号,得到待部署软件包对应的应用程序接口,从应用程序接口中筛选符合预设命名规则的应用程序接口。
一般地,电子设备中公共代码库中的应用程序接口是有统一命名规则的,这个统一命名规则还可对外开放。所以,从待部署软件包对应的应用程序接口筛选符合预设命名规则的应用程序接口,可以得到一些备选的应用程序接口。
在步骤S202a中,解析在开发待部署软件包时使用的公共代码库,得到应用程序接口集合。
考虑到技术人员在开发待部署软件包时可能会对某个应用程序接口采用上述统一命名规则进行命名,但实际上,这个应用程序接口并不是待部署软件包在运行时所需的公共代码库中的应用程序接口。
为了对应该问题,可解析在开发待部署软件包时使用的公共代码库,得到应用程序接口集合,应用程序接口集合中的应用程序接口即为待部署软件包所能使用的公共代码库中的应用程序接口。后续,可借助于应用程序接口集合剔除技术人员自己命名的符合上述统一命名规则的应用程序接口。
在步骤S203a中,若筛选出的任一应用程序接口包含在应用程序接口集合中,则确定应用程序接口为待部署软件包在运行时所需的公共代码库中的应用程序接口。
具体实施时,若筛选出的任一应用程序接口包含在应用程序接口集合中,则说明这个应用程序接口不是技术人员自己命名的符合上述统一命名规则的应用程序接口,可确定这个应用程序接口为待部署软件包在运行时所需的公共代码库中的应用程序接口。
在步骤S204a中,按照预设格式保存待部署软件包在运行时所需的公共代码库中各应用程序接口的接口信息,得到元数据。
假设待部署软件包在运行时所需的公共代码库中的应用程序接口为:API_Func1和API_Func2,则可按照以下格式保存待部署软件包在运行时所需的公共代码库中各应用程序接口的接口信息:
即,以上信息为待部署软件包的元数据。
在步骤S102中,对元数据进行解析,得到接口信息。
在步骤S103中,将接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定待部署软件包是否与本地的软件运行环境兼容。
具体实施时,基于待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息,可以确定待部署软件包在运行时所需的公共代码库中的应用程序接口,基于本地安装的公共代码库中应用程序接口的接口信息,可以确定本地安装的公共代码库中的应用程序接口,进一步地,若待部署软件包在运行时所需的公共代码库中的应用程序接口为本地安装的公共代码库中应用程序接口的子集,则可确定待部署软件包与本地的软件运行环境兼容;若待部署软件包在运行时所需的公共代码库中的应用程序接口不为本地安装的公共代码库中应用程序接口的子集,则可确定待部署软件包与本地的软件运行环境不兼容。
在步骤S104中,基于待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应软件部署请求。
具体实施时,若待部署软件包与本地的软件运行环境兼容,则可响应软件部署请求,其中,当软件部署请求为软件安装请求时,响应软件部署请求即是安装待部署软件包,当软件部署请求为软件升级请求时,响应软件部署请求即是利用待部署软件包升级相应程序;若待部署软件包与本地的软件运行环境不兼容,则可拒绝软件部署请求。
本申请实施例中,接收软件部署请求,其中,软件部署请求中包含有待部署软件包和元数据,对元数据进行解析,可以得到待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息,将该接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定待部署软件包是否与本地的软件运行环境兼容,基于待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应软件部署请求。这样,在部署软件之前对待部署软件与本地的软件运行环境之间的兼容性进行判断,基于判断结果来确定是否进行软件部署,可有效避免由于不兼容而带来的软件部署问题。
此外,若待部署软件包与本地的软件运行环境兼容,则在待部署软件包中包含公共代码库时,还可删除待部署软件包中的公共代码库,以避免待部署软件包中的公共代码库与本地安装的公共代码库产生版本冲突,以进一步减少由于不兼容而带来的软件部署问题。
下面结合具体实施例对本申请实施例的方案进行说明。
本申请实施例提供的技术方案主要包括:运行环境的构建、软件包的制作和软件包的部署几部分,下面分别对这几个部分进行介绍。
第一部分、运行环境的构建。
运行环境,是指在硬件平台上基于硬件功能开发的设备操作系统(DeviceOperation System,DevOs),如嵌入式摄像机的操作系统。
具体实施时,运行环境的构建包含三部分:
A、通用独立的操作系统,例如文件系统,posix标准库等。
B、开放发布的API实现组件,例如动态库等。
C、统一的软件包部署组件,用于处理软件的安装/升级请求。
图3是本申请实施例提供的一种DevOs的示意图,包括uImage、Sdk.so和部署组件(Deploy Component),其中,uImage是基于内核(kernel)创建(bulid)的通用独立的操作系统,Sdk.so是基于用户应用程序接口实现(User Api Implement)创建的API实现组件,Deploy Component是基于部署实现(Deploy Implement)创建的部署组件,并且,DeployComponent中填充(fill)有应用程序接口集(API Sets),API Sets是基于User ApiImplement得到的。
具体实施时,待发布的API实现会构建为一个Sdk.so(一种公共代码库)随DevOs一同发布,API构建的过程中会将所有要发布的API填充到Deploy Implement中,这样保证Deploy Implement中包含了DevOS所支持的API。
第二部分、软件包的制作。
软件包(AppPackage)是指技术人员基于Sdk.so开发的功能软件,如运行在嵌入式摄像机中的人脸检测功能软件。
参见图4,AppPackage的制作过程主要包含两部分:
A、技术人员通过编译工具(Compile Tool)对开发出的应用程序资源(AppSource)和开发时使用的Sdk.so进行编译链接,创建(Builid)二进制的可执行文件ELF(Executable and Linking Format)。
B、技术人员基于配套的软件制作工具(PackTool)将ELF制作成AppPackage。
图5为本申请实施例提供的一种将ELF制作成AppPackage的过程示意图,包括以下步骤:
第一步、解析Elf-Apis。
Elf是通过Sdk.so链接而成的,通过Elf解析工具(如nm工具)解析Elf的API符号,得到所有API,从这些API中筛选预设命名规则如符合Dev_Sdk_*规则的API,作为初级待校验的API。
第二步、过滤API。
由于第一步只是进行API解析后的简单汇总,这里面可能会存在技术人员自己命名的符合Dev_Sdk_*规则的API如Dev_Sdk_MyApi,这种符合规则但并不是OS_SDK提供的API,需要过滤出去。
为了能够过滤掉这种API,可利用PackTool解析开发环境中的Sdk.so,获得本次可引用的Sdk.so中的所有API,第一步得到的在这些API中的才会被确定为AppPackage引用的OS_SDK_API(即AppPackage在运行时所需的OS_SDK_API)。
第三步、格式化API集合。
按照DevOs要求的格式记录AppPackage引用的OS_SDK_API信息,得到AppPackage的元数据。
第三部分、软件包的部署。
以AppPackage作为待部署软件包,图6为本申请实施例提供的又一种软件部署方法的流程示意图,包括以下步骤:
在步骤S601中,接收软件部署请求,其中,软件部署请求中包含有待部署软件包和元数据。
在步骤S602中,解析元数据,确定待部署软件包在运行时所需的Sdk.so中的应用程序接口的集合1。
在步骤S603中,获取DevOs_Deploy能提供的Sdk.so中的应用程序接口的集合2。
具体实施时,可从Deploy Component中获取DevOs_Deploy能提供的Sdk.so中的应用程序接口的集合2。
在步骤S604中,判断集合1是否为集合2的子集,若否,则进入S605;若是,则进入S606。
在步骤S605中,拒绝软件部署请求。
具体实施时,还可展示具体的拒绝原因。
在步骤S606中,判断待部署软件包中是否存在Sdk.so,若是,则进入S607;若否,则进入S608。
在步骤S607中,删除待部署软件包中存在的Sdk.so。
这样,可避免待部署软件包中携带了Sdk.so,而造成待部署软件包中的Sdk.so与DevOs中的Sdk.so冲突的问题。
在步骤S608中,响应软件部署请求。
另外,需要说明的是,本申请实施例中待部署软件包所安装到的电子设备中的操作系统可以是嵌入式操作系统也可以是非嵌入式操作系统,并且,本申请实施例提供的方案无需扫描待部署软件包中的源代码,所以对待部署软件包的侵入性也比较小。
基于相同的技术构思,本申请实施例还提供一种软件部署装置,软件部署装置解决问题的原理与上述软件部署方法相似,因此软件部署装置的实施可参见软件部署方法的实施,重复之处不再赘述。图7为本申请实施例提供的一种软件部署装置的结构示意图,包括接收模块701、解析模块702、控制模块703、确定模块704。
接收模块701,用于接收软件部署请求,所述软件部署请求中包含有待部署软件包和元数据,所述元数据用于描述所述待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息;
解析模块702,用于对所述元数据进行解析,得到所述接口信息;
控制模块703,用于将所述接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定所述待部署软件包是否与本地的软件运行环境兼容;
确定模块704,用于基于所述待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应所述软件部署请求。
在一些可能的实施方式中,根据以下步骤生成所述元数据:
解析所述待部署软件包中可执行文件的应用程序接口符号,得到所述待部署软件包对应的应用程序接口,从所述应用程序接口中筛选符合预设命名规则的应用程序接口;
解析在开发所述待部署软件包时使用的公共代码库,得到应用程序接口集合;
若筛选出的任一应用程序接口包含在所述应用程序接口集合中,则确定所述应用程序接口为所述待部署软件包在运行时所需的公共代码库中的应用程序接口;
按照预设格式保存所述待部署软件包在运行时所需的公共代码库中各应用程序接口的接口信息,得到所述元数据。
在一些可能的实施方式中,所述控制模块703具体用于:
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境兼容;
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口不为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境不兼容。
在一些可能的实施方式中,所述确定模块704具体用于:
若所述待部署软件包与本地的软件运行环境兼容,则确定响应所述软件部署请求;
若所述待部署软件包与本地的软件运行环境不兼容,则确定拒绝所述软件部署请求。
在一些可能的实施方式中,所述确定模块704还用于:
若所述待部署软件包与本地的软件运行环境兼容,则在所述待部署软件包中包含公共代码库时,删除所述待部署软件包中的公共代码库。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,本申请各实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。各个模块相互之间的耦合可以是通过一些接口实现,这些接口通常是电性通信接口,但是也不排除可能是机械接口或其它的形式接口。因此,作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方,也可以分布到同一个或不同设备的不同位置上。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
图8为本申请实施例提供的一种电子设备的结构示意图,该电子设备包括收发器801以及处理器802等物理器件,其中,处理器802可以是一个中央处理单元(CentralProcessing Unit,CPU)、微处理器、专用集成电路、可编程逻辑电路、大规模集成电路、或者为数字处理单元等等。收发器801用于电子设备和其他设备进行数据收发。
该电子设备还可以包括存储器803用于存储处理器802执行的软件指令,当然还可以存储电子设备需要的一些其他数据,如电子设备的标识信息、电子设备的加密信息、用户数据等。存储器803可以是易失性存储器(Volatile Memory),例如随机存取存储器(Random-Access Memory,RAM);存储器803也可以是非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(Flash Memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD)、或者存储器803是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器803可以是上述存储器的组合。
本申请实施例中不限定上述处理器802、存储器803以及收发器801之间的具体连接介质。本申请实施例在图8中仅以存储器803、处理器802以及收发器801之间通过总线804连接为例进行说明,总线在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器802可以是专用硬件或运行软件的处理器,当处理器802可以运行软件时,处理器802读取存储器803存储的软件指令,并在所述软件指令的驱动下,执行前述实施例中涉及的软件部署方法。
本申请实施例还提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,所述电子设备能够执行前述实施例中涉及的软件部署方法。
在一些可能的实施方式中,本申请提供的软件部署方法的各个方面还可以实现为一种程序产品的形式,所述程序产品中包括有程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行前述实施例中涉及的软件部署方法。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、RAM、ROM、可擦式可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、闪存、光纤、光盘只读存储器(Compact Disk Read Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请实施例中用于软件部署的程序产品可以采用CD-ROM并包括程序代码,并可以在计算设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频(Radio Frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络如局域网(Local AreaNetwork,LAN)或广域网(Wide Area Network,WAN)连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种软件部署方法,其特征在于,包括:
接收软件部署请求,所述软件部署请求中包含有待部署软件包和元数据,所述元数据用于描述所述待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息;
对所述元数据进行解析,得到所述接口信息;
将所述接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定所述待部署软件包是否与本地的软件运行环境兼容;
基于所述待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应所述软件部署请求。
2.如权利要求1所述的方法,其特征在于,根据以下步骤生成所述元数据:
解析所述待部署软件包中可执行文件的应用程序接口符号,得到所述待部署软件包对应的应用程序接口,从所述应用程序接口中筛选符合预设命名规则的应用程序接口;
解析在开发所述待部署软件包时使用的公共代码库,得到应用程序接口集合;
若筛选出的任一应用程序接口包含在所述应用程序接口集合中,则确定所述应用程序接口为所述待部署软件包在运行时所需的公共代码库中的应用程序接口;
按照预设格式保存所述待部署软件包在运行时所需的公共代码库中各应用程序接口的接口信息,得到所述元数据。
3.如权利要求1所述的方法,其特征在于,将所述接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定所述待部署软件包是否与本地的软件运行环境兼容,包括:
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境兼容;
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口不为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境不兼容。
4.如权利要求1-3任一所述的方法,其特征在于,基于所述待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应所述软件部署请求,包括:
若所述待部署软件包与本地的软件运行环境兼容,则确定响应所述软件部署请求;
若所述待部署软件包与本地的软件运行环境不兼容,则确定拒绝所述软件部署请求。
5.如权利要求4所述的方法,其特征在于,若所述待部署软件包与本地的软件运行环境兼容,则还包括:
在所述待部署软件包中包含公共代码库时,删除所述待部署软件包中的公共代码库。
6.一种软件部署装置,其特征在于,包括:
接收模块,用于接收软件部署请求,所述软件部署请求中包含有待部署软件包和元数据,所述元数据用于描述所述待部署软件包在运行时所需的公共代码库中应用程序接口的接口信息;
解析模块,用于对所述元数据进行解析,得到所述接口信息;
控制模块,用于将所述接口信息与本地安装的公共代码库中应用程序接口的接口信息进行比对,以确定所述待部署软件包是否与本地的软件运行环境兼容;
确定模块,用于基于所述待部署软件包是否与本地的软件运行环境兼容的信息,确定是否响应所述软件部署请求。
7.如权利要求6所述的装置,其特征在于,根据以下步骤生成所述元数据:
解析所述待部署软件包中可执行文件的应用程序接口符号,得到所述待部署软件包对应的应用程序接口,从所述应用程序接口中筛选符合预设命名规则的应用程序接口;
解析在开发所述待部署软件包时使用的公共代码库,得到应用程序接口集合;
若筛选出的任一应用程序接口包含在所述应用程序接口集合中,则确定所述应用程序接口为所述待部署软件包在运行时所需的公共代码库中的应用程序接口;
按照预设格式保存所述待部署软件包在运行时所需的公共代码库中各应用程序接口的接口信息,得到所述元数据。
8.如权利要求6所述的装置,其特征在于,所述控制模块具体用于:
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境兼容;
若所述待部署软件包在运行时所需的公共代码库中的应用程序接口不为本地安装的公共代码库中应用程序接口的子集,则确定所述待部署软件包与本地的软件运行环境不兼容。
9.如权利要求6-8任一所述的装置,其特征在于,所述确定模块具体用于:
若所述待部署软件包与本地的软件运行环境兼容,则确定响应所述软件部署请求;
若所述待部署软件包与本地的软件运行环境不兼容,则确定拒绝所述软件部署请求。
10.如权利要求9所述的装置,其特征在于,所述确定模块还用于:
若所述待部署软件包与本地的软件运行环境兼容,则在所述待部署软件包中包含公共代码库时,删除所述待部署软件包中的公共代码库。
11.一种电子设备,其特征在于,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-5任一所述的方法。
12.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,所述电子设备能够执行如权利要求1-5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110979978.7A CN113721940A (zh) | 2021-08-25 | 2021-08-25 | 一种软件部署方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110979978.7A CN113721940A (zh) | 2021-08-25 | 2021-08-25 | 一种软件部署方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113721940A true CN113721940A (zh) | 2021-11-30 |
Family
ID=78677780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110979978.7A Pending CN113721940A (zh) | 2021-08-25 | 2021-08-25 | 一种软件部署方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113721940A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955168A (zh) * | 2023-07-11 | 2023-10-27 | 广州汽车集团股份有限公司 | 车载软件产品运行方法、装置、电子设备及存储介质 |
-
2021
- 2021-08-25 CN CN202110979978.7A patent/CN113721940A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955168A (zh) * | 2023-07-11 | 2023-10-27 | 广州汽车集团股份有限公司 | 车载软件产品运行方法、装置、电子设备及存储介质 |
CN116955168B (zh) * | 2023-07-11 | 2024-04-26 | 广州汽车集团股份有限公司 | 车载软件产品运行方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106559438B (zh) | 一种基于目标网络平台的程序上传方法和装置 | |
CN105657191B (zh) | 一种基于Android系统的应用增量升级方法及系统 | |
US20230244465A1 (en) | Systems and methods for automated retrofitting of customized code objects | |
US9513881B2 (en) | System for the discovery and provisioning of artifacts and composites | |
CN110597531B (zh) | 分布式的模块升级方法、装置及存储介质 | |
CN110096424B (zh) | 测试的处理方法、装置、电子设备及存储介质 | |
US7937698B2 (en) | Extensible mechanism for automatically migrating resource adapter components in a development environment | |
US11481200B1 (en) | Checking source code validity at time of code update | |
CN111061643B (zh) | Sdk集群的兼容性检测方法、装置、电子设备及存储介质 | |
US20100333067A1 (en) | Process-driven feedback of digital asset re-use | |
CN110673923A (zh) | Xwiki系统配置方法、系统及计算机设备 | |
WO2009044971A1 (en) | Method and system for determining interface compatibility based on component model | |
CN114115838A (zh) | 一种基于分布式组件和云平台的数据交互方法及系统 | |
US20160179570A1 (en) | Parallel Computing Without Requiring Antecedent Code Deployment | |
CN113721940A (zh) | 一种软件部署方法、装置、电子设备及存储介质 | |
CN110704025A (zh) | 编码规范工具的生成方法和装置、存储介质、电子设备 | |
US20130262845A1 (en) | Method and system for generating a standardized system build file | |
CN115167874B (zh) | 自动驾驶软件镜像部署方法、装置、电子设备和可读介质 | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
US11947966B2 (en) | Identifying computer instructions enclosed by macros and conflicting macros at build time | |
CN106778270B (zh) | 一种恶意应用程序的检测方法及系统 | |
CN111158645B (zh) | 提供集成开发环境的系统和方法 | |
US10958514B2 (en) | Generating application-server provisioning configurations | |
CN111273940B (zh) | 将程序文件上传至代码仓库的方法及装置 | |
CN110245066B (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 |