1. 先创建一个项目,选择Cocoa touch Framework,点击下一步
2. 把自带的.h文件删除,再将要打包成的.framework源代码拖入项目中
3. 项目设置,选择工程->targe->build setting,在搜索框中搜索linking
,进行如下设置
屏幕快照 2017-07-20 下午3.56.33.png
4. 把要公开的头文件已到Public中去,在使用.framework时只能调用公开.h文件中的声明
屏幕快照 2017-07-20 下午4.06.08.png
5. 开始编译,选择Generic iOS Device 或者 真机,编译一下,再选择模拟器环境编译一下
屏幕快照 2017-07-20 下午4.09.17.png
6. 上面的操作会出现两个版本的.framework,点击Products中的framework,选择右键在文件夹中查看。
屏幕快照 2017-07-20 下午4.15.34.png
7. 真机版本适用于真机调试开发,模拟器版本适用于模拟器调试开发,将两个版本中的 CWen 文件通过终端合并成通用的,终端指令:lipo -create +上面两个文件的路径 +-output+ 合成后文件的输出路径;
屏幕快照 2017-07-20 下午4.28.05.png
8. 将合并生产的MyFramework文件替换真机生产的MyFramework.framework中的MyFramework文件
9. 创建一个新的项目,将替换后的MyFramework.framework引入到项目中
10. 接着在工程的search path中加上此framework的Headers的路径
屏幕快照 2017-07-20 下午4.33.08.png
11. 按下Command + R进行编译,没有错误的话在开发中引入.framework中的头文件就可以使用了,下面是我在集成框架遇到的错误,这种情况是编译没有错误,运行的时候就会报这样的错误,也就是说在链接的时候发生了错误。
12. 解决方法:在tagert中的Other Linker Flags 中加入所需的参数,一般是这三个:-ObjC、-all_load、-force_load,我添加了第一个问题就解决了。
13.至此,我的.framework制作和使用就完成了,使用过程:在项目的全局.pch文件中包含了.framework头文件,刚开始编写代码时没有提示, clear一下再编译就好了。
14.问题补充:如果制作的.framework中包含其他第三方框架,而且其他第三方框架中有bundle文件,在拉入的时候可以忽略这个bundle,制作.framework成功后,可以将这个.framework和刚才那个bundle文件放入一个文件夹,再拖入其他项目中,或者同时将.framework和bundle拖入其他项目中