CN114840195B - 一种针对iOS SDK静态库的私有化方法 - Google Patents

一种针对iOS SDK静态库的私有化方法 Download PDF

Info

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
Application number
CN202210744809.XA
Other languages
English (en)
Other versions
CN114840195A (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.)
Yifang Information Technology Co ltd
Original Assignee
Guangzhou Easefun 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 Guangzhou Easefun Information Technology Co ltd filed Critical Guangzhou Easefun Information Technology Co ltd
Priority to CN202210744809.XA priority Critical patent/CN114840195B/zh
Publication of CN114840195A publication Critical patent/CN114840195A/zh
Application granted granted Critical
Publication of CN114840195B publication Critical patent/CN114840195B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code 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静态库的私有化方法
技术领域
本发明涉及互联网开发技术领域,尤其涉及到一种针对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。
CN202210744809.XA 2022-06-29 2022-06-29 一种针对iOS SDK静态库的私有化方法 Active CN114840195B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116560699B (zh) * 2023-07-10 2024-02-13 易方信息科技股份有限公司 通过sdk版本混搭进行快速修复的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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