一 创建项目
本文将基于Xcode9创建一个简单的工程,来教大家如何制作一个自己的framework,目的就是简单易学的制作framework。这种方法可以使得你的代码易分享,在多个工程中复用,并且可以隐藏实现细节,控制公开的头文件。
二 步骤
1、打开Xcode,新建工程。
不要选择“Application”,选择“Framework & Library”。选择第一个,然后Next。
![](https://img.haomeiwen.com/i3405147/d8073f910d5589b5.png)
![](https://img.haomeiwen.com/i3405147/842b6605827d2e11.png)
2、创建功能类。
首先创建一个继承自NSObject的HelloWorld类
![](https://img.haomeiwen.com/i3405147/9899aa85e60f32a3.png)
3、实现功能。
在新创建的类里面声明方法并实现。这里我写一个helloWorld的方法
HelloWorld.h
#import <Foundation/Foundation.h>
@interface HelloWorld : NSObject
(void)helloWorld;
@end
HelloWorld.m
#import “HelloWorld.h”
@implementation HelloWorld
-(void)helloWorld {
NSLog(@“helloWorld”);
}
@end
4、更改参数
在TARGETS下选中工程,在Build Settings下更改几个参数。
![](https://img.haomeiwen.com/i3405147/dea84c9a9b9c3a6a.png)
因为如果集成的项目支持 bitCode 就设置成yes 不支持就设置成NO
![](https://img.haomeiwen.com/i3405147/c420bac56bd7d71e.png)
5、设置Headers
将你要公开的头文件拖至Public下,要隐藏的放在Private或者Project下,当然,隐藏的头文件就无法再被引用。
![](https://img.haomeiwen.com/i3405147/b5f59d907ef62cd9.png)
三 打包Framework
方法有很多 我们这里只说一种
--------真机打包
1.选中Generic iOS Device,编译程序 (只支持手机格式)
![](https://img.haomeiwen.com/i3405147/c1d49f201295b5ec.png)
2.编译成功后,选中图中所标示的framework,然后右键show in finder。
![](https://img.haomeiwen.com/i3405147/e7613c68ec7d8750.png)
![](https://img.haomeiwen.com/i3405147/6ca07abaee140390.png)
3.将framework拷贝出来保存,这就是我们最终制作的framework。
------------模拟器打包
1.选中模拟器,编译程序 (只支持模拟器格式)
![](https://img.haomeiwen.com/i3405147/cb0381f46931d531.png)
2.编译成功后,选中图中所标示的framework,然后右键show in finder。
![](https://img.haomeiwen.com/i3405147/9d80422e1f582c3c.png)
![](https://img.haomeiwen.com/i3405147/95df053fb4d7eb31.png)
四 合并framework
为了framework 支持真机 也支持模拟器 将两个framework 合并
我们通过终端命令将两个framework合为一个模拟器和真机都可使用的framework。
1 在终端 输入 lipo -info加真机上的这个文件路径
注意: 文件末尾要带上framework的名字
lipo -info xxxFramework.framework/xxxFramework //后加库名
看最后 arm64 说明是真机,如此方法测试模拟器文件,需得到i386 x86_64才对。
需要将真机和模拟器framework包中这个文件合并
lipo -create 真机路径/库名 模拟器路径/库名 -output 真机路径/库名
可以直接将最终生成的文件路径设置为真机Framework包下该文件的路径,生成的文件直接进行覆盖,生成完毕后,直接拷贝走使用
网友评论