CN118312204A - 一种项目打包方法、装置、设备及存储介质 - Google Patents
一种项目打包方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN118312204A CN118312204A CN202310032421.1A CN202310032421A CN118312204A CN 118312204 A CN118312204 A CN 118312204A CN 202310032421 A CN202310032421 A CN 202310032421A CN 118312204 A CN118312204 A CN 118312204A
- Authority
- CN
- China
- Prior art keywords
- compiling
- compiled
- project
- file
- packaging
- 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
- 238000004806 packaging method and process Methods 0.000 title claims abstract description 210
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000012856 packing Methods 0.000 claims description 40
- 238000013515 script Methods 0.000 claims description 39
- 230000006835 compression Effects 0.000 claims description 13
- 238000007906 compression Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 13
- 239000002609 medium Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 239000002699 waste material Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请实施例公开了一种项目打包方法、装置、设备及存储介质。本申请实施例提供的技术方案通过根据项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,将目标编译文件目录拷贝到动态链接库的目录中,对动态链接库中的目标编译文件目录进行打包处理即可完成项目打包,其中目标编译文件目录为预先基于设定的操作系统和处理器架构进行编译处理得到,不需要再针对当前的操作系统和处理器架构重新编译目标源代码,有效提高项目打包效率。
Description
技术领域
本申请实施例涉及应用程序处理技术领域,尤其涉及一种项目打包方法、装置、设备及存储介质。
背景技术
在应用程序不能直接调用项目源代码时,一般需要通过动态链接库的方式将项目源代码编译打包成可执行的二进制文件,以使应用程序实现对应的功能。
项目源代码的编译打包需要基于系统环境的操作系统和处理器架构编译项目源代码,在不同的操作系统和处理器架构下就需要在不同的系统环境进行编译处理,即使项目源代码未发生改动,都需要重新对项目源代码重新编译一次,导致项目打包效率较低。
发明内容
本申请实施例提供一种项目打包方法、装置、设备及存储介质,以解决相关技术中每次项目打包均需要重新对项目源代码重新编译一次,导致项目打包效率较低的技术问题,有效提高项目打包效率。
在第一方面,本申请实施例提供了一种项目打包方法,包括:
获取项目打包参数,所述项目打包参数包括软件包识别信息、操作系统和处理器架构;
基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,所述目标编译文件目录基于设定的操作系统和处理器架构进行编译处理得到;
将所述目标编译文件目录拷贝到动态链接库的目录中;
对所述动态链接库中的所述目标编译文件目录进行打包处理。
在第二方面,本申请实施例提供了一种项目打包装置,包括参数获取模块、目录获取模块、目录拷贝模块和项目打包模块,其中:
所述参数获取模块,用于获取项目打包参数,所述项目打包参数包括软件包识别信息、操作系统和处理器架构;
所述目录获取模块,用于基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,所述目标编译文件目录基于设定的操作系统和处理器架构进行编译处理得到;
所述目录拷贝模块,用于将所述目标编译文件目录拷贝到动态链接库的目录中;
所述项目打包模块,用于对所述动态链接库中的所述目标编译文件目录进行打包处理。
在第三方面,本申请实施例提供了一种项目打包设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的项目打包方法。
在第四方面,本申请实施例提供了一种存储计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的项目打包方法。
本申请实施例通过根据项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,将目标编译文件目录拷贝到动态链接库的目录中,对动态链接库中的目标编译文件目录进行打包处理即可完成项目打包,其中目标编译文件目录为预先基于设定的操作系统和处理器架构进行编译处理得到,不需要再针对当前的操作系统和处理器架构重新编译目标源代码,有效提高项目打包效率。
附图说明
图1是本申请实施例提供的一种项目打包方法的流程图;
图2是本申请实施例提供的一种本地编译流程示意图;
图3是本申请实施例提供的另一种项目打包方法的流程图;
图4是本申请实施例提供的一种项目打包装置的结构示意图;
图5是本申请实施例提供的一种项目打包设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时上述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。上述处理可以对应于方法、函数、规程、子例程、子程序等等。
本申请提供的项目打包方法可应用于软件应用项目的打包场景,例如包含Nodeaddons库的项目打包,旨在通过预先基于不同的操作系统和处理器架构进行一次编译得到不同操作系统和处理器架构对应的编译文件目录,后续项目的打包不需要再依赖操作系统和处理器架构编译Node addons库,直接获取编译后的目标编译文件进行打包处理即可,有效提高项目打包效率。对于传统的项目打包方案,例如在包含Node addons库的项目打包中,由于Node项目不能直接调用项目源代码(例如C++代码),需通过Node addons库的方式调用。Node addons库是基于C++编写的动态链接库,动态链接库会被编译成二进制的addon.node文件,可通过Node require()函数将该文件加载为普通的Node.js模块的方式进行调用。Node项目的打包一般是指将项目源代码(待编译文件)打包成可执行的二进制文件。例如,在windows环境中对应的二进制文件格式为exe文件,在macOS环境对应的二进制文件格式为unix文件。一般的,Node addons库的编译会用到C++的编译工具,C++针对不同的操作系统、处理器架构会提供不同的编译工具,在window x64环境中编译需要在windowx64环境中运行对应的编译工具,在macOS arm64环境中编译需要在macOS arm64环境中运行对应的编译工具。现有项目打包方案中,打包包含Node addons库的项目,如果打包产物运行环境是windows x64,则需要在windows x64环境中打包;如果打包产物运行环境是macOS,则需要在macOS环境中打包。而Node addons的编译又依赖于操作系统、处理器架构,即使没有改动Node addons相关的代码,都需要重新编译Node addons库,即项目打需要依赖于系统环境(包括操作系统和处理器架构),导致打包机器的资源浪费,影响项目打包速度。基于此,提供本申请实施例的一种项目打包方法,以解决现有项目打包方案需要重复对项目源代码进行编译,导致项目打包效率较低的技术问题。
图1给出了本申请实施例提供的一种项目打包方法的流程图,本申请实施例提供的项目打包方法可以由项目打包装置来执行,该项目打包装置可以通过硬件和/或软件的方式实现,并集成在项目打包设备中。
下述以项目打包装置执行项目打包方法为例进行描述。参考图1,该项目打包方法包括:
S110:获取项目打包参数,项目打包参数包括软件包识别信息、操作系统和处理器架构。
示例性的,需要在项目打包设备中打包项目时,获取需要打包的项目对应的项目打包参数。本方案提供的项目打包参数包括软件包识别信息、操作系统和处理器架构,其中软件包识别信息可以是软件包的名称(例如npm包名称),操作系统和处理器架构可基于项目打包设备对应的系统环境(即项目打包设备对应的操作系统和处理器架构)进行确定。
S120:基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,目标编译文件目录基于设定的操作系统和处理器架构进行编译处理得到。
本方案提供的目标编译文件可基于不同的操作系统和处理器架构对待编译文件进行编译处理得到,并存储在设定的存储位置中。可选的,可根据需要编译的操作系统和处理器架构的不同组合,通过操作系统和处理器架构对应的编译工具,基于操作系统和处理器架构的不同组合对待编译文件生成不同的编译文件目录,并将编译文件目录保存到设定的存储位置中,例如将编译文件目录保存在云端,不同编译文件目录在设定的存储位置中对应不同的软件包下载地址。
在一个实施例中,不同的项目可对应不同的待编译文件(一个项目可对应多个待编译文件),不同的待编译文件对应不同的软件包识别信息(例如待编译文件的包名),编译生成的编译文件目录对应的软件包识别信息。可基于需要打包的项目所需要的编译文件目录的软件包识别信息,以及运行项目的设备对应的操作系统和处理器架构确定软件包下载地址,并根据软件包下载地址从云端获取所需要的编译文件目录。
示例性的,在确定项目打包参数后,基于项目打包参数中的软件包识别信息、操作系统和处理器架构确定软件包下载地址,并根据确定的软件包下载地址获取目标编译文件目录。
S130:将目标编译文件目录拷贝到动态链接库的目录中。
示例性的,从设定的存储位置获取目标编译文件目录后,可将目标编译文件目录依次拷贝到每个动态链接库所在的目录中,完成对项目中动态链接库的远程编译过程。需要进行解释的是,对动态链接库的远程编译过程实际上是将预先编译构建好的产物(编译文件目录)拷贝替换到本地的各个动态链接库的目录中。
其中,一个项目可配置有一个或多个动态链接库(例如Node addon库),不同的动态链接库配置有一个或多个目录,可通过将编译文件目录拷贝替换到本地动态链接库的目录的方式将待编译文件编译到动态链接库中。
需要进行解释的是,传统的待编译文件的编译方式是将待编译文件下载到本地,然后根据设备的操作系统和处理器架构去编译待编译文件,即不同的设备每次进行编译处理时,都需要重复调用操作系统和处理器架构对应的编译工具,造成较大的打包机器资源浪费,导致编译效率以及项目打包效率较低。本方案预先针对不同的操作系统和处理器架构对待编译文件进行编译处理得到编译文件目录,各个设备基于自身的操作系统和处理器架构从设定的存储位置直接获取项目需要的编译文件目录并拷贝替换到本地动态链接库的目录中即可,不需要再调用编译文件进行本地编译处理,减少打包机器资源浪费,有效提高编译效率以及项目打包效率。
S140:对动态链接库中的目标编译文件目录进行打包处理。
示例性的,通过预先设定打包工具(例如Pkg打包工具)或打包脚本,对动态链接库中的目标编译文件进行打包处理得到目标打包产物,以将Node项目打包成可执行的二进制文件(即目标打包产物)。可选的,本方案提供的打包工具或打包脚本可基于Node.js语言进行编写得到。
在一个可能的实施例中,本方案在对动态链接库中的目标编译文件目录进行打包处理时,可以是将目标编译文件目录拷贝到动态链接库中,并通过设定的打包工具对动态链接库中的目标编译文件目录进行打包处理。
本方案可通过设定的打包工具对保存在动态链接库中的编译文件目录进行打包处理,其中,打包工具可以是Pkg打包工具。示例性的,将目标编译文件目录拷贝到动态链接库后,调用设定的打包工具,通过打包工具对动态链接库中的目标编译文件目录进行打包处理得到目标打包产物。本方案通过打包工具对目标编译文件目录进行打包处理,不需要在本地通过编译工具对待编译文件进行编译后再进行打包,在保证项目打包质量的同时提高项目打包效率。
在一个可能的实施例中,如图2提供的一种本地编译流程示意图所示,本方案提供的项目打包方法还包括步骤S103-S104:
S101:获取项目编译参数,项目编译参数包括待编译包信息和处理器架构。
S102:基于项目编译参数中的待编译包信息从存储目录获取待编译文件。
本方案可通过预编译的方式,基于不同的操作系统和处理器架构预先对待编译文件进行编译处理得到编译文件目录。在上线项目(项目可以是Node项目,且Node项目包含Node addons库,需要将Node项目打包成可执行二进制文件)时,可根据需要的操作系统和处理器架构编译项目所包含的待编译文件,并将编译得到的编译文件目录保存到设定存储位置(云端),各个需要配置项目的设备(项目打包设备)可基于自身的操作系统和处理器架构获取对应的目标编译文件目录进行打包处理。其中,本方案提供的对待编译文件进行编译处理以及上传云端的设备,以及获取目标编译文件目录进行打包处理的设备,可以是相同的设备,也可以是不同的设备。
在一个实施例中,工作人员可根据需要编译的待编译文件,以及用于编译待编译文件的设备的处理器架构配置项目编译参数。可选的,本方案可通过设定的本地编译脚本对待编译文件进行编译,基于此,可在本地编译脚本中配置项目编译参数,本地编译脚本可基于项目编译参数进行待编译文件的编译以及上传。
示例性的,在需要编译待编译文件以及上传编译得到的编译文件目录时,获取配置的项目编译参数,确定项目编译参数中的待编译包信息和处理器架构,并根据待编译包信息从存储目录中获取待编译文件。
在一个实施例中,待编译包信息可用于指示待编译文件所在的存储目录以及待编译文件的包名。例如,可将待编译文件保存在需要编译待编译文件的设备的存储目录中,在配置好项目编译参数后,解析项目编译参数并确定待编译包信息和处理器架构,可通过cd(change directory,改变目录)命令跳转到待编译包信息指示的存储目录,并基于待编译包信息指示的包名从存储目录中获取待编译文件。
S103:根据当前的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录。
示例性的,在获取待编译文件后,根据当前进行编译处理的设备的操作系统以及项目编译参数所指示的处理器架构,对获取到的待编译文件进行编译处理得到编译文件目录。可选的,可通过预先配置的编译工具对待编译文件进行编译。其中,在对待编译文件进行编译处理后,会在存储目录或其他指定位置或目录中生成编译文件目录(例如build目录),该编译文件目录即为对待编译文件进行编译的产物。
在一个可能的实施例中,本方案在根据当前的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录时,可以是确定当前系统环境对应的操作系统;根据当前系统环境对应的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录。
示例性的,在获取待编译文件后,可确定进行编译处理的设备的当前系统环境,其中,当前操作系统环境包括设备的操作系统。进一步的,根据确定的操作系统以及上述确定的处理器架构对待编译文件进行编译处理得到编译文件目录。本方案通过确定当前系统环境对应的操作系统,并根据操作系统和指定的处理器架构编译待编译文件,保证正确对待编译文件的编译处理,得到所需要的编译文件目录,保证项目打包质量。
在一个实施例中,可通过“node-gyp clean configure--verbose--arch=${arch}”命令对待编译文件进行编译,其中arch为指定的处理器架构,同时在执行该命令时,将自动选取当前编译所处的操作系统,并基于当前操作系统以及执行的处理器架构编译待编译文件得到编译文件目录。
在一个实施例中,在将待编译文件配置到存储目录后,设备可基于设备当前的操作系统以及处理器架构对待编译文件进行编译处理,后续基于项目编译参数进行编译处理时,若项目编译参数指示的处理器架构与设备运行的处理器架构一致,可直接采用先前编译得到的编译文件目录,若项目编译参数指示的处理器架构与设备运行的处理器架构不一致,可基于设备的操作系统和项目编译参数指示的处理器架构重新编译待编译文件。
可选的,项目编译参数中记录的处理器架构可以是操作系统支持的一种或多种不同的处理器架构,例如对于Windows操作系统,可配置的处理器架构可以是x64架构和x86架构。可以理解的是,在项目编译参数中配置多个处理器架构时,可分别基于多个不同的处理器架构对待编译文件进行编译处理,得到在该操作系统下,针对不用处理器架构的多个编译文件目录。
在一个可能的实施例中,本方案提供的项目打包方法在对待编译文件进行编译处理得到编译文件目录之后,还可对编译文件目录进行压缩处理得到编译压缩包。基于此,本方案提供的项目打包方法在基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录时,可以是基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译压缩包,并对目标编译压缩包进行解压处理得到目标编译文件目录。
示例性的,在得到编译文件目录后,可对该编译文件目录进行压缩处理得到编译压缩包,后续将以压缩包的形式向云端上传该编译文件目录。对应的,后续在基于项目打包参数获取目标编译文件时,获取到的是对应软件包识别信息、操作系统和处理器架构的目标编译压缩包,解压该目标编译压缩包即可得到软件包识别信息、操作系统和处理器架构对应的目标编译文件目录。本方案通过压缩编译生成的编译文件目录,减少向云端上传的数据量,提高数据上传效率,提高数据管理效率。
在一个可能的实施例中,本方案在提供的项目打包方法在对待编译文件进行编译处理得到编译文件目录之后,还可基于操作系统以及处理器架构对编译文件目录进行重命名处理。
示例性的,在基于操作系统和处理器架构编译待编译文件得到编译文件目录后,可根据对应的操作系统以及处理器架构重命名编译文件目录。可选的,在对待编译文件进行编译得到编译文件目录后,还可对编译文件目录进行压缩处理。例如,基于Windows系统以及x64架构对包名为“npm1”的待编译文件进行编译处理后,对编译得到的编译文件目录进行压缩并重命名为“npm1-win-x64.zip”。基于此,基于所需要的获取的编译文件目录的对应的包名,以及需要配置项目的设备对应的操作系统以及处理器架构,即可快速配置项目打包参数,以及在保存编译文件目录的存储位置中快速定位并获取编译文件目录。本方案通过根据对待编译文件进行编译时对应的操作系统以及处理器架构重命名编译文件目录,方便后续项目打包参数的配置效率,以及降低对编译文件目录的管理难度,提高项目打包效率。
S104:将编译文件目录上传至云端。
示例性的,在编译得到编译文件目录后,可向云端上传编译文件目录,后续各个项目打包设备在需要打包项目时,可从云端直接获取编译文件目录。本方案通过预先对项目所需要的待编译文件进行编译处理,并将编译的生成的编译文件目录上传到云端,即只需在不同的操作系统和处理器架构下编译一次待编译文件,后续各个项目打包设备在需要打包项目时,可从云端直接获取编译文件目录,不需要项目打包设备调用编译工具进行编译。
例如,在Node项目打包中,只需要在不同的操作系统和处理器架构下编译一次Node addons库(即待编译文件),后续的项目打包操作不需要再编译Node addons库,项目打包操作不再依赖于操作系统以及处理器架构对应的编译工具,可在任意的系统环境下进行项目的打包,减少对打包机器的资源占用,有效提高项目打包效率。
在一个可能的实施例中,本方案提供的项目打包方法在根据当前的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录时,可以是通过设定的本地编译脚本,根据当前的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录。
可选的,本方案提供的本地编译脚本可基于Node.js进行编写得到,可在本地编译脚本中配置项目编译参数,本地编译脚本可基于项目编译参数进行项目的本地编译和/或上传(例如执行步骤S101-S204中的一个或多个步骤)。
示例性的,在用于编译待编译文件的设备中预先配置本地编译脚本,工作人员可基于配置项目需要的待编译文件的包名和需要配置的处理器架构(可根据需求配置一个或多个处理器架构)在本地编译脚本中配置项目编译参数。本地编译脚本可解析出项目编译参数中配置的待编译文件包名和处理器架构,并基于待编译文件包名从存储目录获取待编译文件,根据当前编译所处的操作系统以及项目编译参数指定的处理器架构编译待编译文件得到编译文件目录,并将压缩重命名后的编译文件目录上传至云端。可选的,本地编译脚本在获取待编译文件后,可基于自身设定的编译处理策略对待编译文件进行编译,也可以是调用预先配置的编译工具对待编译文件进行编译。本方案通过本地编译脚本实现对项目的本地编译处理,本地编译脚本基于配置好的项目编译参数即可自动获取待编译文件进行编译,以及上传编译得到的编译文件目录,针对所有的操作系统和处理器架构对待编译文件依次编译即可,项目打包设备不需要再根据自身的操作系统和处理器架构进行编译工作,有效提高文件编译和项目打包效率。
上述,通过根据项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,将目标编译文件目录拷贝到动态链接库的目录中,对动态链接库中的目标编译文件目录进行打包处理即可完成项目打包,其中目标编译文件目录为预先基于设定的操作系统和处理器架构进行编译处理得到,不需要再针对当前的操作系统和处理器架构重新编译目标源代码,有效提高项目打包效率。
在上述实施例的基础上,图3给出了本申请实施例提供的另一种项目打包方法的流程图,该项目打包方法是对上述项目打包方法的具体化。参考图3,该项目打包方法包括:
S210:获取项目打包参数,项目打包参数包括软件包识别信息、操作系统和处理器架构。
S220:解析出项目打包参数中软件包识别信息对应的软件包名称数组,软件包名称数组记录有一个或多个编译文件包名。
示例性的,在获取项目打包参数后,解析项目打包参数并确定打包参数中的软件包识别信息、操作系统和处理器架构。其中,本方案提供的软件包识别信息可通过软件包名称数组的方式进行记录,该软件包名称数组用于记录项目所需要的一个或多个目标编译文件目录对应的编译文件包名。
S230:根据软件包名称数组中的编译文件包名,以及项目打包参数中的操作系统和处理器架构进行拼接处理,得到软件包下载地址列表。
示例性的,对上述获取的软件包名称数组中的编译文件包名,以及项目打包参数中的操作系统和处理器架构进行拼接处理,得到记录有项目需要的各个目标编译文件目录的软件包下载地址的软件包下载地址列表。
在一个实施例中,可将预先根据不同操作系统和处理器架构编译生成的编译文件目录保存在云端,每个编译文件目录根据对应的软件包名、操作系统和处理器架构进行记录,并且云端具有基础下载路径,在基础下载路径的基础上,可根据编译文件包名、操作系统和处理器架构从云端下载对应的编译文件目录。基于此,可对基础下载路径、编译文件包名、操作系统和处理器架构进行拼接处理得到软件包下载地址,并可基于软件包下载地址从云端下载对应的编译文件目录。
例如,对项目打包参数进行解析后得到至少三个参数:npmNameArray、osName和arch,其中npmNameArray为软件包名称数组(npm包名字符串数组),例如“npm1、npm2”,表示软件包名称数组中记录有npm1和npm2两个编译文件目录(npm包)的编译文件包名,osName为操作系统,例如“win”表示为win操作系统,arch为处理器架构,例如“x64”,表示为x64架构。假设云端的基础下载路径为“xxx”,拼接基础下载路径、编译文件包名、操作系统和处理器架构后,得到的软件包下载地址列表记录有两个目标编译文件目录对应的软件包下载地址:https://xxx/npm1-win-x64.zip和https://xxx/npm2-win-x64.zip(编译文件目录可以压缩包的形式保存)。
S240:基于软件包下载地址列表依次获取目标编译文件目录,目标编译文件目录基于设定的操作系统和处理器架构进行编译处理得到。
示例性的,在得到软件包下载地址列表后,基于软件包下载地址列表中的每个软件包下载地址依次从云端下载目标编译文件目录对应的压缩包,并解压得到目标编译文件目录。
S250:将目标编译文件目录拷贝到动态链接库的目录中。
S260:对动态链接库中的目标编译文件目录进行打包处理。
在一个实施例中,本方案在基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录时,可以是通过设定的远程编译脚本,基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录。
可选的,本方案提供的远程编译脚本可基于Node.js进行编写得到,可在远程编译脚本中配置项目打包参数,远程编译脚本可基于项目打包参数进行项目的远程编译(例如执行步骤S210-S260中的一个或多个步骤)。
示例性的,在项目打包设备中预先配置远程编译脚本,工作人员可基于项目打包需要的编译文件包名、项目打包设备的操作系统和处理器架构以及基础下载路径在远程编译脚本中配置项目打包参数。将远程编译脚本集成到项目打包流程中,远程编译脚本可解析出项目打包参数中配置的软件包名称数组、操作系统和处理器架构,并基于基础下载路径、软件包名称数组、操作系统和处理器架构生成软件包下载地址列表,并基于软件包下载地址列表依次获取目标编译文件目录,并拷贝到动态链接库的目录中进行打包处理。本方案通过远程编译脚本实现对项目的远程编译处理,远程编译脚本基于配置好的项目打包参数即可从云端获取编译处理好的目标编译文件目录进行打包处理即可,有效提高文件编译和项目打包效率。
例如,在需要配置具备局域网服务发现功能的Node服务器时,其中服务发现功能需通过node_mdns三方npm包来实现,并且node_mdns是一个Node addons库,需要将服务发现功能打包成windows x64和macOS环境下的可执行文件。在上线服务发现功能时,可针对Windows和macOS环境,根据Node addons库对应的包名以及需要的处理器架构配置不同的本地编译脚本,并将本地编译脚本分别配置到Windows环境和macOS环境的编译设备中,并分别针对Windows和macOS环境,根据Node addons库对应的包名以及需要的处理器架构配置不同的远程编译脚本,可将远程编译脚本分别配置到Windows环境和macOS环境的项目打包设备中。
进一步的,可分别在Windows和macOS环境下执行对应的远程编译脚本,通过远程编译脚本编译Node addons库得到indows和macOS环境的编译文件目录并上传到云端。可在需要配置服务发现功能的项目打包设备中配置对应的远程编译脚本,通过远程编译脚本从云端获取相应操作系统以及处理器架构的目标编译文件目录,即可在本地对目标编译文件目录进行项目打包处理,不需要再获取待编译文件进行编译。
上述,通过根据项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,将目标编译文件目录拷贝到动态链接库的目录中,对动态链接库中的目标编译文件目录进行打包处理即可完成项目打包,其中目标编译文件目录为预先基于设定的操作系统和处理器架构进行编译处理得到,不需要再针对当前的操作系统和处理器架构重新编译目标源代码,有效提高项目打包效率。同时,通过对编译文件包名、操作系统和处理器架构进行拼接处理得到软件包下载地址列表,工作人员可基于项目所需要的编译文件包名,以及需要打包项目的设备对应的操作系统和处理器架构,快速配置项目打包参数即可自动从云端下载对应的目标编译文件目录,实现对项目的快速远程编译以及打包处理,不需要将待编译文件下载到本地后再根据操作系统和处理器架构进行编译处理,简化本地的项目打包操作流程,提高文件编译和项目打包效率。
图4给出了本申请实施例提供的一种项目打包装置的结构示意图。参考图4,该项目打包装置包括包括参数获取模块41、目录获取模块42、目录拷贝模块43和项目打包模块44。
其中,参数获取模块41,用于获取项目打包参数,项目打包参数包括软件包识别信息、操作系统和处理器架构;目录获取模块42,用于基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,目标编译文件目录基于设定的操作系统和处理器架构进行编译处理得到;目录拷贝模块43,用于将目标编译文件目录拷贝到动态链接库的目录中;项目打包模块44,用于对动态链接库中的目标编译文件目录进行打包处理。
上述,通过根据项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,将目标编译文件目录拷贝到动态链接库的目录中,对动态链接库中的目标编译文件目录进行打包处理即可完成项目打包,其中目标编译文件目录为预先基于设定的操作系统和处理器架构进行编译处理得到,不需要再针对当前的操作系统和处理器架构重新编译目标源代码,有效提高项目打包效率。
在上述实施例的基础上,目录获取模块42在基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录时,配置为:
通过设定的远程编译脚本,基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录。
在上述实施例的基础上,目录获取模块42在基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录时,配置为:
解析出项目打包参数中软件包识别信息对应的软件包名称数组,软件包名称数组记录有一个或多个编译文件包名;
根据软件包名称数组中的编译文件包名,以及项目打包参数中的操作系统和处理器架构进行拼接处理,得到软件包下载地址列表;
基于软件包下载地址列表依次获取目标编译文件目录。
在上述实施例的基础上,项目打包模块44在对动态链接库中的目标编译文件目录进行打包处理时,配置为:
将目标编译文件目录拷贝到动态链接库中,并通过设定的打包工具对动态链接库中的目标编译文件目录进行打包处理。
在上述实施例的基础上,项目打包装置还包括编译配置模块、文件获取模块、文件编译模块和目录上传模块。
其中,编译配置模块用于获取项目编译参数,项目编译参数包括待编译包信息和处理器架构;文件获取模块用于基于项目编译参数中的待编译包信息从存储目录获取待编译文件;文件编译模块用于根据当前的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录;目录上传模块用于将编译文件目录上传至云端。
在上述实施例的基础上,文件编译模块在根据当前的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录时,配置为:
通过设定的本地编译脚本,根据当前的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录。
在上述实施例的基础上,文件编译模块在根据当前的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录时,配置为:
确定当前系统环境对应的操作系统;
根据当前系统环境对应的操作系统以及项目编译参数中的处理器架构,对待编译文件进行编译处理得到编译文件目录。
在上述实施例的基础上,项目打包装置还包括目录压缩模块,目录压缩模块用于在文件编译模块对待编译文件进行编译处理得到编译文件目录之后,对编译文件目录进行压缩处理得到编译压缩包;
对应的,目录获取模块42在基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录时,配置为:
基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译压缩包,并对目标编译压缩包进行解压处理得到目标编译文件目录。
在上述实施例的基础上,项目打包装置还包括重命名模块,重命名模块用于在文件编译模块对待编译文件进行编译处理得到编译文件目录之后,基于操作系统以及处理器架构对编译文件目录进行重命名处理。
值得注意的是,上述项目打包装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。
本申请实施例还提供了一种项目打包设备,该项目打包设备可集成本申请实施例提供的项目打包装置。图5是本申请实施例提供的一种项目打包设备的结构示意图。参考图5,该项目打包设备包括:输入装置53、输出装置54、存储器52以及一个或多个处理器51;存储器52,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器51执行,使得一个或多个处理器51实现如上述实施例提供的项目打包方法。其中输入装置53、输出装置54、存储器52和处理器51可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器52作为一种计算设备可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请任意实施例提供的项目打包方法对应的程序指令/模块(例如,项目打包装置中的参数获取模块41、目录获取模块42、目录拷贝模块43和项目打包模块44)。存储器52可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器52可进一步包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置53可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置54可包括显示屏等显示设备。
处理器51通过运行存储在存储器52中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的项目打包方法。
上述提供的项目打包装置、设备和计算机可用于执行上述任意实施例提供的项目打包方法,具备相应的功能和有益效果。
本申请实施例还提供一种存储计算机可执行指令的存储介质,上述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的项目打包方法,该项目打包方法包括:获取项目打包参数,项目打包参数包括软件包识别信息、操作系统和处理器架构;基于项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,目标编译文件目录基于设定的操作系统和处理器架构进行编译处理得到;将目标编译文件目录拷贝到动态链接库的目录中;对动态链接库中的目标编译文件目录进行打包处理。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种存储计算机可执行指令的存储介质,其计算机可执行指令不限于如上提供的项目打包方法,还可以执行本申请任意实施例所提供的项目打包方法中的相关操作。
上述实施例中提供的项目打包装置、设备及存储介质可执行本申请任意实施例所提供的项目打包方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的项目打包方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里提供的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。
Claims (12)
1.一种项目打包方法,其特征在于,包括:
获取项目打包参数,所述项目打包参数包括软件包识别信息、操作系统和处理器架构;
基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,所述目标编译文件目录基于设定的操作系统和处理器架构进行编译处理得到;
将所述目标编译文件目录拷贝到动态链接库的目录中;
对所述动态链接库中的所述目标编译文件目录进行打包处理。
2.根据权利要求1所述的项目打包方法,其特征在于,所述基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,包括:
通过设定的远程编译脚本,基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录。
3.根据权利要求1所述的项目打包方法,其特征在于,所述基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,包括:
解析出所述项目打包参数中软件包识别信息对应的软件包名称数组,所述软件包名称数组记录有一个或多个编译文件包名;
根据所述软件包名称数组中的编译文件包名,以及所述项目打包参数中的操作系统和处理器架构进行拼接处理,得到软件包下载地址列表;
基于所述软件包下载地址列表依次获取目标编译文件目录。
4.根据权利要求1所述的项目打包方法,其特征在于,所述对所述动态链接库中的所述目标编译文件目录进行打包处理,包括:
将所述目标编译文件目录拷贝到动态链接库中,并通过设定的打包工具对所述动态链接库中的所述目标编译文件目录进行打包处理。
5.根据权利要求1所述的项目打包方法,其特征在于,所述项目打包方法还包括:
获取项目编译参数,所述项目编译参数包括待编译包信息和处理器架构;
基于所述项目编译参数中的待编译包信息从存储目录获取待编译文件;
根据当前的操作系统以及所述项目编译参数中的处理器架构,对所述待编译文件进行编译处理得到编译文件目录;
将所述编译文件目录上传至云端。
6.根据权利要求5所述的项目打包方法,其特征在于,所述根据当前的操作系统以及所述项目编译参数中的处理器架构,对所述待编译文件进行编译处理得到编译文件目录,包括:
通过设定的本地编译脚本,根据当前的操作系统以及所述项目编译参数中的处理器架构,对所述待编译文件进行编译处理得到编译文件目录。
7.根据权利要求5所述的项目打包方法,其特征在于,所述根据当前的操作系统以及所述项目编译参数中的处理器架构,对所述待编译文件进行编译处理得到编译文件目录,包括:
确定当前系统环境对应的操作系统;
根据当前系统环境对应的操作系统以及所述项目编译参数中的处理器架构,对所述待编译文件进行编译处理得到编译文件目录。
8.根据权利要求5所述的项目打包方法,其特征在于,所述对所述待编译文件进行编译处理得到编译文件目录之后,还包括:
对所述编译文件目录进行压缩处理得到编译压缩包;
所述基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,包括:
基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译压缩包,并对所述目标编译压缩包进行解压处理得到目标编译文件目录。
9.根据权利要求5所述的项目打包方法,其特征在于,所述对所述待编译文件进行编译处理得到编译文件目录之后,还包括:
基于操作系统以及处理器架构对所述编译文件目录进行重命名处理。
10.一种项目打包装置,其特征在于,包括参数获取模块、目录获取模块、目录拷贝模块和项目打包模块,其中:
所述参数获取模块,用于获取项目打包参数,所述项目打包参数包括软件包识别信息、操作系统和处理器架构;
所述目录获取模块,用于基于所述项目打包参数中的软件包识别信息、操作系统和处理器架构获取目标编译文件目录,所述目标编译文件目录基于设定的操作系统和处理器架构进行编译处理得到;
所述目录拷贝模块,用于将所述目标编译文件目录拷贝到动态链接库的目录中;
所述项目打包模块,用于对所述动态链接库中的所述目标编译文件目录进行打包处理。
11.一种项目打包设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9任一项所述的项目打包方法。
12.一种存储计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-9任一项所述的项目打包方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310032421.1A CN118312204A (zh) | 2023-01-06 | 2023-01-06 | 一种项目打包方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310032421.1A CN118312204A (zh) | 2023-01-06 | 2023-01-06 | 一种项目打包方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118312204A true CN118312204A (zh) | 2024-07-09 |
Family
ID=91721180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310032421.1A Pending CN118312204A (zh) | 2023-01-06 | 2023-01-06 | 一种项目打包方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118312204A (zh) |
-
2023
- 2023-01-06 CN CN202310032421.1A patent/CN118312204A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8028268B2 (en) | System and method for building software package for embedded system | |
US6571388B1 (en) | Building a custom software environment including pre-loaded classes | |
US6922827B2 (en) | Iterative software development environment with prioritized build rules | |
US7716414B2 (en) | Method for updating a mobile device using an update package obtained from a remote server | |
CN108897547B (zh) | 一种软件自动化部署方法及装置 | |
CN104793946A (zh) | 基于云计算平台的应用部署方法和系统 | |
CN106294113B (zh) | 一种基于可编程式测试服务的创建方法及装置 | |
CA2539433A1 (en) | Systems and methods for dynamically linking application software into a running operating system kernel | |
CN112882718B (zh) | 编译处理方法、装置、设备及存储介质 | |
CN115629971A (zh) | 一种应用的开发系统和开发方法 | |
CN116991381B (zh) | 一种应用交叉编译方法、装置、计算设备及存储介质 | |
CN116049207A (zh) | 应用程序sql脚本处理方法、装置、处理器及电子设备 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN114816816A (zh) | 崩溃堆栈信息处理方法、装置、设备及存储介质 | |
CN111858359B (zh) | 可执行文件的工程代码位置获取方法和装置 | |
CN111367512B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN117785212A (zh) | 导入依赖包和第三方库裁剪优化方法、装置、介质及设备 | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN118312204A (zh) | 一种项目打包方法、装置、设备及存储介质 | |
CN111273940B (zh) | 将程序文件上传至代码仓库的方法及装置 | |
CN110058876B (zh) | 扩展wireshark软件兼容性的方法、装置、服务器及存储介质 | |
CN111913720A (zh) | 一种程序部署方法及装置 | |
CN116991427B (zh) | 一种应用编译方法、装置、计算设备及存储介质 | |
US20240248689A1 (en) | Determining dependencies in workspaces | |
CN116991411A (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 |