CN107544813B - 一种静态库配置的切换方法和系统 - Google Patents

一种静态库配置的切换方法和系统 Download PDF

Info

Publication number
CN107544813B
CN107544813B CN201710834782.2A CN201710834782A CN107544813B CN 107544813 B CN107544813 B CN 107544813B CN 201710834782 A CN201710834782 A CN 201710834782A CN 107544813 B CN107544813 B CN 107544813B
Authority
CN
China
Prior art keywords
configuration
static
static library
environment
configuration environment
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
CN201710834782.2A
Other languages
English (en)
Other versions
CN107544813A (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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710834782.2A priority Critical patent/CN107544813B/zh
Publication of CN107544813A publication Critical patent/CN107544813A/zh
Application granted granted Critical
Publication of CN107544813B publication Critical patent/CN107544813B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供一种静态库配置的切换方法和系统,所述方法包括:S1、根据一个私有仓库中的对应不同工程配置环境的多个配置环境静态库,编写静态库配置切换脚本;S2、在工程的配置文件中,添加所述静态库配置切换脚本的路径,以使得所述工程在编译之前执行所述静态库配置切换脚本,并根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库;S3、在所述工程编译后,根据更新后的所述对应的配置环境静态库,更新其他多个配置环境静态库。本发明提供的一种静态库配置的切换方法和系统,工程运行时,能够根据工程配置环境自动切换静态库配置,方便简单;且配置环境静态库在同一个私有仓库中,减小了维护人员的工作复杂度。

Description

一种静态库配置的切换方法和系统
技术领域
本发明涉及计算机领域,更具体地,涉及一种静态库配置的切换方法和系统。
背景技术
在iOS开发过程中,应用CocoaPods可以让开发中的依赖包管理变的非常简单。工作人员将核心代码打包成静态库以供开发使用,静态库的环境配置分成Debug版本和Release版本,其中,Release版本加入了防调试手段,用于在最后发布的软件包中使用,以防止黑客获取静态库中的核心代码逻辑;Debug版本则用于内部开发,未加入防调试手段。
为了方便iOS软件开发及在开发过程中使用静态库,大都使用CocoaPods进行静态库的管理。在使用CocoaPods进行静态库的管理时,只支持集成静态库的一种环境配置,即集成Debug版本或Release版本。当在需要使用Debug版本时,需要在Podfile中将静态库的设置改成Debug,再更新;同理,当在需要使用Release版本时,需要在Podfile中将静态库的设置改成Release,再更新。当在iOS软件开发过程中需要大规模使用静态库时,这种处理手段使得iOS软件开发效率低下。
针对这一问题,目前iOS开发领域普遍的做法是,首先,创建两个名称不同的仓库,分别用来集成同一个静态库的Debug版本和Release版本,例如,用XXPodDebug集成静态库的Debug版本和用XXPodRelease集成静态库的Release版本。其次,在Podfile中对这两个仓库指定是在Debug版本或Release版本下集成,具体的配置过程如下:
pod‘XXPodDebug’,:config=>’debug’;
pod’XXPodRelease’,:config=>’release’。
最后,运行pod install命令即可按照项目工程当前的配置环境,即Debug版本或Release版本,自动使用对应的静态库。由于创建了两个仓库,这种方法需要静态库维护人员维护两个仓库,每次静态库版本更新都需要更新两个仓库的内容,操作较为复杂。同时,在CocoaPods进行发布时会检查对应的CPU指令集,但在上述方法中,部分静态库可能不支持全部的CPU指令集,这将会导致这部分静态库对应的仓库无法发布。为了解决这个问题,需要设置一个与对应的静态库拥有相同的公共头文件的假的仓库集成进项目工程中,这样在编译程序之前,需要手动删除一份公共头文件,这种方案在进行iOS软件开发切换静态库配置时较为复杂,耗时耗力。
发明内容
本发明提供一种克服上述现有切换静态库配置的方案较为复杂,耗时耗力的问题的一种静态库配置的切换方法和系统。
根据本发明的一个方面,提供一种静态库配置的切换方法,包括:S1、根据一个私有仓库中的对应不同工程配置环境的多个配置环境静态库,编写静态库配置切换脚本;S2、在工程的配置文件中,添加所述静态库配置切换脚本的路径,以使得所述工程在编译之前执行所述静态库配置切换脚本,并根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库;S3、在所述工程编译后,根据更新后的所述对应的配置环境静态库,更新其他多个配置环境静态库。
优选地,步骤S1之前还包括:S0、根据不同的工程配置环境,对对应的一个或多个静态库重命名,重命名后的静态库为配置环境静态库,并将多个配置环境静态库发布到一个私有仓库;其中,所述工程配置环境包括:release配置环境和debug配置环境。
优选地,所述切换方法包括:一个静态库对应的配置环境静态库的个数为所述工程配置环境的种类数;所述配置环境静态库的命名中均携带对应的所述工程配置环境的信息。
优选地,步骤S0中所述将多个配置环境静态库发布到一个私有仓库进一步包括:S001、将多个所述配置环境静态库上传到代码托管仓库;S002、根据所述代码托管仓库的文件格式,编写所述代码托管仓库的文件;S003、将所述代码托管仓库的文件发布到所述私有仓库。
优选地,步骤S2中更新对应的配置环境静态库之后进一步包括:将所述配置环境静态库命名为公共静态库;相应地,步骤S3中,根据所述公共静态库,更新其他多个配置环境静态库。
优选地,步骤S2中所述执行所述静态库配置切换脚本包括:删除所述私有仓库中的公共静态库;根据当前的工程配置环境,执行对应的静态库替换命令;获取所述工程的配置文件;对所述工程的配置文件执行引用替换命令。
优选地,所述工程配置环境包括:所述执行对应的静态库替换命令包括:复制所有对应当前的工程配置环境的所述配置环境静态库,并在复制的配置环境静态库的命名中删除所述对应当前的工程配置环境的信息,所述复制的配置环境静态库为公共静态库;所述执行引用替换命令包括:在所述工程的配置文件中,将所有对所述配置环境静态库的引用配置,替换成对对应的所述公共静态库的引用配置。
优选地,所述将多个配置环境静态库发布到一个私有仓库进一步包括:将libA-debug.a和libA-release.a上传到具有Git服务的代码托管仓库;根据所述代码托管仓库的.podspec格式,编写所述代码托管仓库的PodA.podspec文件;将所述PodA.podspec文件发布到私有的CocoaPods仓库。
优选地,所述执行所述静态库配置切换脚本进一步包括:删除所述私有仓库中的公共静态库,执行rm libA.a;根据当前的工程配置环境,执行对应的静态库替换命令,执行cp libA-debug.a libA.a或cp libA-release.a libA.a;获取所述工程的配置文件,通过Xcodeproj工具获取Xcode工程的Xcconfigs文件;对所述工程的配置文件执行引用替换命令,将所述Xcode工程对libA-debug.a和libA-release.a的引用配置,替换成对libA.a的引用配置。
根据本发明的另一个方面,提供一种静态库配置的切换系统,包括:编写脚本模块,用于根据一个私有仓库中的对应不同工程配置环境的多个配置环境静态库,编写静态库配置切换脚本;添加模块,用于在工程的配置文件中,添加所述静态库配置切换脚本的路径,以使得所述工程在编译之前执行所述静态库配置切换脚本,并根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库;编译后更新模块,用于在所述工程编译后,根据更新后的所述对应的配置环境静态库,更新其他多个配置环境静态库。
本发明提供的一种静态库配置的切换方法和系统,通过设置静态库配置切换脚本,并将所述静态库配置切换脚本路径添加到所述工程的配置文件中,在工程运行时,能够实现根据所述工程的配置环境,自动切换静态库配置,方便简单;且配置环境静态库在同一个私有仓库中,相较于现有用两个仓库管理更加方便省时,减小了静态库维护人员的工作复杂度;在CocoaPods进行依赖检查时,无需下载假的仓库,解决了删除重复的公共头文件的问题,减少了开发人员的工作量。
附图说明
图1为本发明实施例中的一种静态库配置的切换方法的流程图;
图2为本发明实施例中的一种静态库配置的切换系统的模块图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1为本发明实施例中的一种静态库配置的切换方法的流程图,如图1所示,包括:S1、根据一个私有仓库中的对应不同工程配置环境的多个配置环境静态库,编写静态库配置切换脚本;S2、在工程的配置文件中,添加所述静态库配置切换脚本的路径,以使得所述工程在编译之前执行所述静态库配置切换脚本,并根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库;S3、在所述工程编译后,根据更新后的所述对应的配置环境静态库,更新其他多个配置环境静态库。
具体地,所述切换方法应用于iOS的开发,所述静态库是一种共享程序代码的方式。本实施例是在iOS开发中,应用CocoaPods工具集成管理静态库。所述静态库以文件形式集成,以文件形式集成的静态库为.a形式。
进一步地,所述工程配置环境包括:Debug版本配置环境和Release版本配置环境。所述工程为Xcode项目工程。
进一步地,步骤S1中,所述脚本是指,使用一种特定的描述性语言,并依据一定的格式编写的可执行文件,又称作宏或批处理文件。
进一步地,步骤S2中,所述在工程的配置文件中,添加所述静态库配置切换脚本的路径是指,在工程的配置文件中,添加前置脚本运行的路径,即所述静态库配置切换脚本的路径,使得所述工程进行编译之前先执行所述静态库配置切换脚本。
进一步地,在所述工程运行时,所述工程已执行所述静态库配置切换脚本。此时,所述工程能够根据当前所处的配置环境,对应切换所述工程需要的静态库的配置。
进一步地,步骤S2中,所述根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库是指,根据所述工程配置环境,对所述私有仓库中的配置环境静态库进行更新。
本发明提供的一种静态库配置的切换方法,通过设置静态库配置切换脚本,并将所述静态库配置切换脚本路径添加到所述工程的配置文件中,在工程运行时,能够实现根据所述工程的配置环境,自动切换静态库配置,方便简单;且配置环境静态库在同一个私有仓库中,相较于现有用两个仓库管理更加方便省时,减小了静态库维护人员的工作复杂度;在CocoaPods进行依赖检查时,无需下载假的仓库,解决了删除重复的公共头文件的问题,减少了开发人员的工作量。
基于上述实施例,步骤S1之前还包括:S0、根据不同的工程配置环境,对对应的一个或多个静态库重命名,重命名后的静态库为配置环境静态库,并将多个配置环境静态库发布到一个私有仓库;其中,所述工程配置环境包括:release配置环境和debug配置环境。
本发明提供的一种静态库配置的切换方法,通过设置根据工程的配置环境,对静态库重命名,实现了区分不同配置环境的静态库;通过设置将配置环境静态库发布到一个私有仓库,实现了将不同配置的静态库的文件均放入同一仓库管理,减小了维护成本,降低了工作人员进行维护和更新的复杂度,解决了现有技术中需要更新及维护两个静态库的成本高,有误差的问题。
基于上述实施例,一个静态库对应的配置环境静态库的个数为所述工程配置环境的种类数;所述配置环境静态库的命名中均携带对应的所述工程配置环境的信息。
进一步地,所述一个静态库对应的配置环境静态库的个数为所述工程配置环境的种类数是指,一个所述静态库对应的配置环境静态库的个数根据所述工程配置环境的种类数确定,所述工程配置环境的种类数为2个,即包括release配置环境和debug配置环境的2个种类。
进一步地,所述配置环境静态库的形式包括:debug.a和release.a。
基于上述实施例,步骤S0中所述将多个配置环境静态库发布到一个私有仓库进一步包括:S001、将多个所述配置环境静态库上传到代码托管仓库;S002、根据所述代码托管仓库的文件格式,编写所述代码托管仓库的文件;S003、将所述代码托管仓库的文件发布到所述私有仓库。
具体地,所述代码托管仓库,优选为GitHub仓库、CODING仓库、Bibucket仓库和CSDN code仓库,但不限于此。所述代码托管仓库的文件格式为.podspec,所述代码托管仓库的文件根据所述代码托管仓库的文件格式编写,所述代码托管仓库的文件用于发布到所述私有仓库。所述私有仓库是指,应用CocoaPods工具,建立的私有仓库。
本发明提供的一种静态库配置的切换方法,通过设置将配置环境静态库上传到同一个代码库,进而发布到同一个私有仓库,实现了将不同配置的静态库的文件均放入同一仓库管理,减小了维护成本,降低了工作人员进行维护和更新的复杂度,解决了现有技术中需要更新及维护两个静态库的成本高,有误差的问题。
基于上述实施例,步骤S2中更新对应的配置环境静态库之后进一步包括:将所述配置环境静态库命名为公共静态库;相应地,步骤S3中,根据所述公共静态库,更新其他多个配置环境静态库。
具体地,本实施例是指,将所述配置环境静态库的名称命名为对应的公共静态库的名称,所述公共静态库的命名中不携带对应的所述工程配置环境的信息。
基于上述实施例,步骤S2中所述执行所述静态库配置切换脚本包括:删除所述私有仓库中的公共静态库;根据当前的工程配置环境,执行对应的静态库替换命令;获取所述工程的配置文件;对所述工程的配置文件执行引用替换命令。
具体地,所述公共静态库的命名中不携带对应的所述工程配置环境的信息,进一步优选地,是指所述公共静态库未以debug.a和release.a的格式命名。
进一步地,所述根据当前的工程配置环境,执行对应的静态库替换命令是指,根据当前工程的配置环境,即当前工程处于debug配置环境或release配置环境;执行对应的静态库替换命令,即当前工程处于debug配置环境时,执行对应的debug配置环境的静态库替换命令,当前工程处于release配置环境时,执行对应的release配置环境的静态库替换命令。
具体地,所述获取所述工程的配置文件的优选方式是,通过Xcodeproj工具获取。所述工程的配置文件优选是指Xcconfigs文件。
进一步地,所述对所述工程的配置文件执行引用替换命令是指,根据当前工程的配置环境,即当前工程处于debug配置环境或release配置环境;执行对应的引用替换命令,即当前工程处于debug配置环境时,执行对应的debug配置环境的引用替换命令,当前工程处于release配置环境时,执行对应的release配置环境的引用替换命令。
本发明提供的一种静态库配置的切换方法,通过设置删除所述私有仓库中的所有公共静态库,进一步减小了替换后的配置环境静态库使用的误差;通过设置根据当前的工程配置环境,执行对应的静态库替换命令和根据当前工程的配置环境,执行对应的引用替换命令,能够实现根据所述工程的配置环境,切换静态库配置。
作为一个优选实施例,所述执行对应的静态库替换命令包括:复制所有对应当前的工程配置环境的所述配置环境静态库,并在复制的配置环境静态库的命名中删除所述对应当前的工程配置环境的信息,所述复制的配置环境静态库为公共静态库。
具体地,所述过程如下所述。
当前工程处于debug配置环境时,执行对应的debug配置环境的静态库替换命令。所述对应的debug配置环境的静态库替换命令执行的过程包括:复制私有的CocoaPods仓库中的所有包含debug配置环境的信息的配置环境静态库,并将复制后的配置环境静态库再次重命名成不包含debug配置环境的信息的静态库,即再次重命名成对应的静态库的原名。
当前工程处于release配置环境时,执行对应的release配置环境的静态库替换命令。所述对应的release配置环境的静态库替换命令执行的过程包括:复制私有的CocoaPods仓库中的所有包含release配置环境的信息的配置环境静态库,并将复制后的配置环境静态库再次重命名成不包含release配置环境的信息的静态库,即再次重命名成对应的静态库的原名。
作为一个优选实施例,所述执行引用替换命令包括:在所述工程的配置文件中,将所有对所述配置环境静态库的引用配置,替换成对对应的所述公共静态库的引用配置。
具体地,所述过程如下所述。
当前工程处于debug配置环境时,执行对应的debug配置环境的引用替换命令。所述对应的debug配置环境的引用替换命令执行的过程包括:获取所述工程的配置文件中所有对于包含debug配置环境的信息和release配置环境的信息的配置环境静态库的引用配置,并将所述工程的配置文件中所有对于包含debug配置环境的信息和release配置环境的信息的配置环境静态库的引用配置,替换成对于所述复制的配置环境静态库的引用配置,及替换成对于所述公共静态库的引用配置。
当前工程处于release配置环境时,执行对应的release配置环境的引用替换命令。所述对应的release配置环境的引用替换命令执行的过程包括:获取所述工程的配置文件中所有对于包含debug配置环境的信息和release配置环境的信息的配置环境静态库的引用配置,并将所述工程的配置文件中所有对于包含debug配置环境的信息和release配置环境的信息的配置环境静态库的引用配置,替换成对于所述复制的配置环境静态库的引用配置,及替换成对于所述公共静态库的引用配置。
本发明提供的一种静态库配置的切换方法,通过设置在所述工程的配置文件中,将所有对所述配置环境静态库的引用配置,替换成对对应的所述公共静态库的引用配置,能够实现根据所述工程的配置环境,切换静态库配置。
下面以在iOS基于CocoaPods开发中,静态库为libA.a,工程为Xcode工程,工程配置环境为debug配置环境和release配置环境为例,进一步说明本发明。在本发明实施例中,libA.a也可以称为公共静态库。
首先,根据不同的工程配置环境,对对应的一个或多个静态库重命名,重命名后的静态库为配置环境静态库,并将多个配置环境静态库发布到一个私有仓库。
具体地,根据不同的工程配置环境,即Xcode项目工程的debug配置环境和release配置环境,对静态库重命名,重命名后的静态库为配置环境静态库,所述配置环境静态库为libA-debug.a和libA-release.a。所述libA-debug.a是指静态库libA.a处于debug配置环境的格式,所述libA-release.a是指静态库libA.a处于release配置环境的格式,也可以分别称为配置环境静态库。
具体地,所述将多个配置环境静态库发布到一个私有仓库是指,将多个所述配置环境静态库上传到代码托管仓库;根据所述代码托管仓库的文件格式,编写所述代码托管仓库的文件;将所述代码托管仓库的文件发布到所述私有仓库。其具体是指,将所述libA-debug.a和所述libA-release.a上传到具有Git服务的代码托管仓库;根据所述代码托管仓库的文件格式即.podspec格式,编写所述代码托管仓库的文件即PodA.podspec文件;将所述PodA.podspec文件发布到所述私有仓库即私有的CocoaPods仓库。
其次,根据一个私有仓库中的对应不同工程配置环境的多个配置环境静态库,编写静态库配置切换脚本。
然后,在Xcode工程的配置文件中,添加所述静态库配置切换脚本的路径,以使得所述Xcode工程在编译之前执行所述静态库配置切换脚本,并根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库。
在最后,在所述Xcode工程编译后,根据更新后的所述对应的配置环境静态库,更新其他多个配置环境静态库。
具体地,所述静态库配置切换脚本执行的过程包括:删除所述私有仓库中的公共静态库;根据当前的工程配置环境,执行对应的静态库替换命令。其中,所述执行对应的静态库替换命令包括:复制所有对应当前的工程配置环境的所述配置环境静态库,并在复制的配置环境静态库的命名中删除所述对应当前的工程配置环境的信息,所述复制的配置环境静态库为公共静态库。
获取所述工程的配置文件;对所述工程的配置文件执行引用替换命令。其中,所述执行引用替换命令包括:在所述工程的配置文件中,将所有对所述配置环境静态库的引用配置,替换成对对应的所述公共静态库的引用配置。
上述第一个步骤具体是指,删除所述私有的CocoaPods仓库中的所有以libA.a命名的静态库,即执行rm libA.a。当前Xcode工程处于debug配置环境时,执行对应的debug配置环境的静态库替换命令即cp libA-debug.a libA.a,所述cp libA-debug.a libA.a是指复制私有的CocoaPods仓库中包含debug配置环境的信息的静态库即libA-debug.a,并将复制后的静态库再次重命名成不包含debug配置环境的信息的静态库即重命名成libA.a,也就是再次重命名成对应的静态库的原名。当前Xcode工程处于release配置环境时,执行对应的release配置环境的静态库替换命令即cp libA-release.a libA.a,所述cp libA-release.a libA.a是指复制私有的CocoaPods仓库中包含release配置环境的信息的静态库即libA-release.a,并将复制后的静态库再次重命名成不包含release配置环境的信息的静态库即重命名成libA.a,也就是再次重命名成对应的静态库的原名。
上述第二个步骤是指,通过Xcodeproj工具获取Xcode工程的配置文件即Xcconfigs文件。当前Xcode工程处于debug配置环境时,执行对应的debug配置环境的引用替换命令,所述对应的debug配置环境的引用替换命令执行的过程包括:获取所述Xcode工程的配置文件中所有对于包含debug配置环境的信息和release配置环境的信息的配置环境静态库的引用配置,即libA-debug.a和libA-release.a,并将所述Xcode工程的配置文件中所有对于包含debug配置环境的信息和release配置环境的信息的配置环境静态库的引用配置,替换成对于所述公共静态库的引用配置,即libA.a的引用配置。当前Xcode工程处于release配置环境时,执行对应的release配置环境的引用替换命令,所述对应的release配置环境的引用替换命令执行的过程包括:获取所述Xcode工程的配置文件中所有对于包含debug配置环境的信息和release配置环境的信息的配置环境静态库的引用配置,即libA-debug.a和libA-release.a,并将所述Xcode工程的配置文件中所有对于包含debug配置环境的信息和release配置环境的信息的配置环境静态库的引用配置,替换成对于所述公共静态库的引用配置,即libA.a的引用配置。
基于上述实施例,图2为本发明实施例中的一种静态库配置的切换系统的模块图,如图2所示,包括:编写脚本模块,用于根据一个私有仓库中的对应不同工程配置环境的多个配置环境静态库,编写静态库配置切换脚本;添加模块,用于在工程的配置文件中,添加所述静态库配置切换脚本的路径,以使得所述工程在编译之前执行所述静态库配置切换脚本,并根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库;编译后更新模块,用于在所述工程编译后,根据更新后的所述对应的配置环境静态库,更新其他多个配置环境静态库。
具体地,所述切换方法应用于iOS的开发,所述静态库是一种共享程序代码的方式。本实施例是在iOS开发中,应用CocoaPods工具集成管理静态库。所述静态库以文件形式集成,以文件形式集成的静态库为.a形式。
进一步地,所述工程配置环境包括:Debug版本配置环境和Release版本配置环境。所述工程为Xcode项目工程。
进一步地,所述编写脚本模块中,所述脚本是指,使用一种特定的描述性语言,并依据一定的格式编写的可执行文件,又称作宏或批处理文件。
进一步地,所述添加模块中,所述在工程的配置文件中,添加所述静态库配置切换脚本的路径是指,在工程的配置文件中,添加前置脚本运行的路径,即所述静态库配置切换脚本的路径,使得所述工程进行编译之前先执行所述静态库配置切换脚本。
进一步地,在所述工程运行时,所述工程已执行所述静态库配置切换脚本。此时,所述工程能够根据当前所处的配置环境,对应切换所述工程需要的静态库的配置。
进一步地,所述添加模块中,所述根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库是指,根据所述工程配置环境,对所述私有仓库中的配置环境静态库进行更新。
本发明提供的一种静态库配置的切换方法和系统,通过设置静态库配置切换脚本,并将所述静态库配置切换脚本路径添加到所述工程的配置文件中,在工程运行时,能够实现根据所述工程的配置环境,自动切换静态库配置,方便简单;且配置环境静态库在同一个私有仓库中,相较于现有用两个仓库管理更加方便省时,减小了静态库维护人员的工作复杂度;在CocoaPods进行依赖检查时,无需下载假的仓库,解决了删除重复的公共头文件的问题,减少了开发人员的工作量;通过设置根据工程的配置环境,对静态库重命名,实现了区分不同配置环境的静态库;通过设置将配置环境静态库发布到一个私有仓库,实现了将不同配置的静态库的文件均放入同一仓库管理,减小了维护成本,降低了工作人员进行维护和更新的复杂度,解决了现有技术中需要更新及维护两个静态库的成本高,有误差的问题;通过设置删除所述私有仓库中的所有公共静态库,进一步减小了替换后的配置环境静态库使用的误差;通过设置根据当前的工程配置环境,执行对应的静态库替换命令和根据当前工程的配置环境,执行对应的引用替换命令,能够实现根据所述工程的配置环境,切换静态库配置;本发明保护了针对iOS中基于ReactNative的列表视图实现方案,提高了iOS中基于ReactNative的列表的性能。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种静态库配置的切换方法,其特征在于,包括:
S1、根据一个私有仓库中的对应不同工程配置环境的多个配置环境静态库,编写静态库配置切换脚本;
S2、在工程的配置文件中,添加所述静态库配置切换脚本的路径,以使得所述工程在编译之前执行所述静态库配置切换脚本,并根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库;
S3、在所述工程编译后,根据更新后的所述对应的配置环境静态库,更新其他多个配置环境静态库;
步骤S2中更新对应的配置环境静态库之后进一步包括:
将所述配置环境静态库命名为公共静态库;
相应地,步骤S3中,根据所述公共静态库,更新其他多个配置环境静态库;
步骤S2中所述执行所述静态库配置切换脚本包括:
删除所述私有仓库中的公共静态库;
根据当前的工程配置环境,执行对应的静态库替换命令;
获取所述工程的配置文件;
对所述工程的配置文件执行引用替换命令。
2.根据权利要求1的切换方法,其特征在于,步骤S1之前还包括:
S0、根据不同的工程配置环境,对对应的一个或多个静态库重命名,重命名后的静态库为配置环境静态库,并将多个配置环境静态库发布到一个私有仓库;
其中,所述工程配置环境包括:release配置环境和debug配置环境。
3.根据权利要求2的切换方法,其特征在于,包括:
一个静态库对应的配置环境静态库的个数为所述工程配置环境的种类数;所述配置环境静态库的命名中均携带对应的所述工程配置环境的信息。
4.根据权利要求2的切换方法,其特征在于,步骤S0中所述将多个配置环境静态库发布到一个私有仓库进一步包括:
S001、将多个所述配置环境静态库上传到代码托管仓库;
S002、根据所述代码托管仓库的文件格式,编写所述代码托管仓库的文件;
S003、将所述代码托管仓库的文件发布到所述私有仓库。
5.根据权利要求1的切换方法,其特征在于,
所述执行对应的静态库替换命令包括:复制所有对应当前的工程配置环境的所述配置环境静态库,并在复制的配置环境静态库的命名中删除所述对应当前的工程配置环境的信息,所述复制的配置环境静态库为公共静态库;
所述执行引用替换命令包括:在所述工程的配置文件中,将所有对所述配置环境静态库的引用配置,替换成对对应的所述公共静态库的引用配置。
6.根据权利要求4的切换方法,其特征在于,所述将多个配置环境静态库发布到一个私有仓库进一步包括:
将libA-debug.a和libA-release.a上传到具有Git服务的代码托管仓库;
根据所述代码托管仓库的.podspec格式,编写所述代码托管仓库的PodA.podspec文件;
将所述PodA.podspec文件发布到私有的CocoaPods仓库。
7.根据权利要求1的切换方法,其特征在于,所述执行所述静态库配置切换脚本进一步包括:
删除所述私有仓库中的公共静态库,执行rm libA.a;
根据当前的工程配置环境,执行对应的静态库替换命令,执行cp libA-debug.alibA.a或cp libA-release.alibA.a;
获取所述工程的配置文件,通过Xcodeproj工具获取Xcode工程的Xcconfigs文件;
对所述工程的配置文件执行引用替换命令,将所述Xcode工程对libA-debug.a和libA-release.a的引用配置,替换成对libA.a的引用配置。
8.一种静态库配置的切换系统,其特征在于,包括:
编写脚本模块,用于根据一个私有仓库中的对应不同工程配置环境的多个配置环境静态库,编写静态库配置切换脚本;
添加模块,用于在工程的配置文件中,添加所述静态库配置切换脚本的路径,以使得所述工程在编译之前执行所述静态库配置切换脚本,并根据所述工程配置环境切换对应的配置环境静态库配置,更新对应的配置环境静态库;
编译后更新模块,用于在所述工程编译后,根据更新后的所述对应的配置环境静态库,更新其他多个配置环境静态库;
所述添加模块在更新对应的配置环境静态库之后进一步用于:
将所述配置环境静态库命名为公共静态库;
相应地,所述编译后更新模块用于根据所述公共静态库,更新其他多个配置环境静态库;
所述执行所述静态库配置切换脚本包括:
删除所述私有仓库中的公共静态库;
根据当前的工程配置环境,执行对应的静态库替换命令;
获取所述工程的配置文件;
对所述工程的配置文件执行引用替换命令。
CN201710834782.2A 2017-09-15 2017-09-15 一种静态库配置的切换方法和系统 Active CN107544813B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710834782.2A CN107544813B (zh) 2017-09-15 2017-09-15 一种静态库配置的切换方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710834782.2A CN107544813B (zh) 2017-09-15 2017-09-15 一种静态库配置的切换方法和系统

Publications (2)

Publication Number Publication Date
CN107544813A CN107544813A (zh) 2018-01-05
CN107544813B true CN107544813B (zh) 2020-10-16

Family

ID=60963972

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710834782.2A Active CN107544813B (zh) 2017-09-15 2017-09-15 一种静态库配置的切换方法和系统

Country Status (1)

Country Link
CN (1) CN107544813B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710230A (zh) * 2018-12-12 2019-05-03 平安科技(深圳)有限公司 一种利用静态库实现目标程序生成方法及装置
CN110851117B (zh) * 2019-10-15 2023-04-11 福建天晴在线互动科技有限公司 一键导入静态库到项目的方法、存储介质
CN117435244B (zh) * 2023-12-21 2024-03-19 南京掌控网络科技有限公司 一种前端跨工程公共库系统及其构建方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8132166B2 (en) * 2007-05-14 2012-03-06 Red Hat, Inc. Methods and systems for provisioning software
CN106487542A (zh) * 2015-08-26 2017-03-08 北京京东尚科信息技术有限公司 一种利用配置中心管理动态脚本的方法和系统
CN106775744A (zh) * 2016-12-28 2017-05-31 北京五八信息技术有限公司 一种生成静态库的方法和装置
CN106815052A (zh) * 2017-01-10 2017-06-09 南威软件股份有限公司 一种适配多环境配置的快速部署系统的方法
CN106886394A (zh) * 2015-12-15 2017-06-23 五八同城信息技术有限公司 应用程序打包方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8132166B2 (en) * 2007-05-14 2012-03-06 Red Hat, Inc. Methods and systems for provisioning software
CN106487542A (zh) * 2015-08-26 2017-03-08 北京京东尚科信息技术有限公司 一种利用配置中心管理动态脚本的方法和系统
CN106886394A (zh) * 2015-12-15 2017-06-23 五八同城信息技术有限公司 应用程序打包方法及装置
CN106775744A (zh) * 2016-12-28 2017-05-31 北京五八信息技术有限公司 一种生成静态库的方法和装置
CN106815052A (zh) * 2017-01-10 2017-06-09 南威软件股份有限公司 一种适配多环境配置的快速部署系统的方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
iOS Xcode使用xcconfig配置环境参数(Debug&Release);vbirdbest;《CSDN-https://blog.csdn.net/vbirdbest/article/details/53454014》;20161224;第1-2页 *
vbirdbest.iOS Xcode使用xcconfig配置环境参数(Debug&Release).《CSDN-https://blog.csdn.net/vbirdbest/article/details/53454014》.2016, *
创建GitHub私有库,制作CocoaPods依赖库;付俊智;《CSDN-https://blog.csdn.net/fujunzhi1007/article/details/77641779》;20170828;第1-7页 *

Also Published As

Publication number Publication date
CN107544813A (zh) 2018-01-05

Similar Documents

Publication Publication Date Title
US11467854B2 (en) Method and apparatus for loading multiple differing versions of a native library into a native environment
US20220398109A1 (en) Dynamically Loaded Plugin Architecture
JP7090657B2 (ja) アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
US11429365B2 (en) Systems and methods for automated retrofitting of customized code objects
CN107391104B (zh) 一种客户端与react native代码的更新依赖管理方法、装置及系统
US8924930B2 (en) Virtual machine image lineage
CN107544813B (zh) 一种静态库配置的切换方法和系统
US8087000B2 (en) Synchronizing codes from multiple software configuration management systems
US10929124B2 (en) Application release using integration into unified code system
CN114077423A (zh) 基于移动跨平台的机场app开发容器架构
CN112286504A (zh) 移动APP中基于ReactNative实现小程序开发并加载的方法
CN108182070B (zh) 定制安卓系统rom的方法、装置及终端设备
CN103645888A (zh) 一种自动构建操作系统的系统及方法
CN102054041A (zh) 元数据升级方法和系统
CN110647349B (zh) 一种实现iOS APP持续交付的方法
CN113220279A (zh) 一种代码索引管理方法、装置、设备及介质
EP4102357A1 (en) Development environment organizer with enhanced state switching and sharing
CN114385160A (zh) 一种分布式动态组件推送方法、装置、电子设备及介质
CN115202701A (zh) 一种生成补丁的方法、系统、设备和存储介质
Schwichtenberg et al. Database Schema Migrations
CN116755701A (zh) 安卓系统UI源码构建到Android Studio方法
CN117472509A (zh) 基于Kubernetes集群设备的非容器化应用管理方法
Chromý An integration tool for developer's project build-up
Betteridge et al. Scalable and robust Firedrake deployment on ARCHER2 and beyond

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