新建项目时,选择framework


在 Build Phases中 将需要公开的文件放入 Header 中 Public
framework分为模拟器和真机两种
点击TestFramework,选中 Edit Scheme

将 Debug 改为Release
分别选模拟器和真机编译

编译完成后我们可以看到 Products 中的TestFramework

然后 show in finder 找到对应生成的framework

此时我们的framework已经制作完成!
由于真机与模拟器生成的framework不同 所以需要做的就是将两个framework合并,
打开终端, 输入 lipo -info 加上framework中TestFramework文件对应的路径,我们可以看到framework对应所支持的版本


如果我们需要将测试的framework和真机的framework合并在一起就需要一下操作
终端输入 lipo -create 加两个framework的路径 加 -output 加 真机framework路径
然后我们输入 lipo -info 加真framework路径 查看真机所支持的版本
下面最最最重要的到了!!!
表面上看起来是合并成功了,但是当我们将framework放到项目中时,会发现,只能在真机下,才能运行,而模拟器无法调用,
其实在合并完成后,我们需要将测试framework中,对应Modules / Testframework.swiftmodule/中的四个文件复制到真机framework中对应的位置。
最后将复制合并后的framework添加到项目中,并在General 中 Embedded Binaaries 点击“+”添加 framework库
至此framework的制作基本完成。
如果需要适应最新xcode版本就需要在最新的系统中进行此类操作!