iOS制作framework
前言:因为公司业务需求最近要开发一版蓝牙SDK供下游使用,说来惭愧iOS开发这么久,对于如何打包framework倒是知之甚少,所以写下这篇文章作为记录。
1. 新建Framework
1.1 新建iOS Project,如下图所示选择iOS-Framework,名字可以随便取,我新建项目的名称为LTTestKit
如果上面不是选择iOS系统,而是macOS或者其它的系统,可在Xcode中【Targets】->【Build Settings】->【Base SDK】中切换为iOS系统,如下图所示。
接下修改Mach-O Type
为Static Library,如下图所示:
2.公开头文件
新建一个测试类,随便什么都行,我这边新建了一个打印的log的类,内容如下:
然后选择Target-BuildPhases,将需要公开的头文件拖到public中,此处我将LTPrintLog.h从Private拖到Public中。
另外公开头文件还有另外一种方法,选中头文件在右边栏中选择Public,如下图所示:
3. 修改项目头文件
找到项目的同名的头文件,把Public中的头文件导入到项目头文件里(项目同名的头文件,系统自动生成)
4.创建Aggregate Target
新建target,步骤如下图所示:
接下来选择Other -> Aggregate,名字也随便起。
选中生成的Aggregate,为其添加依赖:
点击Target Dependencies下方的“+”,选中最开始创建的Framework对应的Target,点击“add”即可。
5.修改Target的Scheme
如下图操作,选择EditScheme:
分别把两个Target的Run模式的Build Configuration改为Release。
6.创建打包脚本
选择聚合Target,点击左上角的+
号,选中New Run Script Phase
在Run Script中添加如下脚本。脚本的作用是将模拟器包和真机包合并成一个聚合包,并将聚合包放在项目根目录下的Products文件夹中。
1 |
|
7.生成framework
先选择Framework对应的Target分别在模拟器跟真机上都run一遍。这里分别选择了iPhone 14 Pro跟Any iOS Device(也可选择自己的真机)。
然后切换LTTestKitAggregate
也运行一遍
之后会自动弹出Finder,打好的framework就已经生成成功
8.检查Framework有效性。
打开终端,进入到LTTestKit.framework所在目录。利用lipo命令输出.framework下的LTTestKit文件信息。如下所示:lipo -info LTTestKit,显示为fat file,则表明是模拟器和真机的聚合包。fat file,顾名思义,胖文件。相应的,非聚合包就是瘦文件,则输出Non-fat file: LMBaseKit is architecture: arm64之类的
结语
做完这些步骤,Framework的生成工作就告一段落了,如何测试生成的Framework是否能用,只需要新建一个项目将生成的Framework拖入项目,导入头文件,调用Framework中的方法,查看是否执行。如果成功执行说明执行反之则出了问题。这里就不延时Framework的测试了。