静态库生成方法及装置制造方法及图纸

技术编号:27934278 阅读:27 留言:0更新日期:2021-04-02 14:13
本发明专利技术提供一种静态库生成方法及装置,该方法包括:对集成多个开发工程的壳工程并行执行终端和模拟器编译,获取各开发工程的编译结果;对多个开发工程并行创建包括目标.a库文件的framework目录;对N个对应于OC语言的第一开发工程,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件;对M个对应于Swift语言或者OC/Swift混编语言的第二开发工程,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件;其中,N、M为大于或者等于1的整数。本发明专利技术可以批量生成支持module的静态库,提升静态库生成效率。

【技术实现步骤摘要】
静态库生成方法及装置
本专利技术涉及数据处理
,尤其涉及一种静态库生成方法及装置。
技术介绍
目前越来越多的应用程序采用OC(Objective-C,扩充C的面向对象编程语言)和Swift语言混编。针对应用程序而言,通常是基于众多pod(工程)架构起来的,而为了提高编译速度,需要有一套对应的静态库。在从多pod中,部分pod对应于纯OC语言,部分pod对应于纯Swift语言或者对应于OC/Swift混编,对于前者而言,为了支持外部的module引用,需要生成framework(框架)静态库,对于后者而言,framework静态库需要携带Swift相关信息。现有技术中,在针对上述情况生成静态库时包括以下两种方案。方案一:对于每个pod,创建单独的framework工程,设置其依赖的其它pod,并设置好暴露的头文件和资源文件,编译后产生的.framework即是所需要的静态库。方案二:通过一个壳工程将所有pod集成进去,编译后,即产生每个工程的.a文件,再从源码文件中提取头文件和资源文件,即生成多工程静态库。对于方案一而言,由于需要针对每个工程创建单独的framework工程,工作量大,需要进行大量的重复编译,并且不便自动化设置要暴露的头文件和资源文件。对于方案二而言,虽然能一次性编译生成.a静态库,但.a并不支持module,需要继续转换成.framework静态库,并加入module能力。由此可见,现有的针对OC和Swift混编语言生成静态库时,存在工作量大以及无法一次性生成支持module的framework静态库的问题。
技术实现思路
本专利技术实施例提供一种静态库生成方法及装置,以解决现有技术中在生成OC和Swift混编语言对应的静态库时,存在的工作量大以及无法一次性生成支持module的framework静态库的问题。第一方面,本专利技术实施例提供一种静态库生成方法,包括:将多个开发工程集成至壳工程中;对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果;对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件;对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件;对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件;其中,每个开发工程在集成至所述壳工程时生成对应的工程目录,N、M为大于或者等于1的整数,所述第一开发工程对应于OC语言,所述第二开发工程对应于Swift语言或者OC/Swift混编语言。第二方面,本专利技术实施例提供一种静态库生成装置,包括:集成模块,用于将多个开发工程集成至壳工程中;第一获取模块,用于对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果;创建模块,用于对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件;第二获取模块,用于对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件;第三获取模块,用于对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件;其中,每个开发工程在集成至所述壳工程时生成对应的工程目录,N、M为大于或者等于1的整数,所述第一开发工程对应于OC语言,所述第二开发工程对应于Swift语言或者OC/Swift混编语言。第三方面,本专利技术实施例提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的静态库生成方法的步骤。第四方面,本专利技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述的静态库生成方法的步骤。本专利技术实施例的技术方案,通过创建壳工程,将多个开发工程集成于壳工程中,对集成多个开发工程的壳工程并行执行终端类和模拟器类编译,批量生成每个开发工程对应的两个编译结果,针对每个开发工程创建包括对应的经重命名后的目标.a库文件的framework目录,并针对第一开发工程并行获取第一数据文件写入framework目录生成支持module的第一静态库文件,针对第二开发工程并行获取第二数据文件写入framework目录生成支持module的第二静态库文件,可以生成支持module的静态库,且通过并行处理,可以批量生成静态库,提升静态库生成效率。附图说明图1表示本专利技术实施例静态库生成方法示意图;图2表示本专利技术实施例静态库生成方法一具体实施流程图;图3表示本专利技术实施例静态库生成装置示意图;图4表示本专利技术实施例电子设备示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本专利技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。在本专利技术的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本专利技术实施例的实施过程构成任何限定。在对本专利技术实施例提供的静态库生成方法进行介绍之前,首先对本专利技术涉及到的名词以及相关技术进行介绍。OC/Swift混编指的是应用程序的代码同时含有OC代码和Swift代码,或在应用程序中至少有一个开发工程中同时含有OC代码和Swift代码,或者应用程序的多个开发工程中至少有一个纯OC开发工程和一个纯swift开发工程。module是一种预编译技术,当一个模块被导入时,编译器在处理时会生成一个新的子进程,通过这个子进程来编译这个module(这样就不会产生命名空间冲突等干本文档来自技高网
...

【技术保护点】
1.一种静态库生成方法,其特征在于,包括:/n将多个开发工程集成至壳工程中;/n对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果;/n对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件;/n对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件;/n对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件;/n其中,每个开发工程在集成至所述壳工程时生成对应的工程目录,N、M为大于或者等于1的整数,所述第一开发工程对应于OC语言,所述第二开发工程对应于Swift语言或者OC/Swift混编语言。/n

【技术特征摘要】
1.一种静态库生成方法,其特征在于,包括:
将多个开发工程集成至壳工程中;
对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果;
对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件;
对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件;
对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件;
其中,每个开发工程在集成至所述壳工程时生成对应的工程目录,N、M为大于或者等于1的整数,所述第一开发工程对应于OC语言,所述第二开发工程对应于Swift语言或者OC/Swift混编语言。


2.根据权利要求1所述的静态库生成方法,其特征在于,所述对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果,包括:
对所述壳工程中的每个所述开发工程,并行执行终端类编译和模拟器类编译,获取每个所述开发工程对应的终端编译结果和模拟器编译结果;
其中,多个所述开发工程并行执行编译操作。


3.根据权利要求1所述的静态库生成方法,其特征在于,所述对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,包括:
对多个所述开发工程并行创建对应的所述framework目录;
对多个所述开发工程,并行将对应的所述目标.a库文件进行重命名后写入对应的所述framework目录;
其中,针对每个所述开发工程,在两个编译结果中分别提取.a库文件并合并生成所述目标.a库文件。


4.根据权利要求1所述的静态库生成方法,其特征在于,所述framework目录包括Modules子目录、Headers子目录以及Resource子目录;
所述对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件,包括:
对N个所述第一开发工程并行获取包括modulemap文件、umbrella.h文件、头文件以及资源文件的所述第一数据文件;
针对每个所述第一开发工程,将对应的所述modulemap文件重命名后写入Modules子目录、所述umbrella.h文件和所述头文件写入Headers子目录、所述资源文件写入Resource子目录,生成所述第一静态库文件;
其中,N个所述第一开发工程并行生成所述第一静态库文件。


5.根据权利要求4所述的静态库生成方法,其特征在于,所述对N个所述第一开发工程并行获取包括modulemap文件、umbrella.h文件、头文件以及资源文件的所述第一数据文件,包括:
针对每个所述第一开发工程,在当前第一开发工程对应的所述工程目录中获取所述modulemap文件和所述umbrella.h文件;
在当前第一开发工程对应的源码文件中获取所述资源文件,并根据所述umbrella.h文件在所述源码文件中获取所述头文件;
其中,所述工程目录与所述源码文件相对应,N个所述第一开发工程并行获取所述第一数据文件。


6.根据权利要求1所述的静态库生成方法,其特征在于,所述framework目录包括Modules子目录、Headers子目录以及Resource子目录;
所述对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件,包括:
对M个所述第二开发工程并行获取包括modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件...

【专利技术属性】
技术研发人员:曾庆隆彭飞邓竹立
申请(专利权)人:五八同城信息技术有限公司
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1