CN112596734B - 静态库生成方法及装置 - Google Patents

静态库生成方法及装置 Download PDF

Info

Publication number
CN112596734B
CN112596734B CN202011483606.7A CN202011483606A CN112596734B CN 112596734 B CN112596734 B CN 112596734B CN 202011483606 A CN202011483606 A CN 202011483606A CN 112596734 B CN112596734 B CN 112596734B
Authority
CN
China
Prior art keywords
file
files
development
project
subdirectory
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.)
Active
Application number
CN202011483606.7A
Other languages
English (en)
Other versions
CN112596734A (zh
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.)
58tongcheng Information Technology Co ltd
Original Assignee
58tongcheng Information Technology 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 58tongcheng Information Technology Co ltd filed Critical 58tongcheng Information Technology Co ltd
Priority to CN202011483606.7A priority Critical patent/CN112596734B/zh
Publication of CN112596734A publication Critical patent/CN112596734A/zh
Application granted granted Critical
Publication of CN112596734B publication Critical patent/CN112596734B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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)
  • Stored Programmes (AREA)

Abstract

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

Description

静态库生成方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种静态库生成方法及装置。
背景技术
目前越来越多的应用程序采用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(这样就不会产生命名空间冲突等干扰),然后module的编译结果会被持久化到这个模块的二进制缓存中,那么下次引用编译的时候就会非常快。modules由头文件映射而成,所以当这些头文件改动时,module还会自动重新编译刷新缓存,不需要人为主动干预。
下面对本发明实施例提供的静态库生成方法进行介绍,参见图1所示,包括如下步骤:
步骤101、将多个开发工程集成至壳工程中。
在生成静态库之前,首先分析所有开发工程,以确定需要生成静态库文件的开发工程,获取每一需要生成静态库文件的开发工程的源码和库,将每一需要生成静态库文件的开发工程的源码和库生成一个源码文件。
在确定需要生成静态库文件的多个开发工程之后,可以创建壳工程,这里的壳工程实际为一个空工程,然后将所确定的多个开发工程集成至创建的壳工程中。其中,每个开发工程在集成至壳工程时可以生成对应的工程目录,工程目录与源码文件对应,可以包括相应的信息。且在将多个开发工程集成于壳工程时,还可以针对壳工程生成壳工程目录,以便于获知壳工程中所包含的开发工程。
步骤102、对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果。
对集成多个开发工程的壳工程并行执行终端类和模拟器类编译,以实现对壳工程中的多个开发工程并行执行终端类和模拟器类编译,获取每个开发工程对应的两个编译结果。其中,本实施例中的终端类编译可以为对设定终端中运行的源码文件执行编译操作,模拟器类编译可以为对在模拟器中运行的源码文件执行编译操作。在针对壳工程中的每个开发工程获取对应的两个编译结果之后,可以执行步骤103。
步骤103、对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件。
在针对壳工程中的每个开发工程获取对应的两个编译结果之后,可以针对多个开发工程并行创建多个framework目录,其中每一个开发工程对应于一framework目录,且针对每个framework目录,可以包括该开发工程对应的经重命名后的目标.a库文件。需要说明的是,开发工程所对应的目标.a库文件对应于.a后缀,因此针对每个开发工程而言,可以将对应的目标.a库文件进行重命名处理之后,添加至对应的framework目录中。其中,每个开发工程所对应的目标.a库文件由两个编译结果确定,具体为每个目标.a库文件包括对应的两个编译结果中分别对应的.a库文件。
在针对每个开发工程生成包括对应的经重命名后的目标.a库文件的framework目录之后,可以针对多个开发工程进行区分,用以确定开发工程属于第一开发工程还是第二开发工程。其中,第一开发工程对应于OC语言,第二开发工程对应于Swift语言或者OC/Swift混编语言,若开发工程属于第一开发工程,则执行步骤104,若开发工程属于第二开发工程,则执行步骤105。
步骤104、对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件。
在多个开发工程中确定出N个第一开发工程之后,可以针对N个第一开发工程并行处理,根据N个第一开发工程分别对应的工程目录,获取每个第一开发工程所对应的第一数据文件,其中第一数据文件支持module,在并行获取支持module的第一数据文件之后,可以将第一数据文件并行写入对应的framework目录以生成N个支持module的第一静态库文件。其中,N为大于或者等于1的整数。
步骤105、对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件。
在多个开发工程中确定出M个第二开发工程之后,可以针对M个第二开发工程并行处理,根据M个第二开发工程分别对应的两个编译结果,获取每个第二开发工程所对应的第二数据文件,其中第二数据文件支持module,在并行获取支持module的第二数据文件之后,将第二数据文件并行写入对应的framework目录以生成M个支持module的第二静态库文件。其中,M为大于或者等于1的整数,且N与M之和即为壳工程中所集成的开发工程的数目。
本发明实施例中,通过创建壳工程,将多个开发工程集成于壳工程中,对集成多个开发工程的壳工程并行执行终端类和模拟器类编译,批量生成每个开发工程对应的两个编译结果,针对每个开发工程创建包括对应的经重命名后的目标.a库文件的framework目录,并针对第一开发工程并行获取第一数据文件写入framework目录生成支持module的第一静态库文件,针对第二开发工程并行获取第二数据文件写入framework目录生成支持module的第二静态库文件,可以生成支持module的静态库,且通过并行处理,可以批量生成静态库,提升静态库生成效率。
在本发明一可选实施例中,所述对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果,包括:
对所述壳工程中的每个所述开发工程,并行执行终端类编译和模拟器类编译,获取每个所述开发工程对应的终端编译结果和模拟器编译结果;
其中,多个所述开发工程并行执行编译操作。
在对集成多个开发工程的壳工程进行编译时,可以针对每个开发工程并行执行终端类编译和模拟器类编译,且多个开发工程并行执行编译操作,以获取每个开发工程对应的终端编译结果和模拟器编译结果。通过并行执行终端类和模拟器类编译,提高了编译效率,避免了依次执行终端类和模拟器类编译,导致的效率低下的问题,通过针对多个开发工程并行编译,避免了依次对每一个开发工程依次执行终端类和模拟器类编译,导致编译时间过长,编译速度缓慢以及效率低的弊端。
本发明实施例中,通过对集成多个开发工程的壳工程并行执行终端类编译和模拟器类编译,可以提高编译效率,避免了依次执行终端类和模拟器类编译,导致的效率低下的问题,且通过针对多个开发工程并行编译,避免了依次对每一个开发工程依次执行终端类和模拟器类编译,导致编译时间过长,编译速度缓慢以及效率低的弊端。
在本发明一可选实施例中,所述对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,包括:
对多个所述开发工程并行创建对应的所述framework目录;
对多个所述开发工程,并行将对应的所述目标.a库文件进行重命名后写入对应的所述framework目录;
其中,针对每个所述开发工程,在两个编译结果中分别提取.a库文件并合并生成所述目标.a库文件。
针对壳工程中的多个开发工程,在并行创建包括对应的经重命名后的目标.a库文件的framework目录时,可以首先针对多个开发工程并行创建多个framework目录,然后针对每个开发工程,将对应的目标.a库文件进行重命名处理后写入对应的framework目录。其中,多个开发工程并行执行目标.a库文件的重命名操作以及将重命名后的目标.a库文件写入对应的framework目录中的操作。
其中,针对每个开发工程,其对应的目标.a库文件根据两个编译结果确定,每个编译结果中包括.a库文件,还包括其他文件,可以针对两个编译结果,分别提取对应的.a库文件,并将所提取的.a库文件进行合并处理生成目标.a库文件。
由于目标.a库文件对应于.a后缀,因此针对每个开发工程而言,可以将对应的目标.a库文件进行重命名处理,然后添加至对应的framework目录中。在对目标.a库文件进行重命名时,实际为去掉.a后缀,改名为podName(当前开发工程的名称),然后写入对应的framework目录中。
本发明实施例中,通过并行创建多个开发工程对应的多个framework目录,并针对所创建的framework目录并行写入重命名后的目标.a库文件,可以快速生成针对多个开发工程的且包括特定内容的多个framework目录。
在本发明一可选实施例中,所述framework目录包括Modules子目录、Headers子目录以及Resource子目录;
所述对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件,包括:
对N个所述第一开发工程并行获取包括modulemap文件、umbrella.h文件、头文件以及资源文件的所述第一数据文件;
针对每个所述第一开发工程,将对应的所述modulemap文件重命名后写入Modules子目录、所述umbrella.h文件和所述头文件写入Headers子目录、所述资源文件写入Resource子目录,生成所述第一静态库文件;
其中,N个所述第一开发工程并行生成所述第一静态库文件。
在针对每个开发工程创建framework目录时,还可以创建Modules子目录、Headers子目录以及Resource子目录,在并行生成N个第一开发工程分别对应的第一静态库文件时,可以首先针对N个第一开发工程,并行获取包括modulemap文件、umbrella.h文件、头文件以及资源文件的第一数据文件,然后针对N个第一开发工程,根据N个第一数据文件,并行执行生成第一静态库文件的操作。
其中,在针对每个第一开发工程生成第一静态库文件时,可以将当前第一开发工程对应的modulemap文件重命名后写入Modules子目录,将当前第一开发工程对应的umbrella.h文件写入Headers子目录,并将当前第一开发工程对应的头文件写入Headers子目录,将当前第一开发工程对应的资源文件写入Resource子目录。
第一数据文件中所包含的modulemap文件的名称与当前第一开发工程的名称相对应,在进行重命名操作时,将与当前第一开发工程的名称相对应的modulemap文件改名为module.modulemap,即将podName.modulemap改名为module.modulemap。umbrella.h文件的名称与当前第一开发工程的名称相对应,将当前第一开发工程对应的umbrella.h文件写入Headers子目录时,实际为将podName-umbrella.h文件写入Headers子目录。需要说明的是,umbrella.h文件包括头文件名列表,modulemap文件中包括umbrella.h文件的路径信息,还可以包括module名称。
可选的,所述对N个所述第一开发工程并行获取包括modulemap文件、umbrella.h文件、头文件以及资源文件的所述第一数据文件,包括:
针对每个所述第一开发工程,在当前第一开发工程对应的所述工程目录中获取所述modulemap文件和所述umbrella.h文件;
在当前第一开发工程对应的源码文件中获取所述资源文件,并根据所述umbrella.h文件在所述源码文件中获取所述头文件;
其中,所述工程目录与所述源码文件相对应,N个所述第一开发工程并行获取所述第一数据文件。
在获取第一数据文件时,可以并行获取N个第一开发工程对应的N个第一数据文件。针对每个第一开发工程而言,可以在当前第一开发工程对应的工程目录中获取modulemap文件和umbrella.h文件,然后在当前第一开发工程对应的源码文件中获取资源文件,由于umbrella.h文件包括头文件名列表,可以根据umbrella.h文件在源码文件中获取头文件。通过对N个第一开发工程并行获取N个第一数据文件,可以保证并行生成N个第一静态库文件。其中,这里的工程目录与源码文件相对应,为将开发工程集成至壳工程中时所生成的目录,源码文件可以存储于工程目录下。
本发明实施例中,通过对N个第一开发工程并行获取第一数据文件,将N个第一数据文件中的内容并行写入对应的子目录中,并行生成N个第一静态库文件,可以实现快速批量生成支持module的静态库文件,提升静态库文件生成效率。
在本发明一可选实施例中,所述framework目录包括Modules子目录、Headers子目录以及Resource子目录;
所述对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件,包括:
对M个所述第二开发工程并行获取包括modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件、头文件以及资源文件的所述第二数据文件;
针对每个所述第二开发工程,将对应的所述modulemap文件修改并重命名后写入所述Modules子目录、所述swiftmodule文件写入所述Modules子目录、所述umbrella.h文件修改后写入所述Headers子目录、所述头文件和所述Swift.h文件写入所述Headers子目录、所述资源文件写入所述Resource子目录,生成所述第二静态库文件;
其中,M个所述第二开发工程并行生成所述第二静态库文件。
在针对每个开发工程创建framework目录时,还可以创建Modules子目录、Headers子目录以及Resource子目录,在并行生成M个第二开发工程分别对应的第二静态库文件时,可以首先针对M个第二开发工程,并行获取包括modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件、头文件以及资源文件的第二数据文件,然后针对M个第二开发工程,根据M个第二数据文件,并行执行生成第二静态库文件的操作。
需要说明的是,umbrella.h文件包括头文件名列表,modulemap文件中包括umbrella.h文件的路径信息,还可以包括module名称,Swift.h文件作为中间桥梁,在开发工程内部使得OC文件去调用Swift文件,swiftmodule文件作为中间桥梁,在开发工程外部使得Swift文件去调用Swift文件、OC文件去调用Swift文件。这里的工程内部指的是同一个开发工程,工程外部指的是不同的开发工程。如,Swift.h文件作为中间桥梁,可以使得对应于OC/Swift混编语言的第二开发工程中OC文件调用Swift文件,swiftmodule文件作为中间桥梁,可以使得第一开发工程调用第二开发工程中的Swift文件,或者使得第二开发工程调用另一第二开发工程中的Swift文件。
其中,在针对每个第二开发工程生成第二静态库文件时,可以将当前第二开发工程对应的modulemap文件进行修改并重命名后写入Modules子目录,将当前第二开发工程对应的swiftmodule文件写入Modules子目录,将当前第二开发工程对应的umbrella.h文件进行修改后写入Headers子目录,并将当前第二开发工程对应的头文件以及Swift.h文件写入Headers子目录,将当前第二开发工程对应的资源文件写入Resource子目录。
可选的,所述对M个所述第二开发工程并行获取包括modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件、头文件以及资源文件的所述第二数据文件,包括:
针对每个所述第二开发工程,在当前第二开发工程对应的任意一个编译结果中获取所述modulemap文件、所述umbrella.h文件和所述Swift.h文件,并在当前第二开发工程对应的两个编译结果中获取所述swiftmodule文件;
在当前第二开发工程对应的源码文件中获取所述资源文件,并根据所述umbrella.h文件在所述源码文件中获取所述头文件;
其中,M个所述第二开发工程并行获取所述第二数据文件。
在获取第二数据文件时,可以并行获取M个第二开发工程对应的M个第二数据文件。针对每个第二开发工程而言,可以在当前第二开发工程对应的任意一个编译结果中获取modulemap文件、umbrella.h文件以及Swift.h文件,并在当前第二开发工程对应的两个编译结果中获取swiftmodule文件。需要说明的是,针对每一个第二开发工程而言,其对应的两个编译结果中modulemap文件、umbrella.h文件以及Swift.h文件均相同,且两个编译结果存储于对应的编译目录下,基于编译结果获取文件可以理解为基于编译目录获取modulemap文件、umbrella.h文件以及Swift.h文件。两个编译结果中的swiftmodule文件不同,在获取写入Modules子目录中的swiftmodule文件时,可以将两个编译结果中分别对应的swiftmodule文件进行合并,然后将合并后的swiftmodule文件写入Modules子目录中。
然后在当前第二开发工程对应的源码文件中获取资源文件,其中,由于umbrella.h文件包括头文件名列表,可以根据umbrella.h文件在源码文件中获取头文件。通过对M个第二开发工程并行获取M个第二数据文件,可以保证并行生成M个第二静态库文件。
需要说明的是,第二开发工程也对应有工程目录,但与第一开发工程的工程目录中存储的内容不同,针对第二开发工程而言,需要基于编译结果获取modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件。
可选的,所述针对每个所述第二开发工程,将对应的所述modulemap文件修改并重命名后写入所述Modules子目录、所述swiftmodule文件写入所述Modules子目录、所述umbrella.h文件修改后写入所述Headers子目录、所述头文件和所述Swift.h文件写入所述Headers子目录、所述资源文件写入所述Resource子目录,生成所述第二静态库文件,包括:
将当前第二开发工程的所述modulemap文件中所述Swift.h文件的引用地址进行修改、所述modulemap文件中module名称增加framework标识,并对更新后的所述modulemap文件重命名,将重命名后的所述modulemap文件和所述swiftmodule文件写入所述Modules子目录;
将当前第二开发工程的所述umbrella.h文件进行桥文件引用去除修改,并将修改后的所述umbrella.h文件、所述头文件和所述Swift.h文件写入所述Headers子目录;
将当前第二开发工程的所述资源文件写入所述Resource子目录。
在针对当前第二开发工程生成第二静态库文件时,可以对当前第二开发工程对应的modulemap文件进行修改并重命名后写入Modules子目录,在对modulemap文件进行修改时,可以将modulemap文件中Swift.h文件的引用地址进行修改,并将modulemap文件中module名称增加framework标识,然后对modulemap文件进行重命名,将重命名后的modulemap文件写入Modules子目录。具体可以为:从编译目录中获取podName.modulemap,修改对podName-Swift.h文件的引用地址,并在module名称前添加framework标识,然后改名为module.modulemap写入Modules子目录。
在针对当前第二开发工程生成第二静态库文件时,还可以从两个编译目录中获取swiftmodule文件并写入Modules子目录。在针对当前第二开发工程生成第二静态库文件时,还可以将当前第二开发工程的umbrella.h文件进行桥文件引用去除修改,并将修改后的umbrella.h文件写入Headers子目录。该过程具体可以为:从编译目录中获取podName-umbrella.h,然后将podName-umbrella.h中的桥文件引用去除,写入Headers子目录。
在针对当前第二开发工程生成第二静态库文件时,还可以将当前第二开发工程的头文件和Swift.h文件写入Headers子目录,将当前第二开发工程的资源文件写入Resource子目录。
在本发明实施例中,通过对M个第二开发工程并行获取第二数据文件,将M个第二数据文件中的内容并行写入对应的子目录中,并行生成M个第二静态库文件,可以实现快速批量生成支持module的静态库文件,提升静态库文件生成效率。
下面通过一具体实例对本发明实施例的静态库生成方法进行介绍,如图2所示,包括:
步骤201、创建壳工程,在壳工程中集成多个开发工程。
步骤202、对集成多个开发工程的壳工程执行终端类和模拟器类编译,获取每个开发工程对应的终端类编译结果和模拟器类编译编译结果。
步骤203、针对多个开发工程,并行将终端类编译结果中的.a库文件和模拟器类编译编译结果中的.a库文件合并,获取多个开发工程分别对应的目标.a库文件。
步骤204、对多个开发工程并行创建framework目录,将每个开发工程的目标.a库文件重命名后写入对应的framework目录。
步骤205、检测开发工程是否为第一开发工程,若是执行步骤206否则执行步骤209。
步骤206、针对N个第一开发工程,并行在各第一开发工程对应的工程目录中获取podName.modulemap,并改名为module.modulemap,写入对应的framework目录的Modules子目录。
步骤207、针对N个第一开发工程,并行在各第一开发工程对应的工程目录中获取podName-umbrella.h,写入对应的framework目录的Headers子目录。
步骤208、针对N个第一开发工程,并行在各源码文件中获取资源文件以及头文件,将资源文件写入对应的framework目录的Resource子目录,将头文件写入对应的framework目录的Headers子目录,生成N个第一静态库文件。
步骤209、针对M个第二开发工程,并行在各第二开发工程对应的编译目录中获取podName.modulemap,修改内容并改名为module.modulemap后写入对应的framework目录的Modules子目录。
步骤210、针对M个第二开发工程,并行在各第二开发工程对应的两个编译目录中获取podName.swiftmodule并合并,写入对应的framework目录的Modules子目录。
步骤211、针对M个第二开发工程,并行在各第二开发工程对应的编译目录中获取podName-Swift.h和podName-umbrella.h,将podName-umbrella.h中的桥文件引用去除,将podName-Swift.h以及修改后的podName-umbrella.h写入对应的framework目录的Headers子目录。
步骤212、针对M个第二开发工程,并行在各源码文件中获取资源文件以及头文件,将资源文件写入对应的framework目录的Resource子目录,将头文件写入对应的framework目录的Headers子目录,生成M个第二静态库文件。
上述实施过程,可以并行生成M个支持Module的第二静态库文件以及N个支持Module的第一静态库文件,实现快速批量生成支持Module的静态库文件,提升静态库文件生成效率。
以上为本发明实施例提供的静态库生成方法的整体实施流程,通过创建壳工程,将多个开发工程集成于壳工程中,对集成多个开发工程的壳工程并行执行终端类和模拟器类编译,批量生成每个开发工程对应的两个编译结果,针对每个开发工程创建包括对应的经重命名后的目标.a库文件的framework目录,并针对第一开发工程并行获取第一数据文件写入framework目录生成支持module的第一静态库文件,针对第二开发工程并行获取第二数据文件写入framework目录生成支持module的第二静态库文件,可以生成支持module的静态库,且通过并行处理,可以批量生成静态库,提升静态库生成效率。
本发明实施例提供一种静态库生成装置,如图3所示,包括:
集成模块301,用于将多个开发工程集成至壳工程中;
第一获取模块302,用于对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果;
创建模块303,用于对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件;
第二获取模块304,用于对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件;
第三获取模块305,用于对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件;
其中,每个开发工程在集成至所述壳工程时生成对应的工程目录,N、M为大于或者等于1的整数,所述第一开发工程对应于OC语言,所述第二开发工程对应于Swift语言或者OC/Swift混编语言。
可选的,所述第一获取模块进一步用于:
对所述壳工程中的每个所述开发工程,并行执行终端类编译和模拟器类编译,获取每个所述开发工程对应的终端编译结果和模拟器编译结果;
其中,多个所述开发工程并行执行编译操作。
可选的,所述创建模块进一步用于:
对多个所述开发工程并行创建对应的所述framework目录;
对多个所述开发工程,并行将对应的所述目标.a库文件进行重命名后写入对应的所述framework目录;
其中,针对每个所述开发工程,在两个编译结果中分别提取.a库文件并合并生成所述目标.a库文件。
可选的,所述framework目录包括Modules子目录、Headers子目录以及Resource子目录;所述第二获取模块包括:
第一获取子模块,用于对N个所述第一开发工程并行获取包括modulemap文件、umbrella.h文件、头文件以及资源文件的所述第一数据文件;
第一处理子模块,用于针对每个所述第一开发工程,将对应的所述modulemap文件重命名后写入Modules子目录、所述umbrella.h文件和所述头文件写入Headers子目录、所述资源文件写入Resource子目录,生成所述第一静态库文件;
其中,N个所述第一开发工程并行生成所述第一静态库文件。
可选的,所述第一获取子模块包括:
第一获取单元,用于针对每个所述第一开发工程,在当前第一开发工程对应的所述工程目录中获取所述modulemap文件和所述umbrella.h文件;
第二获取单元,用于在当前第一开发工程对应的源码文件中获取所述资源文件,并根据所述umbrella.h文件在所述源码文件中获取所述头文件;
其中,所述工程目录与所述源码文件相对应,N个所述第一开发工程并行获取所述第一数据文件。
可选的,所述framework目录包括Modules子目录、Headers子目录以及Resource子目录;所述第三获取模块包括:
第二获取子模块,用于对M个所述第二开发工程并行获取包括modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件、头文件以及资源文件的所述第二数据文件;
第二处理子模块,用于针对每个所述第二开发工程,将对应的所述modulemap文件修改并重命名后写入所述Modules子目录、所述swiftmodule文件写入所述Modules子目录、所述umbrella.h文件修改后写入所述Headers子目录、所述头文件和所述Swift.h文件写入所述Headers子目录、所述资源文件写入所述Resource子目录,生成所述第二静态库文件;
其中,M个所述第二开发工程并行生成所述第二静态库文件。
可选的,所述第二获取子模块包括:
第三获取单元,用于针对每个所述第二开发工程,在当前第二开发工程对应的任意一个编译结果中获取所述modulemap文件、所述umbrella.h文件和所述Swift.h文件,并在当前第二开发工程对应的两个编译结果中获取所述swiftmodule文件;
第四获取单元,用于在当前第二开发工程对应的源码文件中获取所述资源文件,并根据所述umbrella.h文件在所述源码文件中获取所述头文件;
其中,M个所述第二开发工程并行获取所述第二数据文件。
可选的,所述第二处理子模块包括:
第一处理单元,用于将当前第二开发工程的所述modulemap文件中所述Swift.h文件的引用地址进行修改、所述modulemap文件中module名称增加framework标识,并对更新后的所述modulemap文件重命名,将重命名后的所述modulemap文件和所述swiftmodule文件写入所述Modules子目录;
第二处理单元,用于将当前第二开发工程的所述umbrella.h文件进行桥文件引用去除修改,并将修改后的所述umbrella.h文件、所述头文件和所述Swift.h文件写入所述Headers子目录;
第三处理单元,用于将当前第二开发工程的所述资源文件写入所述Resource子目录。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另一方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述静态库生成方法中的步骤。
举例如下,图4示出了一种电子设备的实体结构示意图。
如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,执行以下步骤:将多个开发工程集成至壳工程中;对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果;对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件;对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件;对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件;其中,每个开发工程在集成至所述壳工程时生成对应的工程目录,N、M为大于或者等于1的整数,所述第一开发工程对应于OC语言,所述第二开发工程对应于Swift语言或者OC/Swift混编语言。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例提供的静态库生成方法中的步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种静态库生成方法,其特征在于,包括:
将多个开发工程集成至壳工程中;
对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果;
对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件,所述framework目录包括Modules子目录、Headers子目录以及Resource子目录;
对多个所述开发工程中的N个第一开发工程,针对每个所述第一开发工程,在当前第一开发工程对应的所述工程目录中获取modulemap文件和umbrella.h文件;在当前第一开发工程对应的源码文件中获取资源文件,并根据所述umbrella.h文件在所述源码文件中获取头文件;将对应的所述modulemap文件重命名后写入所述Modules子目录、所述umbrella.h文件和所述头文件写入所述Headers子目录、所述资源文件写入所述Resource子目录,生成第一静态库文件,其中,N个所述第一开发工程并行获取所述modulemap文件、所述umbrella.h文件、所述头文件以及所述资源文件;
对多个所述开发工程中的M个第二开发工程,并行获取包括modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件、头文件以及资源文件的第二数据文件;针对每个所述第二开发工程,将对应的所述modulemap文件修改并重命名后写入所述Modules子目录、所述swiftmodule文件写入所述Modules子目录、所述umbrella.h文件修改后写入所述Headers子目录、所述头文件和所述Swift.h文件写入所述Headers子目录、所述资源文件写入所述Resource子目录,生成第二静态库文件;
其中,每个开发工程在集成至所述壳工程时生成对应的工程目录,所述工程目录与所述源码文件相对应,N、M为大于或者等于1的整数,所述第一开发工程对应于OC语言,所述第二开发工程对应于Swift语言或者OC/Swift混编语言,N个所述第一开发工程并行生成所述第一静态库文件,M个所述第二开发工程并行生成所述第二静态库文件。
2.根据权利要求1所述的静态库生成方法,其特征在于,所述对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果,包括:
对所述壳工程中的每个所述开发工程,并行执行终端类编译和模拟器类编译,获取每个所述开发工程对应的终端编译结果和模拟器编译结果;
其中,多个所述开发工程并行执行编译操作。
3.根据权利要求1所述的静态库生成方法,其特征在于,所述对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,包括:
对多个所述开发工程并行创建对应的所述framework目录;
对多个所述开发工程,并行将对应的所述目标.a库文件进行重命名后写入对应的所述framework目录;
其中,针对每个所述开发工程,在两个编译结果中分别提取.a库文件并合并生成所述目标.a库文件。
4.根据权利要求1所述的静态库生成方法,其特征在于,所述对M个所述第二开发工程并行获取包括modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件、头文件以及资源文件的所述第二数据文件,包括:
针对每个所述第二开发工程,在当前第二开发工程对应的任意一个编译结果中获取所述modulemap文件、所述umbrella.h文件和所述Swift.h文件,并在当前第二开发工程对应的两个编译结果中获取所述swiftmodule文件;
在当前第二开发工程对应的源码文件中获取所述资源文件,并根据所述umbrella.h文件在所述源码文件中获取所述头文件;
其中,M个所述第二开发工程并行获取所述第二数据文件。
5.根据权利要求1所述的静态库生成方法,其特征在于,所述针对每个所述第二开发工程,将对应的所述modulemap文件修改并重命名后写入所述Modules子目录、所述swiftmodule文件写入所述Modules子目录、所述umbrella.h文件修改后写入所述Headers子目录、所述头文件和所述Swift.h文件写入所述Headers子目录、所述资源文件写入所述Resource子目录,生成所述第二静态库文件,包括:
将当前第二开发工程的所述modulemap文件中所述Swift.h文件的引用地址进行修改、所述modulemap文件中module名称增加framework标识,并对更新后的所述modulemap文件重命名,将重命名后的所述modulemap文件和所述swiftmodule文件写入所述Modules子目录;
将当前第二开发工程的所述umbrella.h文件进行桥文件引用去除修改,并将修改后的所述umbrella.h文件、所述头文件和所述Swift.h文件写入所述Headers子目录;
将当前第二开发工程的所述资源文件写入所述Resource子目录。
6.一种静态库生成装置,其特征在于,包括:
集成模块,用于将多个开发工程集成至壳工程中;
第一获取模块,用于对所述壳工程并行执行终端类和模拟器类编译,获取每个所述开发工程对应的两个编译结果;
创建模块,用于对多个所述开发工程并行创建包括对应的经重命名后的目标.a库文件的framework目录,每个所述开发工程的目标.a库文件包括对应的两个编译结果中分别对应的.a库文件,所述framework目录包括Modules子目录、Headers子目录以及Resource子目录;
第二获取模块,用于对多个所述开发工程中的N个第一开发工程,根据N个所述第一开发工程分别对应的工程目录,并行获取N个第一数据文件并写入对应的framework目录生成支持module的N个第一静态库文件;
第三获取模块,用于对多个所述开发工程中的M个第二开发工程,根据M个所述第二开发工程分别对应的两个编译结果,并行获取M个第二数据文件并写入对应的framework目录生成支持module的M个第二静态库文件;
所述第二获取模块包括:
第一获取子模块,用于对N个所述第一开发工程并行获取包括modulemap文件、umbrella.h文件、头文件以及资源文件的所述第一数据文件;
第一处理子模块,用于针对每个所述第一开发工程,将对应的所述modulemap文件重命名后写入所述Modules子目录、所述umbrella.h文件和所述头文件写入所述Headers子目录、所述资源文件写入所述Resource子目录,生成所述第一静态库文件;
所述第三获取模块包括:
第二获取子模块,用于对M个所述第二开发工程并行获取包括modulemap文件、umbrella.h文件、swiftmodule文件、Swift.h文件、头文件以及资源文件的所述第二数据文件;
第二处理子模块,用于针对每个所述第二开发工程,将对应的所述modulemap文件修改并重命名后写入所述Modules子目录、所述swiftmodule文件写入所述Modules子目录、所述umbrella.h文件修改后写入所述Headers子目录、所述头文件和所述Swift.h文件写入所述Headers子目录、所述资源文件写入所述Resource子目录,生成所述第二静态库文件;
所述第一获取子模块包括:
第一获取单元,用于针对每个所述第一开发工程,在当前第一开发工程对应的所述工程目录中获取所述modulemap文件和所述umbrella.h文件;
第二获取单元,用于在当前第一开发工程对应的源码文件中获取所述资源文件,并根据所述umbrella.h文件在所述源码文件中获取所述头文件;
其中,每个开发工程在集成至所述壳工程时生成对应的工程目录,所述工程目录与所述源码文件相对应,N、M为大于或者等于1的整数,所述第一开发工程对应于OC语言,所述第二开发工程对应于Swift语言或者OC/Swift混编语言,N个所述第一开发工程并行生成所述第一静态库文件,M个所述第二开发工程并行生成所述第二静态库文件。
7.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至5中任一项所述的静态库生成方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的静态库生成方法的步骤。
CN202011483606.7A 2020-12-15 2020-12-15 静态库生成方法及装置 Active CN112596734B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011483606.7A CN112596734B (zh) 2020-12-15 2020-12-15 静态库生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011483606.7A CN112596734B (zh) 2020-12-15 2020-12-15 静态库生成方法及装置

Publications (2)

Publication Number Publication Date
CN112596734A CN112596734A (zh) 2021-04-02
CN112596734B true CN112596734B (zh) 2024-06-07

Family

ID=75196315

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011483606.7A Active CN112596734B (zh) 2020-12-15 2020-12-15 静态库生成方法及装置

Country Status (1)

Country Link
CN (1) CN112596734B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114840195B (zh) * 2022-06-29 2022-10-04 广州易方信息科技股份有限公司 一种针对iOS SDK静态库的私有化方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998056024A1 (en) * 1997-06-05 1998-12-10 Crossmar, Inc. Translation of messages to and from secure swift format
KR20090011974A (ko) * 2007-07-27 2009-02-02 (주)케이티에프테크놀로지스 컴파일 대상 파일 추출 방법
CN106775744A (zh) * 2016-12-28 2017-05-31 北京五八信息技术有限公司 一种生成静态库的方法和装置
CN108399318A (zh) * 2018-01-31 2018-08-14 北京顶象技术有限公司 可执行文件的生成方法、执行方法及电子设备
CN109144521A (zh) * 2018-09-28 2019-01-04 五八有限公司 生成静态库的方法、装置、计算机设备及可读存储介质
CN110147239A (zh) * 2019-05-22 2019-08-20 苏州仙峰网络科技股份有限公司 游戏安装包体的多重压缩的方法、设备及存储介质
CN110297768A (zh) * 2019-06-04 2019-10-01 平安科技(深圳)有限公司 真机SDK兼容模拟器debug的方法、装置、设备及存储介质
CN111061638A (zh) * 2019-12-16 2020-04-24 上海钧正网络科技有限公司 一种iOS系统调试的方法、装置及服务器
CN111142930A (zh) * 2019-12-30 2020-05-12 瑞庭网络技术(上海)有限公司 安装包文件打包方法、装置、终端设备及存储介质
CN111309327A (zh) * 2018-12-12 2020-06-19 厦门雅迅网络股份有限公司 应用程序的自动编译方法及计算机可读存储介质
CN111984264A (zh) * 2020-07-24 2020-11-24 五八有限公司 一种静态库的生成方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9258668B2 (en) * 2013-07-31 2016-02-09 Sap Se Mobile application framework extensibiilty
US10311227B2 (en) * 2014-09-30 2019-06-04 Apple Inc. Obfuscation of an address space layout randomization mapping in a data processing system
US10700794B2 (en) * 2017-01-23 2020-06-30 Digital Global Systems, Inc. Systems, methods, and devices for automatic signal detection based on power distribution by frequency over time within an electromagnetic spectrum
US10352717B2 (en) * 2017-02-28 2019-07-16 Google Llc Navigation application programming interface

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998056024A1 (en) * 1997-06-05 1998-12-10 Crossmar, Inc. Translation of messages to and from secure swift format
KR20090011974A (ko) * 2007-07-27 2009-02-02 (주)케이티에프테크놀로지스 컴파일 대상 파일 추출 방법
CN106775744A (zh) * 2016-12-28 2017-05-31 北京五八信息技术有限公司 一种生成静态库的方法和装置
CN108399318A (zh) * 2018-01-31 2018-08-14 北京顶象技术有限公司 可执行文件的生成方法、执行方法及电子设备
CN109144521A (zh) * 2018-09-28 2019-01-04 五八有限公司 生成静态库的方法、装置、计算机设备及可读存储介质
CN111309327A (zh) * 2018-12-12 2020-06-19 厦门雅迅网络股份有限公司 应用程序的自动编译方法及计算机可读存储介质
CN110147239A (zh) * 2019-05-22 2019-08-20 苏州仙峰网络科技股份有限公司 游戏安装包体的多重压缩的方法、设备及存储介质
CN110297768A (zh) * 2019-06-04 2019-10-01 平安科技(深圳)有限公司 真机SDK兼容模拟器debug的方法、装置、设备及存储介质
CN111061638A (zh) * 2019-12-16 2020-04-24 上海钧正网络科技有限公司 一种iOS系统调试的方法、装置及服务器
CN111142930A (zh) * 2019-12-30 2020-05-12 瑞庭网络技术(上海)有限公司 安装包文件打包方法、装置、终端设备及存储介质
CN111984264A (zh) * 2020-07-24 2020-11-24 五八有限公司 一种静态库的生成方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ARM Static Library Identification Framework;Qing yin等;《JOURNAL OF SOFTWARE》;20101031;第5卷(第10期);第1099-1106页 *
基于iOS平台的旅游地图服务系统设计与实现;康清宇;《基于iOS平台的旅游地图服务系统设计与实现》;20190615(第06期);第I138-271页 *

Also Published As

Publication number Publication date
CN112596734A (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
AU2013290313B2 (en) Method and system for automated improvement of parallelism in program compilation
US6678885B2 (en) System and method for common code generation
WO2015176492A1 (en) A system and method thereof for creating dynamically attachable and detachable binary files
CN110968325A (zh) 一种小程序转换方法及装置
CN109032631B (zh) 应用程序补丁包获取方法、装置、计算机设备及存储介质
CN109739508B (zh) 源代码编译方法、装置、系统及存储介质
CN112379917A (zh) 浏览器兼容性提升方法、装置、设备及存储介质
CN112612502A (zh) 补丁生成方法、装置、设备及存储介质
CN112328319A (zh) 一种支持ram文件系统的星载app动态加载方法
CN112596734B (zh) 静态库生成方法及装置
CN114115964B (zh) 一种用于Unity的热更新方法、装置、计算设备及计算机可读存储介质
CN112416612A (zh) 服务调用方法、装置、计算机设备和可读存储介质
CN109558121B (zh) 接口驱动程序的开发方法、装置、设备及存储介质
CN112328241B (zh) 一种应用程序开发中创建Android库模块依赖关系的方法及装置
CN113360156B (zh) 一种ios编译方法及相关设备
CN110851117B (zh) 一键导入静态库到项目的方法、存储介质
CN114840195B (zh) 一种针对iOS SDK静态库的私有化方法
CN114443052B (zh) 一种il指令运行时的动态特例化方法和装置
CN115576560A (zh) 一种动态类加载器的热重载方法、装置、设备和介质
CN114579135B (zh) 一种安装包生成方法及装置
CN113495727B (zh) 业务组件开发方法、装置、电子设备及介质
CN117251234B (zh) 基于补丁的函数调用方法及装置
CN112988260B (zh) 应用冷启动优化方法、装置、计算机设备及存储介质
CN114860253A (zh) 一种编译方法、装置、计算机设备以及可读存储介质
CN116400924A (zh) pod组件中新增资源文件的方法及装置、电子设备

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
GR01 Patent grant