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