生成framework步骤
1.首先新建一个项目,选择Cocoa touch Framework

2.然后将要封装成framework的代码拖入工程

3.选择工程文件>target第一项>Build Setting>
最后将Mach-O Type设为Static Library,framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库
4.然后将需要公开的头文件从Project中拖入Public,至于是否需要将私有的头文件拖入Private,我觉得直接放在Project中即可,若是Private中有头文件,打包以后的framework中会多出一个Private的文件夹包含着放入Private的头文件,不过我觉得如果是私有最好还是不要让别人看到。

5.Build Settings ->Build Active Architecture Only设置为NO. (图中的选项如果设为YES,会导致其编译时只生成当前机器的框架;将其设置为NO后,发现用模拟器编译后生成的framework同时包含x86_64和i386架构。)

6.下面就开始编译了,先选择Generic iOS Device,按下Command+B:Build一下的到的是支持真机的framework,然后随意选择一个模拟器再次Build一下得到支持模拟器的framework

7.然后用命令行将下面两个文件进行合成(也可以单独提供,不合并,合并了会导致包很大,各有优缺点吧,如果framework包不太大建议合并,否则还是提供两个)
如果架构有冲突。可以移除模拟器的一个,例如:lipo NetworkTest -remove arm64 -output NetworkTest

8. 将这做好的framework直接拖入要使用的工程中,注意将Copy items if needed打勾
9.调用该framework的app需要在 Build Settings ->Other Linker Flags 设置为-Objc(当framework中有使用了分类文件,就必须设置,否则无法加载;未使用可以不设置)在开发中,导入一些静态库的时候经常会要求我们在Build Settings->Other Linker Flags设置-ObjC
10. 如果framework 引入工程报警告,Missing submodule 'NetworkTest' 警告,则NetworkTest.h 文件中import 那些public 的文件

网友评论