在ios的开发中,framework为我们使用的库文件,类似于java中的jar包。下面写写制作framework的步骤,使用xcode6.1:
1. 新建项目如下:
2. 新建完项目后,点击选择刚才新建的项目,右键单击并删除targets中向导自动生成的这两个target
3.删除项目文件中的test文件夹
删除后的项目结构如下:
4. 删除build关联项目:product---》schema---》edit schema---》manage schema,点击减号删除
5.为项目添加一个target, File --- > new ... ---> target
6.选择新建的target:mylib,
(1)在build settings 下,修改Base SDK为lastest ios (ios8.1),修改Build Active architecture Only 为no,
(2)接着修改Linking下的Dead Code Stripping为NO,Linking下的Mach-O Type为relocatable Object File,Linking下的Link with standard libraries为No,
(3)packaging下的wrapper extension改为framework,
(4)在上面选择info项,将Bundle OS Type code的值改为FMWK
(5)在Deployment下,将Mac OS X Development Target改为Compiler Default,将Target Device Family改为iphone/ipad,此处根据需要将iOS Deployment Target改成需要的版本,如iOS8.1
7.接下来,就可以向我们的项目中添加我们需要的类,此处我们添加一个COCOA CLASS,命名为HelloUtil,然后在为我们的项目添加UIKit.framework,使用UIAlertView做一个简单的弹窗,并将方法提供给外部调用。
添加framework:
HelloUtil的实现:
8.我们的方法已经写好,接下来要将我们写好的东西暴露给使用我们的framework的应用程序调用,我们需要将头文件放到项目的公共区,选择项目,在Build Phases下点击其左上角的加号,选择new headers phase:
选择new headers phase后,展开我们刚添加的header项,然后将添加需要暴露的头文件到public下,如果添加进来的默认不在public头文件下,拖拽到public下即可:
添加进来的头文件默认在project下,需要将其拖拽到public下:
9.现在,我们已经完成大部分工作,所以我们build and run我们的项目,看到Build Succeeded之后,就生成了我们自己的framework,选择window---》organizer---》projects,选择我们刚创建的项目mylib,点击红色剪头所指的箭头,在finder中打开framework文件所在目录,进入目录--》build--》products--》Debug-iphoneSimulator,即可找到我们的framework,注意,此framework只适用于iphone模拟器,如果要构建在真机使用的版本需要另行编译生成对应版本。(稍后研究)
可以把这个framework文件拷贝到容易找的目录中,以便我们后面引入使用!
好了,我们的framework制作完成,接下来写一个测试项目来调用自己的framework:
新建一个ios应用:
将mylib.framework添加到项目中,在代码中调用我们刚写的sayHello方法:
选择下图的add other找到mylib.framework所在位置并将其添加到项目中:
打开storyboard,添加一个Button并为其指定touch up inside事件的响应方法:
导入头文件:
#import <mylib/HelloUtil.h>
实现sayHello方法:
- (IBAction)sayHello:(id)sender {
[[HelloUtilalloc] sayHello:@"John Reese"];
}
运行项目到模拟器上,点击button,效果如下:
说明:本篇文章参考了一些前人的经验,结合xcode6.1,简单介绍了一个制作framework的流程。