【技术实现步骤摘要】
静态库生成方法及装置
本专利技术涉及数据处理
,尤其涉及一种静态库生成方法及装置。
技术介绍
目前越来越多的应用程序采用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混编语言生成静态库时,存在工作量大以及无法一次性 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。