CN114840195B - 一种针对iOS SDK静态库的私有化方法 - Google Patents
一种针对iOS SDK静态库的私有化方法 Download PDFInfo
- Publication number
- CN114840195B CN114840195B CN202210744809.XA CN202210744809A CN114840195B CN 114840195 B CN114840195 B CN 114840195B CN 202210744809 A CN202210744809 A CN 202210744809A CN 114840195 B CN114840195 B CN 114840195B
- Authority
- CN
- China
- Prior art keywords
- document package
- sdk
- architecture
- framework
- architecture document
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种针对iOS SDK静态库的私有化方法,包括:针对第三方合作方的框架结构,提取出核心文件作为多架构文档包,保留info.plist表及Modules文件夹及内部文件;使用lipo命令拆分多架构文档包的所有架构;重组拆分后的单架构文档包,重新生成新多架构文档包并重新命名;根据新定义商务名对上表等通过文本编辑器统一修改命名;删除第三方合作方头文件,SDK在编译链接阶段具有仅需多架构文档包的特性;根据新定义商务名对合作方的框架结构文件夹重命名;完全私有化合作方的SDK静态库,重组后的SDK直接提供给客户。本发明解决商务署名带来的不必要问题,无需第三方合作方提供协助配合进并行按需处理。
Description
技术领域
本发明涉及互联网开发技术领域,尤其涉及到一种针对iOS SDK静态库的私有化方法。
背景技术
众多在生态化合作日益盛行的现代商务中,各厂商之间针对SDK能力的合作,也日益频繁。在这一类SDK合作中,需要同时引入两家厂商的SDK,以完成一个目标功能,并最终对外提供一个SDK产品。因为存在两家甚至两家以上的供应商,当SDK产品去到用户手上时,将产生不必要的供应商误会。当用户需要限制供应商的时候,该问题尤为凸显。
为了解决SDK的商务署名问题,常见的解决方案是,提供SDK时候,当中合作方的SDK尽可能地包裹在更深层级的文件夹内部。目的是让使用方尽可能少地发现合作方SDK,以减少不必要的商务误会。
但该法案存在明显的缺点,因为本质上并未把合作方的SDK进行隐藏。只是尽可能的减少降低被发现的可能性,仍然可能带来不必要的商务麻烦。
发明内容
针对上述技术问题,本发明的目的在于提供需要一种可提供自己SDK能力、第三方SDK能力,但同时能将第三方静态库形式SDK隐藏的私有化方案。本发明的第三方合作方SDK的静态库,不再直接提供。而是先进行拆分,并定义合适的商务名,然后再进行重组。本发明还提供拆分重组后的重命名SDK,同时保持SDK内部.o文件不变,以确保第三方合作方SDK能力不受影响。
本发明的技术方案如下:
一种针对iOS SDK静态库的私有化方法,包括以下步骤:
S1:针对第三方合作方的framework,提取出framework的核心文件作为多架构文档包,同时保留info.plist表及Modules文件夹及内部文件;
S2:使用lipo命令拆分多架构文档包的所有架构;
S3:重组拆分后的单架构文档包,并重新生成新的多架构文档包并进行重新命名;
S4:根据新定义的商务名对info.plist及Modules文件夹及其内部文件通过文本编辑器进行统一的修改命名;
S5:删除第三方合作方的头文件,SDK在编译链接阶段具有仅需多架构文档包的特性;
S6:根据新定义的商务名对第三方合作方的framework文件夹进行重命名,保证framework后缀文件夹的命名和多架构文档包的命名保持统一以确保Xcode正常寻找及链接;
S7:完全私有化第三方合作方的iOS SDK静态库,此时重组后的SDK直接提供给客户。
更进一步地,步骤S2包括:
S201:剥离多架构文档包的所有单个架构,其中,通过语句lipo以及输入路径参数输入多架构文档包路径,通过语句-thin以及架构名参数剥离本次单架构文档包的架构,通过语句-output以及输出路径参数输出单架构文档包的输出路径;
S202:使用同样命令进行重复操作直至剥离所有多架构文档包的所有架构。
更进一步地,步骤S3包括:
S301:定义合适的商务名;
S302:使用 lipo命令重组iOS SDK的多架构文档包;
S303:以合适的商务名对重组后的SDK多架构文档包进行重新生成及重命名。
更进一步地,步骤S302包括如下步骤:
S3021:通过语句-create以及每个单架构文档包的路径参数,建立新的多架构文档包;
S3022:通过语句-output 以及输出路径参数输出以定义的商务名命名的多架构文档包路径;
S3023:将重组后的SDK放入第三方合作方的framework。
与现有技术相比,本发明的具体实施例具有以下有益效果:
本发明属于真正的静态库SDK的私有化方案,可有效解决商务署名带来的不必要问题。其次,本发明的私有化方法的协作成本低,无需第三方合作方提供协助或配合,可自己进行按需处理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1为本发明的针对iOS SDK静态库的私有化方法示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
首先针对存在的技术术语进行描述或定义,其中:
iOS:iphone的操作系统; SDK:软件开发工具包。
如图1所示,根据本发明的具体实施方式,本发明提出了一种针对iOS SDK静态库的私有化方法,包括以下步骤:
S1:针对第三方合作方的framework,提取出framework的核心文件作为多架构文档包,同时保留info.plist表及Modules文件夹及内部文件。
在本申请中,framework是指iOS平台上 SDK的一种存在形式,一般以.framework后缀结尾。framework内部包含头文件、配置表、多架构文档包,包括有动态库、静态库两种类型。本申请针对静态库进行私有化操作。
多架构文档包是目标文件的集合。一个架构对应一个集合,多架构文档包中一般包含多个架构的目标文件集合。即静态库的原身,是静态库的核心文件。
其中,头文件是指对外暴露需要公开的类文件,每个framework都需要有一个头文件;而类文件是指声明了类的文件,在iOS开发上,通常情况下有.h和.m两个文件,来共同声明描述一个类。其中类是指一种实现信息封装的基础,包含数据说明和一组操作数据或传递消息的函数。
应该知道,一个静态库又是由若干个目标文件(.o文件)压缩组成。目标文件即.o后缀文件,是代码经过编译后的一种存在形态。目标文件是可执行代码的二进制形式,可以被操作系统载入内存执行。
当应用需要支持多个CPU架构(如arm64/armv7/x86_64)编译时,多架构(Fat)静态库是由多个单架构(Thin)静态库打包组成。因此如果存在若干子静态库,需要对每个子静态库分别提取Thin静态库,不同CPU架构下的Thin静态库在代码实现上可能存在差异,需要分开单CPU架构处理符号表。
本申请的技术方案在Mac OS环境下实现,当第三方合作方提出SDK合作时,第三方合作方会给出相应的framework,本申请的私有化方法首先要对第三方合作方的framework进行核心文件的提取,并将所提取的核心文件作为多架构文档包,本申请首先要对多架构文档包进行架构剥离。此外,iOS中很多功能需要配置info.plist才能实现,如设置后台运行、支持打开的文件类型等。本申请的技术方案要对info.plist表及Modules文件夹以及内部文件进行保留。
S2:使用lipo命令拆分多架构文档包的所有架构;其中,lipo命令作为创建或处理文件的命令工具。通过lipo命令结合相应语句对多架构文档包的架构进行拆分。
其中,在本发明的具体实施例中,步骤S2包括:
S201:剥离多架构文档包的所有单个架构,其中,通过语句lipo以及输入路径参数输入多架构文档包路径,通过语句-thin以及架构名参数剥离本次单架构文档包的架构,通过语句-output以及输出路径参数输出单架构文档包的输出路径;
S202:使用同样命令进行重复操作直至剥离所有多架构文档包的所有架构。
S3:重组拆分后的单架构文档包,并重新生成新的多架构文档包并进行重新命名;
其中,在本发明的具体实施例中,步骤S3包括:
S301:定义合适的商务名;通过重新定义合适的商务名,即是为了对后续的SDK多架构文档包进行重新生成及命名。
S302:使用 lipo命令重组iOS SDK的多架构文档包;如上所述,lipo命令作为创建或处理文件的命令工具。通过lipo命令结合相应语句对多架构文档包的架构进行重组。
S303:以合适的商务名对重组后的SDK多架构文档包进行重新生成及重命名。
更进一步地,在本发明的具体实施例中,步骤S302包括:
S3021:通过语句-create以及每个单架构文档包的路径参数,建立新的多架构文档包;
S3022:通过语句-output 以及输出路径参数输出以定义的商务名命名的多架构文档包路径;
S3023:将重组后的SDK放入第三方合作方的framework。
S4:根据新定义的商务名对info.plist及Modules文件夹及其内部文件通过文本编辑器进行统一的修改命名;
其中,步骤S4是通过只需打开文本编辑器直接修改的方式进行统一修改命名。经反复测试验证,直接修改当前两个文件不产生任何影响。
S5:删除第三方合作方的头文件,SDK在编译链接阶段具有仅需多架构文档包的特性;
在本发明的具体实施例中,删除原第三方合作方的头文件,经反复测试验证,SDK在编译链接阶段具有仅需多架构文档包的特性,而对于头文件不存在强引用的特点。
S6:根据新定义的商务名对第三方合作方的framework文件夹进行重命名,保证framework后缀文件夹的命名和多架构文档包的命名保持统一以确保Xcode正常寻找及链接。如果framework后缀文件夹的命名和多架构文档包的命名不能够保持统一,就无法确保Xcode进行正常寻找及链接。
其中Xcode是指运行在操作系统Mac OS上的集成开发工具(IDE),由Apple Inc开发;而Mac OS:由苹果公司开发并运行于苹果电脑上的操作系统;IDE:指集成开发环境(Integrated Development Environment ),是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。
S7:完全私有化第三方合作方的iOS SDK静态库,此时重组后的SDK直接提供给客户。对此,本申请完成了iOS SDK静态库的私有化,可以将iOS SDK直接给客户使用,让客户尽可能少地发现第三方合作方的SDK,以减少不必要的商务误会。
本发明属于真正的SDK静态库的私有化方法,可有效解决商务署名带来的不必要问题。其次,本发明的私有化方法的协作成本低,无需第三方合作方提供协助或配合,可自己进行按需处理。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (4)
1.一种针对iOS SDK静态库的私有化方法,其特征在于,包括以下步骤:
S1:针对第三方合作方的framework,提取出framework的核心文件作为多架构文档包,同时保留info.plist表及Modules文件夹及内部文件;
S2:使用lipo命令拆分多架构文档包的所有架构;
S3:重组拆分后的单架构文档包,并重新生成新的多架构文档包并进行重新命名;
S4:根据新定义的商务名对info.plist及Modules文件夹及其内部文件通过文本编辑器进行统一的修改命名;
S5:删除第三方合作方的头文件,SDK在编译链接阶段具有仅需多架构文档包的特性;
S6:根据新定义的商务名对第三方合作方的framework文件夹进行重命名,保证framework后缀文件夹的命名和多架构文档包的命名保持统一以确保Xcode正常寻找及链接;
S7:完全私有化第三方合作方的iOS SDK静态库,此时重组后的SDK直接提供给客户。
2.根据权利要求1所述的私有化方法,其特征在于,步骤S2包括:
S201:剥离多架构文档包的所有单个架构,其中,通过语句lipo以及输入路径参数输入多架构文档包路径,通过语句-thin以及架构名参数剥离本次单架构文档包的架构,通过语句-output以及输出路径参数输出单架构文档包的输出路径;
S202:使用同样命令进行重复操作直至剥离所有多架构文档包的所有架构。
3.根据权利要求2所述的私有化方法,其特征在于,步骤S3包括:
S301:定义合适的商务名;
S302:使用 lipo命令重组iOS SDK的多架构文档包;
S303:以合适的商务名对重组后的SDK多架构文档包进行重新生成及重命名。
4.根据权利要求3所述的私有化方法,其特征在于,所述步骤S302包括如下步骤:
S3021:通过语句-create以及每个单架构文档包的路径参数,建立新的多架构文档包;
S3022:通过语句-output 以及输出路径参数输出以定义的商务名命名的多架构文档包路径;
S3023:将重组后的SDK放入第三方合作方的framework。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210744809.XA CN114840195B (zh) | 2022-06-29 | 2022-06-29 | 一种针对iOS SDK静态库的私有化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210744809.XA CN114840195B (zh) | 2022-06-29 | 2022-06-29 | 一种针对iOS SDK静态库的私有化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114840195A CN114840195A (zh) | 2022-08-02 |
CN114840195B true CN114840195B (zh) | 2022-10-04 |
Family
ID=82573541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210744809.XA Active CN114840195B (zh) | 2022-06-29 | 2022-06-29 | 一种针对iOS SDK静态库的私有化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840195B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116560699B (zh) * | 2023-07-10 | 2024-02-13 | 易方信息科技股份有限公司 | 通过sdk版本混搭进行快速修复的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614696A (zh) * | 2016-12-08 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种应用制作的方法、静态库生成的方法及装置 |
CN112506558A (zh) * | 2020-12-03 | 2021-03-16 | 平安科技(深圳)有限公司 | 多架构静态库冲突处理方法、装置、设备及存储介质 |
CN112596734A (zh) * | 2020-12-15 | 2021-04-02 | 五八同城信息技术有限公司 | 静态库生成方法及装置 |
CN114398598A (zh) * | 2021-12-31 | 2022-04-26 | 乐鑫信息科技(上海)股份有限公司 | 一种库文件加密方法、解密方法以及加密装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632770B2 (en) * | 2015-04-28 | 2017-04-25 | Google Inc. | Infrastructure for hosting and publishing software packages |
US10740473B2 (en) * | 2017-04-11 | 2020-08-11 | Box, Inc. | Method and system for implementing an encryption SDK |
-
2022
- 2022-06-29 CN CN202210744809.XA patent/CN114840195B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614696A (zh) * | 2016-12-08 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种应用制作的方法、静态库生成的方法及装置 |
CN112506558A (zh) * | 2020-12-03 | 2021-03-16 | 平安科技(深圳)有限公司 | 多架构静态库冲突处理方法、装置、设备及存储介质 |
CN112596734A (zh) * | 2020-12-15 | 2021-04-02 | 五八同城信息技术有限公司 | 静态库生成方法及装置 |
CN114398598A (zh) * | 2021-12-31 | 2022-04-26 | 乐鑫信息科技(上海)股份有限公司 | 一种库文件加密方法、解密方法以及加密装置 |
Non-Patent Citations (2)
Title |
---|
iOS制作framework时框架重复;GigibondBaby;《https://its201.com/article/GigibondBaby/81237368》;20180729;全文 * |
使用拆分库的方法解决iOS中Duplicate Symbol静态库冲突;sundaysios;《https://www.cnblogs.com/sundaysgarden/articles/9486433.html》;20170615;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114840195A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9811360B2 (en) | Dynamic determination of application server runtime classloading | |
US8549490B2 (en) | Static code analysis for packaged application customization | |
US20110258600A1 (en) | Using a dsl for calling apis to test software | |
CN106547527B (zh) | 一种JavaScript文件构建方法及装置 | |
CN110968325A (zh) | 一种小程序转换方法及装置 | |
CN105022630A (zh) | 一种组件管理系统及组件管理方法 | |
US20070169017A1 (en) | Method and apparatus for translating an application programming interface (API) call | |
CN109739508B (zh) | 源代码编译方法、装置、系统及存储介质 | |
WO2020063252A1 (zh) | 一种实现多版本依赖隔离的方法和装置 | |
CN111309335A (zh) | 插件应用的编译方法、装置及计算机可读存储介质 | |
CN114840195B (zh) | 一种针对iOS SDK静态库的私有化方法 | |
US20090125895A1 (en) | Re-Using Legacy Libraries in Software | |
US8516455B2 (en) | Dynamic loading of kernel extensions | |
CN115291946A (zh) | 鸿蒙系统移植方法、装置、电子设备及可读介质 | |
CN114706616A (zh) | 小程序构建方法和装置 | |
CN112835587B (zh) | 一种编译集成方法及装置 | |
CN114911481A (zh) | 代码编译方法、装置以及电子设备 | |
CN112328241B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN114579141A (zh) | require框架转化为VUE框架的方法及装置 | |
CN113448874A (zh) | 一种单元测试脚本的生成方法及装置 | |
CN112596734A (zh) | 静态库生成方法及装置 | |
CN114579135B (zh) | 一种安装包生成方法及装置 | |
CN111273956B (zh) | 一种程序模块加载方法、装置、设备及存储介质 | |
Sisov | WebAssembly for Backend Process Development | |
CN115145627A (zh) | 插件本地运行环境的搭建方法、装置、设备及存储介质 |
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 | ||
CP03 | Change of name, title or address |
Address after: Room 402, No. 66, North Street, University Town Center, Panyu District, Guangzhou City, Guangdong Province, 510006 Patentee after: Yifang Information Technology Co.,Ltd. Address before: 510006 room 402, No. 66 (innovation building), North Central Street, University City, Panyu District, Guangzhou, Guangdong Province Patentee before: GUANGZHOU EASEFUN INFORMATION TECHNOLOGY Co.,Ltd. |
|
CP03 | Change of name, title or address |