CN115098158A - Sdk打包方法和装置、计算机设备及存储介质 - Google Patents

Sdk打包方法和装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN115098158A
CN115098158A CN202210860312.4A CN202210860312A CN115098158A CN 115098158 A CN115098158 A CN 115098158A CN 202210860312 A CN202210860312 A CN 202210860312A CN 115098158 A CN115098158 A CN 115098158A
Authority
CN
China
Prior art keywords
static library
library
sdk
static
libraries
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
Application number
CN202210860312.4A
Other languages
English (en)
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.)
Kangjian Information Technology Shenzhen Co Ltd
Original Assignee
Kangjian Information 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 Kangjian Information Technology Shenzhen Co Ltd filed Critical Kangjian Information Technology Shenzhen Co Ltd
Priority to CN202210860312.4A priority Critical patent/CN115098158A/zh
Publication of CN115098158A publication Critical patent/CN115098158A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种SDK打包方法和装置、计算机设备及存储介质,涉及计算机技术领域。该方法获取预先定义的一个或多个依赖库,其中一个或多个依赖库是目标项目打包需要排除在SDK产物外的;响应针对目标项目的打包操作,使用预设编译工具对目标项目的文件进行指定版本编译,生成多个静态库产物;在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物;使用第一预设命令工具将删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物。本申请实施例可以指定与宿主符号冲突的库无需打进SDK中,无需重命名依赖库,避免和宿主冲突,能够控制包大小,提高SDK的开发打包效率。

Description

SDK打包方法和装置、计算机设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种SDK打包方法和装置、计算机设备及存储介质。
背景技术
CocoaPods是iOS(internetwork Operating System,互联网操作系统)应用开发中常用的自动化模块管理工具,特别是基于Objective-C语言开发的iOS项目,95%以上都是用CocoaPods来管理模块依赖,包括开源的第三方模块(也称为三方库)和内部开发的模块(也称为二方库),这些模块通常是对一些独立功能或业务的封装,比如网络请求模块、打点模块、通用UI(User Interface,用户界面)组件模块、工具类模块等。使用CocoaPods可以很方便的管理这些模块,包括模块之间的依赖关系,模块的接入,模块的版本更新,模块的制作等,极大的提高了开发效率。
在SDK(Software Development Kit,软件开发工具包)开发中,通常会需要接入一些现有的模块功能,不管是三方库还是二方库,比如网络请求、打点库等,而在SDK开发中管理这些模块,是否使用CocoaPods工具都有各自的缺陷:
1.如果不用CocoaPods工具管理,需要将三方库和二方库的代码手动拷贝到项目中,并且需要将三方库中的类,全局变量重命名来避免和宿主符号冲突,这样效率较低,且重命名三方库会增加包的体积,依赖库的更新和更换都比较麻烦。
2.如果使用CocoaPods工具管理,在默认情况下CocoaPods管理的模块(包括开源的第三方模块或者内部开发的模块)无法直接打包到SDK产物(即是指SDK开发中最终需要交付给使用方使用的静态库文件和资源文件)中,每个依赖的库都需要单独打一份静态库产物和SDK一起交付,同样会影响开发效率。
因此,如何控制包大小,且能避免和宿主符号冲突,提高SDK的开发打包效率成为亟需解决的技术问题。
发明内容
本申请提供一种SDK打包方法和装置、计算机设备及存储介质,以控制包大小,且能避免和宿主符号冲突,提高SDK的开发打包效率。
第一方面,提供了一种SDK打包方法,包括:
获取预先定义的一个或多个依赖库,其中所述一个或多个依赖库是目标项目打包需要排除在SDK产物外的;
响应针对所述目标项目的打包操作,使用预设编译工具对所述目标项目的文件进行指定版本编译,生成多个静态库产物;
在所述多个静态库产物中,将预先定义的所述一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物;
使用第一预设命令工具将所述删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物。
第二方面,提供了一种SDK打包装置,包括:
获取模块,用于获取预先定义的一个或多个依赖库,其中所述一个或多个依赖库是目标项目打包需要排除在SDK产物外的;
编译模块,用于响应针对所述目标项目的打包操作,使用预设编译工具对所述目标项目的文件进行指定版本编译,生成多个静态库产物;
删除模块,用于在所述多个静态库产物中,将预先定义的所述一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物;
合并打包模块,用于使用第一预设命令工具将所述删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物。
第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述SDK打包方法的步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述SDK打包方法的步骤。
上述SDK打包方法和装置、计算机设备及存储介质所实现的方案中,可以获取预先定义的一个或多个依赖库,其中所述一个或多个依赖库是目标项目打包需要排除在SDK产物外的;响应针对目标项目的打包操作,使用预设编译工具对目标项目的文件进行指定版本编译,生成多个静态库产物;在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物;使用第一预设命令工具将删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物。可以看到,本申请实施例可以获取预先定义的一个或多个依赖库,这些一个或多个依赖库是目标项目打包需要排除在SDK产物外的,在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,这样可以指定哪些库需要打进SDK中,哪些库不需要打进SDK中,可以指定那些与宿主符号冲突的库不需要打进SDK中,无需重命名依赖库,可以避免和宿主符号冲突,能够控制包大小,提高SDK的开发打包效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的SDK打包方法的流程示意图;
图2是本申请另一实施例提供的SDK打包方法的流程示意图;
图3是本申请另一实施例提供的SDK打包方法的示例示意图;
图4是本申请一实施例提供的SDK打包装置的结构示意图;
图5是本申请另一实施例提供的SDK打包装置的结构示意图;
图6是本申请一实施例提供的计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。
为解决上述技术问题,本申请实施例提供了一种SDK打包方法,可以应用在个人电脑、服务器等计算机设备。图1是本申请一实施例提供的SDK打包方法的流程示意图,可以包括如下步骤S101至S104:
步骤S101,获取预先定义的一个或多个依赖库,其中所述一个或多个依赖库是目标项目打包需要排除在SDK产物外的。
该步骤中,目标项目是SDK开发项目,这里可以预先定义哪些库需要打进SDK中,哪些库不需要打进SDK中。具体地,开发者可以根据目标项目的宿主的依赖库使用情况来定义,比如定向的SDK,那么宿主的依赖库情况可以询问宿主获得;如果是通用的SDK,不知道是谁使用的,那么可以把第三方模块(也称为三方库)都删除即可。也就是说,定向的SDK,可以把目标项目和宿主双方共同拥有的三方库删掉;通用的SDK,可以删掉SDK使用到的所有的三方库。因此,可以获取开发者预先定义的一个或多个依赖库,这里的一个或多个依赖库是目标项目打包需要排除在SDK产物外的。
举例来说,可以预先定义那些与目标项目的宿主符号冲突的库不需要打进SDK中,例如目标项目的宿主接入三方库库c,目标项目也接入三方库库c,如果目标项目将三方库库c打进SDK中,当宿主集成目标项目时,两个三方库库c在调用时就会发生冲突,因此需要对目标项目中三方库库c中的类进行全局变量重命名,这样会增加开发时间,同时重命名三方库会增加包体积。而本申请实施例可以将三方库库c不打进SDK中,当宿主集成目标项目时,目标项目可以调用宿主的三方库库c实现三方库库c相应的功能。需要说明的是,此处列举仅是示意性的,并不对本申请实施例进行限制。
这里,预先定义的一个或多个依赖库可以是三方库,也可以是二方库,本申请实施例对此不作限制。举例来说,目标项目的宿主接入二方库库s,目标项目也接入二方库库s,如果目标项目将二方库库s打进SDK中,当宿主集成目标项目时,两个二方库库s在调用时就会发生冲突,因此需要对目标项目中二方库库s中的类进行全局变量重命名,这样会增加开发时间,同时重命名二方库会增加包体积。而本申请实施例可以将二方库库s不打进SDK中,当宿主集成目标项目时,目标项目可以调用宿主的二方库库s实现二方库库s相应的功能。
步骤S102,响应针对目标项目的打包操作,使用预设编译工具对目标项目的文件进行指定版本编译,生成多个静态库产物。
该步骤中,编译可以是指将开发代码的语言翻译成计算机能够识别的二进制语言,预设编译工具可以是Xcode自带编译工具XcodeBuild,Xcode是一种集成开发工具,它具有统一的用户界面,设计、编码、测试、调试等都在一个简单的窗口内完成;预设编译工具还可以是其它编译工具,本申请实施例对此不作限制。
步骤S103,在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物。
该步骤中,各个依赖库编译后生成相应的文件夹,文件夹中包括各个依赖库编译后的静态库产物,文件夹的名称与各个依赖库对应,例如各个依赖库编译后会有一个同名的文件夹生成,里面是静态库文件和资源文件,即静态库产物。因此可以把预先定义的一个或多个依赖库对应的文件夹删除,即是将预先定义的一个或多个依赖库对应的静态库产物删除。
需要说明的是,本申请实施例获取预先定义的一个或多个依赖库,这些一个或多个依赖库是需要排除在SDK产物外的,考虑到编译前就把这些依赖库删除会导致编译报错,找不到依赖的信息,因此不在编译前把这些依赖库删除,而是在编译后把这些依赖库的静态库产物删除。
步骤S104,使用第一预设命令工具将删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物。
该步骤中,第一预设命令工具可以是libtool命令工具等,本申请实施例对此不作限制。生成的静态指定类型的文件的SDK可以方便宿主集成。
本申请实施例可以获取预先定义的一个或多个依赖库,这些一个或多个依赖库是目标项目打包需要排除在SDK产物外的,在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,这样可以指定哪些库需要打进SDK中,哪些库不需要打进SDK中,可以指定那些与宿主符号冲突的库不需要打进SDK中,无需重命名依赖库,可以避免和宿主符号冲突,能够控制包大小,提高SDK的开发打包效率。
本申请实施例中提供了一种可能的实现方式,如前面介绍,可以预先定义目标项目打包需要排除在SDK产物外的一个或多个依赖库,在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,这样可以指定哪些库需要打进SDK中,哪些库不需要打进SDK中,可以指定那些与宿主符号冲突的库不需要打进SDK中,因此具体可以通过以下步骤A1和A2来预先定义一个或多个依赖库:
步骤A1,获取即将集成目标项目的宿主所接入的依赖库的信息;
步骤A2,根据目标项目的宿主所接入的依赖库的信息和目标项目本身所接入的依赖库的信息,预先定义目标项目打包需要排除在SDK产物外的一个或多个依赖库。
举例来说,可以获取即将集成目标项目的宿主所接入的依赖库的信息,比如目标项目的宿主接入三方库库c、m和n,二方库库p和q,目标项目也接入三方库库c,如果目标项目将三方库库c打进SDK中,当宿主集成目标项目时,两个三方库库c在调用时就会发生冲突,因此需要对目标项目中三方库库c中的类进行全局变量重命名,这样会增加开发时间,同时重命名三方库会增加包体积。本实施例可以根据目标项目的宿主所接入的依赖库的信息,预先定义目标项目打包需要排除在SDK产物外的一个或多个依赖库为三方库库c,这样可以将三方库库c不打进SDK中,当宿主集成目标项目时,目标项目可以调用宿主的三方库库c实现三方库库c相应的功能。
本申请实施例中提供了一种可能的实现方式,如前文介绍,CocoaPods工具在管理二方库和三方库的接入有着无法比拟的优势,它可以很方便的管理二方库和三方库的接入,版本更新,并且在行业中广泛使用,因此在开发SDK中,也有必要使用CocoaPods这个工具,来提高整体的开发效率。具体地,目标项目和目标项目的宿主均使用CocoaPods工具管理依赖库,上文步骤A1获取即将集成目标项目的宿主所接入的依赖库的信息,具体可以是通过CocoaPods工具获取即将集成目标项目的宿主所接入的依赖库的信息。也就是说,目标项目和目标项目的宿主均使用CocoaPods工具管理依赖库,可以直接通过CocoaPods工具获取即将集成目标项目的宿主所接入的依赖库的信息,方便快捷且准确。
本申请实施例中提供了一种可能的实现方式,上文步骤S102中提及的指定版本编译可以是真机的版本编译,也可以是模拟器的版本编译,还可以是真机和模拟器的版本编译,则步骤S102使用预设编译工具对目标项目的文件进行指定版本编译,生成多个静态库产物,具体可以是使用预设编译工具对目标项目的文件分别进行真机和/或模拟器的版本编译,得到多个静态库产物的真机版本和/或模拟器版本。即,可以是使用预设编译工具对目标项目的文件进行真机的版本编译,得到多个静态库产物的真机版本;也可以是使用预设编译工具对目标项目的文件进行模拟器的版本编译,得到多个静态库产物的模拟器版本;还可以是使用预设编译工具对目标项目的文件分别进行真机和模拟器的版本编译,得到多个静态库产物的真机版本和模拟器版本。这样,可以根据真机和/或模拟器的版本实际需求,使用预设编译工具对目标项目的文件分别进行真机和/或模拟器的版本编译,得到多个静态库产物的真机版本和/或模拟器版本,提高开发效率。
本申请实施例中提供了一种可能的实现方式,如果是使用预设编译工具对目标项目的文件分别进行真机和/或模拟器的版本编译,得到多个静态库产物的真机版本和/或模拟器版本,那么步骤S103在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物,具体可以包括以下步骤B1和/或步骤B2:
步骤B1,在多个静态库产物的真机版本中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的真机版本;
步骤B2,在多个静态库产物的模拟器版本中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的模拟器版本。
在上面的实施例中,在多个静态库产物的真机版本中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的真机版本;以及在多个静态库产物的模拟器版本中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的模拟器版本,这样可以针对多个静态库产物的真机版本或多个静态库产物的模拟器版本,指定哪些库需要打进SDK中,哪些库不需要打进SDK中,可以指定那些与宿主符号冲突的库不需要打进SDK中,无需重命名依赖库,可以避免和宿主符号冲突,能够控制包大小,提高SDK的开发打包效率。
本申请实施例中提供了一种可能的实现方式,删除后的至少一个静态库产物可以包括删除后的至少一个静态库产物的真机版本和删除后的至少一个静态库产物的模拟器版本,那么上面步骤S104使用第一预设命令工具将删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物,具体可以包括以下步骤C1和C2:
步骤C1,使用第二预设命令工具分别对删除后的至少一个静态库产物各自的真机版本和模拟器版本进行合并,得到删除后的至少一个静态库产物各自的合并版本;
步骤C2,使用第一预设命令工具将删除后的至少一个静态库产物各自的合并版本进行合并,生成静态指定类型文件的SDK产物。
在本实施例中,可以针对多个静态库产物的真机版本和多个静态库产物的模拟器版本,指定哪些库需要打进SDK中,哪些库不需要打进SDK中,可以指定那些与宿主符号冲突的库不需要打进SDK中,无需重命名依赖库,可以避免和宿主符号冲突,能够控制包大小,提高SDK的开发打包效率。
以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍本申请实施例的SDK打包方法的实现过程。
如前文介绍,在SDK开发中管理三方库或二方库,是否使用CocoaPods工具都有各自的缺陷,而由于CocoaPods在管理二方库和三方库的接入有着无法比拟的优势,它可以很方便的管理二方库和三方库的接入,版本更新,并且在行业中广泛使用,因此在开发SDK中,也有必要使用CocoaPods这个工具,来提高整体的开发效率。
通常对于SDK产物,需要提供静态Framework类型的文件以方便宿主集成,针对SDK的打包,CocoaPods本身提供了一个打包插件cocoapods-packager,但对产物是静态Framework类型的文件时,该插件只能打包SDK本身的代码,无法将依赖的二方库和三方库一起打入SDK。在实际的需求中,为了控制包大小(重命名三方库会增加包体积)以及解决符号冲突问题(三方库往往容易SDK和宿主同时接入导致冲突),因此希望将二方库以及部分三方库打入SDK产物中,目前的打包插件并不能满足这个需求。
本申请实施例的创新点在于自定义一个打包脚本,即一组用脚本语言编写的命令程序,完成打包功能;也可以是一个打包插件,满足CocoaPods支持的插件形式,整体设计思路一样,只是实现的编程语言不一样,从而实现可以指定哪些CocoaPods库需要打进SDK中,哪些不需要打进SDK中,达到能一键打包,能控制包大小,能避免符号冲突的目的,提高SDK的开发打包效率。图2是本申请另一实施例提供的SDK打包方法的流程示意图,具体可以包括以下步骤S201至S205:
步骤S201,获取即将集成目标项目的宿主所接入的依赖库的信息,根据目标项目的宿主所接入的依赖库的信息,预先定义目标项目打包需要排除在SDK产物外的一个或多个依赖库。
该步骤中,目标项目是SDK开发项目,这里可以指定那些与目标项目的宿主符号冲突的库不需要打进SDK中。具体地,开发者可以根据目标项目的宿主的依赖库使用情况来定义,比如定向的SDK,那么宿主的依赖库情况可以询问宿主获得;如果是通用的SDK,不知道是谁使用的,那么可以把三方库都删除即可。也就是说,定向的SDK,可以把目标项目和宿主双方共同拥有的三方库删掉;通用的SDK,可以删掉SDK使用到的所有的三方库。因此,可以获取开发者预先定义的目标项目打包需要排除在SDK产物外的一个或多个依赖库。
步骤S202,响应针对目标项目的打包操作,使用Xcode自带编译工具XcodeBuild对目标项目的文件进行真机和模拟器的版本编译,得到多个静态库产物的真机版本和模拟器版本。
参见图3,响应针对目标项目的打包操作,SDK shell打包脚本使用Xcode自带编译工具XcodeBuild对目标项目的文件进行真机和模拟器的版本编译,得到SDK业务包、依赖库1、依赖库2、依赖库3、依赖库4的真机版本和模拟器版本。
步骤S203,在多个静态库产物的真机版本中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的真机版本;以及在多个静态库产物的模拟器版本中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的模拟器版本。
如图3所示,将依赖库2的真机版本和模拟器版本进行删除。
步骤S204,使用lipo命令工具分别对删除后的至少一个静态库产物各自的真机版本和模拟器版本进行合并,得到删除后的至少一个静态库产物各自的合并版本。
如图3所示,使用lipo命令工具分别对SDK业务包、依赖库1、依赖库3、依赖库4的真机版本和模拟器版本进行合并,得到SDK合成包、依赖库1合成包、依赖库3合成包、依赖库4合成包。
步骤S205,使用libtool命令工具将删除后的至少一个静态库产物各自的合并版本进行合并,生成静态Framework类型的文件的SDK,得到SDK最终产物。
本实施例使用上述打包脚本后,开发人员可以使用CocoaPods来管理开发SDK项目,一键打包,既能控制SDK包大小,又能避免和宿主符号冲突,大大提高SDK的开发部署效率。
需要说明的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。实际应用中,上述所有可能的实施方式可以采用结合的方式任意组合,形成本申请的可能的实施例,在此不再一一赘述。
基于上文各个实施例提供的SDK打包方法,基于同一发明构思,本申请实施例还提供了一种SDK打包装置。
图4是本申请一实施例提供的SDK打包装置的结构示意图。如图4所示,该SDK打包装置可以是一个打包的脚本或打包插件,具体可以包括获取模块410、编译模块420、删除模块430以及合并打包模块440。
获取模块410,用于获取预先定义的一个或多个依赖库,其中所述一个或多个依赖库是目标项目打包需要排除在SDK产物外的;
编译模块420,用于响应针对目标项目的打包操作,使用预设编译工具对目标项目的文件进行指定版本编译,生成多个静态库产物;
删除模块430,用于在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物;
合并打包模块440,用于使用第一预设命令工具将删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物。
本申请实施例中提供了一种可能的实现方式,如图5所示,上文图4展示装置还可以包括定义模块510还用于:
获取即将集成目标项目的宿主所接入的依赖库的信息;
根据目标项目的宿主所接入的依赖库的信息和目标项目本身所接入的依赖库的信息,预先定义一个或多个依赖库。
本申请实施例中提供了一种可能的实现方式,目标项目和目标项目的宿主均使用CocoaPods工具管理依赖库;上文图5展示的定义模块510还用于:
通过CocoaPods工具获取即将集成目标项目的宿主所接入的依赖库的信息。
本申请实施例中提供了一种可能的实现方式,指定版本编译包括真机和/或模拟器的版本编译;上述图4展示的编译模块420还用于:
使用预设编译工具对目标项目的文件分别进行真机和/或模拟器的版本编译,得到多个静态库产物的真机版本和/或模拟器版本。
本申请实施例中提供了一种可能的实现方式,所述多个静态库产物包括所述多个静态库产物的真机版本和/或模拟器版本;上述图4展示的删除模块430还用于:
在多个静态库产物的真机版本中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的真机版本;和/或
在多个静态库产物的模拟器版本中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的模拟器版本。
本申请实施例中提供了一种可能的实现方式,删除后的至少一个静态库产物包括删除后的至少一个静态库产物的真机版本和删除后的至少一个静态库产物的模拟器版本;上述图4展示的合并打包模块440还用于:
使用第一预设命令工具将删除后的至少一个静态库产物合并,生成静态指定类型的文件的SDK,包括:
使用第二预设命令工具分别对删除后的至少一个静态库产物各自的真机版本和模拟器版本进行合并,得到删除后的至少一个静态库产物各自的合并版本;
使用第一预设命令工具将删除后的至少一个静态库产物各自的合并版本进行合并,生成静态指定类型文件的SDK产物。
本申请实施例中提供了一种可能的实现方式,所述使用预设编译工具对所述目标项目的文件进行指定版本编译时,所述一个或多个依赖库中的各个依赖库编译后生成相应的文件夹,文件夹中包括各个依赖库编译后的静态库产物,文件夹的名称与各个依赖库对应;
上述图4展示的删除模块430还用于:在多个静态库产物中,将预先定义的一个或多个依赖库对应的文件夹删除,得到删除后的至少一个静态库产物。
基于同一发明构思,本申请实施例还提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述SDK打包方法的步骤。
在示例性的实施例中,提供了一种计算机设备,该计算机设备可以是服务端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性和/或易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的客户端通过网络连接通信。该计算机程序被处理器执行时实现一种SDK打包方法服务端侧的功能或步骤。
基于同一发明构思,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任意一个实施例的SDK打包方法。
需要说明的是,上述关于计算机设备或计算机可读存储介质所能实现的功能或步骤,可对应参阅前述方法实施例中,服务端侧以及客户端侧的相关描述,为避免重复,这里不再一一描述。
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置、模块的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
本领域普通技术人员可以理解:本申请的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干程序指令,用以使得一电子设备(例如个人计算机,服务器,或者网络设备等)在运行所述程序指令时执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的电子设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被电子设备的处理器执行时,所述电子设备执行本申请各实施例所述方法的全部或部分步骤。
以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:在本申请的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本申请的保护范围。

Claims (10)

1.一种SDK打包方法,其特征在于,包括:
获取预先定义的一个或多个依赖库,其中所述一个或多个依赖库是目标项目打包需要排除在SDK产物外的;
响应针对所述目标项目的打包操作,使用预设编译工具对所述目标项目的文件进行指定版本编译,生成多个静态库产物;
在所述多个静态库产物中,将预先定义的所述一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物;
使用第一预设命令工具将所述删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物。
2.根据权利要求1所述的方法,其特征在于,通过以下步骤预先定义一个或多个依赖库:
获取即将集成所述目标项目的宿主所接入的依赖库的信息;
根据所述目标项目的宿主所接入的依赖库的信息和所述目标项目本身所接入的依赖库的信息,预先定义所述一个或多个依赖库。
3.根据权利要求2所述的方法,其特征在于,所述目标项目和所述目标项目的宿主均使用CocoaPods工具管理依赖库;
所述获取即将集成所述目标项目的宿主所接入的依赖库的信息,包括:
通过CocoaPods工具获取即将集成所述目标项目的宿主所接入的依赖库的信息。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述指定版本编译包括真机和/或模拟器的版本编译;
使用预设编译工具对所述目标项目的文件进行指定版本编译,生成多个静态库产物,包括:
使用预设编译工具对所述目标项目的文件分别进行真机和/或模拟器的版本编译,得到所述多个静态库产物的真机版本和/或模拟器版本。
5.根据权利要求4所述的方法,其特征在于,所述多个静态库产物包括所述多个静态库产物的真机版本和/或模拟器版本;在所述多个静态库产物中,将预先定义的所述一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物,包括:
在所述多个静态库产物的真机版本中,将预先定义的所述一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的真机版本;和/或
在所述多个静态库产物的模拟器版本中,将预先定义的所述一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物的模拟器版本。
6.根据权利要求5所述的方法,其特征在于,所述删除后的至少一个静态库产物包括所述删除后的至少一个静态库产物的真机版本和所述删除后的至少一个静态库产物的模拟器版本;
所述使用第一预设命令工具将所述删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物,包括:
使用第二预设命令工具分别对所述删除后的至少一个静态库产物各自的真机版本和模拟器版本进行合并,得到所述删除后的至少一个静态库产物各自的合并版本;
使用第一预设命令工具将所述删除后的至少一个静态库产物各自的合并版本进行合并,生成静态指定类型文件的SDK产物。
7.根据权利要求1所述的方法,其特征在于,所述使用预设编译工具对所述目标项目的文件进行指定版本编译时,所述一个或多个依赖库中的各个依赖库编译后生成相应的文件夹,文件夹中包括各个依赖库编译后的静态库产物,文件夹的名称与各个依赖库对应;
所述在多个静态库产物中,将预先定义的一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物,包括:
在多个静态库产物中,将预先定义的一个或多个依赖库对应的文件夹删除,得到删除后的至少一个静态库产物。
8.一种SDK打包装置,其特征在于,包括:
获取模块,用于获取预先定义的一个或多个依赖库,其中所述一个或多个依赖库是目标项目打包需要排除在SDK产物外的;
编译模块,用于响应针对所述目标项目的打包操作,使用预设编译工具对所述目标项目的文件进行指定版本编译,生成多个静态库产物;
删除模块,用于在所述多个静态库产物中,将预先定义的所述一个或多个依赖库对应的静态库产物删除,得到删除后的至少一个静态库产物;
合并打包模块,用于使用第一预设命令工具将所述删除后的至少一个静态库产物合并,生成静态指定类型文件的SDK产物。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述SDK打包方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述SDK打包方法的步骤。
CN202210860312.4A 2022-07-21 2022-07-21 Sdk打包方法和装置、计算机设备及存储介质 Pending CN115098158A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210860312.4A CN115098158A (zh) 2022-07-21 2022-07-21 Sdk打包方法和装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210860312.4A CN115098158A (zh) 2022-07-21 2022-07-21 Sdk打包方法和装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN115098158A true CN115098158A (zh) 2022-09-23

Family

ID=83299124

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210860312.4A Pending CN115098158A (zh) 2022-07-21 2022-07-21 Sdk打包方法和装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN115098158A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116560699A (zh) * 2023-07-10 2023-08-08 易方信息科技股份有限公司 通过sdk版本混搭进行快速修复的方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116560699A (zh) * 2023-07-10 2023-08-08 易方信息科技股份有限公司 通过sdk版本混搭进行快速修复的方法及装置
CN116560699B (zh) * 2023-07-10 2024-02-13 易方信息科技股份有限公司 通过sdk版本混搭进行快速修复的方法及装置

Similar Documents

Publication Publication Date Title
US10481884B2 (en) Systems and methods for dynamically replacing code objects for code pushdown
CN110149800B (zh) 一种用于处理与源程序的源代码相关联的抽象语法树的装置
US20240045850A1 (en) Systems and methods for database orientation transformation
US11429365B2 (en) Systems and methods for automated retrofitting of customized code objects
Voelter et al. mbeddr: Instantiating a language workbench in the embedded software domain
CN111796831B (zh) 一种多芯片兼容的编译方法和装置
US20150242194A1 (en) System for Translating Diverse Programming Languages
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
US9459986B2 (en) Automatic generation of analysis-equivalent application constructs
Butting et al. Systematic language extension mechanisms for the MontiArc architecture description language
CN112394942A (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
Krüger et al. Composing annotations without regret? Practical experiences using FeatureC
Klatt et al. A graph-based analysis concept to derive a variation point design from product copies
CN115098158A (zh) Sdk打包方法和装置、计算机设备及存储介质
US20100083238A1 (en) Binary manipulation of intermediate-language code
Hähnle et al. HATS abstract behavioral specification: The architectural view
CN109271237B (zh) 仿真控制方法和装置
CN115390846A (zh) 编译构建方法、装置、电子设备和存储介质
CN106547519B (zh) 信息处理方法及系统
CN114174983B (zh) 用于高级构造的优化的自动验证的方法和系统
Schöne et al. Incremental causal connection for self-adaptive systems based on relational reference attribute grammars
US9389838B2 (en) Method for creating a computer software compiler for client server computing
WO2008015110A2 (en) Methods, apparatus and computer programs for modelling computer programs
CN113326048B (zh) 浮点数计算精度处理方法、系统、介质及设备
Marticorena et al. Refactoring generics in JAVA: a case study on Extract Method

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