制作framework
1.首先新建一个项目,选择Cocoa touch Framework

2.然后随便取一个名字

3.导入将要封装在framework里面的第三方库


4.导入将要封装成framework的代码拖入工程

5.选择工程文件>target第一项>Build Setting>搜索linking,然后几个需要设置的选项都显现出来,首先是Dead Code Stripping设置为NO,网上对此项的解释如下,大致意思是如果开启此项就会对代码中的” dead”、” unreachable”的代码过滤,不过这个开关是否关闭,似乎没有多大影响,不过为了完整还原framework中的代码,将此项关闭也未曾不可。
The resulting executable will not include any “dead” or unreachable code
然后将Link With Standard Libraries关闭,我想可能是为了避免重复链接
最后将Mach-O Type设为Static Library,framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库。

6.然后将需要公开的头文件从Project中拖入Public,至于是否需要将私有的头文件拖入Private,我觉得直接放在Project中即可,若是Private中有头文件,打包以后的framework中会多出一个Private的文件夹包含着放入Private的头文件,不过我觉得如果是私有最好还是不要让别人看到。

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

8. Build Phases -> Link Binary With Libraries 添加需要封装在内部的第三方framework

9. 添加使用Cocoapods管理第三方
1.cd到项目目录下 vim podfile
2. platform :ios,'8.0'
target 'MyLiveSDK' do
use_frameworks!
pod 'AFNetworking', '~>3.0.4'
pod 'MBProgressHUD', '0.9.2'
target'MyLiveSDKTests' do
inherit! :search_paths
end
end
3. pod install
10.添加framework内部使用的图片和音乐
1.创建Bundle

2. 把Base SDK 改成 iOS

3.直接把图片或者音频资源导入就可以

4.Command+B 直接Build一下 生成.bundle
5.把生成的.bundle直接拖入到相应的framework
6.获取图片的时候 .bundle/图片名字

10.修改 Debug 改为 Release

11.下面就开始编译,先选择真机,先清理一下, 按下Command+Shift+K, 在按下Command+B Build一下的到的是支持真机的framework 然后在随意选择一个模拟器在次Build一下得到支持模拟器的framework

12.合成SDK
1、lipo –create 真机路径 模拟器路径–output 生成的新路径。
2、把新生成的文件替换掉真机路径sdk内的相同文件。
3、真机路径的Framework就是最终可以使用的路径。
13.将这做好的framework直接拖到要使用的工程中 导入framework 内部第三方需要的依赖,并且导入.bundle需要的图片资源
网友评论