在ios的开发中,framework为我们使用的库文件,类似于java中的jar包。下面写写制作framework的步骤,使用xcode6.1:

1. 新建项目如下:

ios framework合并 ios制作framework_ios framework合并

ios framework合并 ios制作framework_ios_02

2. 新建完项目后,点击选择刚才新建的项目,右键单击并删除targets中向导自动生成的这两个target

ios framework合并 ios制作framework_ios framework合并_03

3.删除项目文件中的test文件夹

ios framework合并 ios制作framework_ios_04

删除后的项目结构如下:

ios framework合并 ios制作framework_iphone_05

4. 删除build关联项目:product---》schema---》edit schema---》manage schema,点击减号删除

ios framework合并 ios制作framework_ios framework合并_06

5.为项目添加一个target, File --- > new ... ---> target

ios framework合并 ios制作framework_iphone_07

ios framework合并 ios制作framework_ios_08

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:

ios framework合并 ios制作framework_iphone_09

HelloUtil的实现:

ios framework合并 ios制作framework_iphone_10

8.我们的方法已经写好,接下来要将我们写好的东西暴露给使用我们的framework的应用程序调用,我们需要将头文件放到项目的公共区,选择项目,在Build Phases下点击其左上角的加号,选择new headers phase:


ios framework合并 ios制作framework_头文件_11

选择new headers phase后,展开我们刚添加的header项,然后将添加需要暴露的头文件到public下,如果添加进来的默认不在public头文件下,拖拽到public下即可:

ios framework合并 ios制作framework_ios framework合并_12

添加进来的头文件默认在project下,需要将其拖拽到public下:


ios framework合并 ios制作framework_ios_13

9.现在,我们已经完成大部分工作,所以我们build and run我们的项目,看到Build Succeeded之后,就生成了我们自己的framework,选择window---》organizer---》projects,选择我们刚创建的项目mylib,点击红色剪头所指的箭头,在finder中打开framework文件所在目录,进入目录--》build--》products--》Debug-iphoneSimulator,即可找到我们的framework,注意,此framework只适用于iphone模拟器,如果要构建在真机使用的版本需要另行编译生成对应版本。(稍后研究)

ios framework合并 ios制作framework_ios framework合并_14

可以把这个framework文件拷贝到容易找的目录中,以便我们后面引入使用!

好了,我们的framework制作完成,接下来写一个测试项目来调用自己的framework:

新建一个ios应用:

将mylib.framework添加到项目中,在代码中调用我们刚写的sayHello方法:

选择下图的add other找到mylib.framework所在位置并将其添加到项目中:

ios framework合并 ios制作framework_iphone_15

打开storyboard,添加一个Button并为其指定touch up inside事件的响应方法:

ios framework合并 ios制作framework_ios framework合并_16

导入头文件:

#import <mylib/HelloUtil.h>
实现sayHello方法:

- (IBAction)sayHello:(id)sender {
    [[HelloUtilalloc] sayHello:@"John Reese"];
}

运行项目到模拟器上,点击button,效果如下:

ios framework合并 ios制作framework_iphone_17

好了,我们的framework能正常工作了。

说明:本篇文章参考了一些前人的经验,结合xcode6.1,简单介绍了一个制作framework的流程。