创建静态库

文章目录
  1. 1. 创建.framework
    1. 1.1. 新建Xcode项目选择 Cocoa Touch Framework
    2. 1.2. 新建一个测试类
    3. 1.3. 配置headers-在Build Phases -> Headers下将Project下的你要提供给外部调用的头文件拖到Public下
    4. 1.4. 在target-> build setting - > link下修改基本配置
    5. 1.5. 将静态库导入项目中确保已经导入
  2. 2. 创建.a
    1. 2.1. 新建Xcode项目选择 Cocoa Touch Static Library
    2. 2.2. 新建一个测试类
    3. 2.3. 配置headers-在Build Phases -> Copy Files下将你要提供给外部调用的头文件添加进来
    4. 2.4. 在target-> build setting - > link下将Build Active Architecture Only设置为NO
    5. 2.5. 切换scame在run 时为release,然后CMD+B编译项目
    6. 2.6. 编译以后会在Xcode左侧Products文件夹下会生成.a文件,之后show in find,将.a文件佶include下的.h文件一起倒入项目
    7. 2.7. 将静态库导入项目中确保已经导入

创建静态库的方式有两种,分别为.a跟.framework。

创建.framework

新建Xcode项目选择 Cocoa Touch Framework

Cocoa Touch Framework

新建一个测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Test.h
@interface Test : NSObject
/**
输出字符串
*/
+ (void)string;
@end

// Test.m
#import "Test.h"

@implementation Test
/**
输出字符串
*/
+ (void)string{
NSLog(@"framework test");
}
@end

配置headers-在Build Phases -> Headers下将Project下的你要提供给外部调用的头文件拖到Public下

Build Phases

在target-> build setting - > link下修改基本配置

Build Setting

1、首先是Dead Code Stripping设置为NO,网上对此项的解释如下,大致意思是如果开启此项就会对代码中的”dead”、”unreachable”的代码过滤,不过这个开关是否关闭,似乎没有多大影响,不过为了完整还原framework中的代码,将此项关闭也未曾不可。
2、然后将Link With Standard Libraries关闭,我想可能是为了避免重复链接
3、最后将Mach-O Type设为Static Library,framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库。

将静态库导入项目中确保已经导入

Build Setting

1
2
3
4
5
6
7
8
9
10
11
12
13
/// 导入头文件
#import <FrameworkTest/FrameworkTest.h>
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[Test string];
}

创建.a

新建Xcode项目选择 Cocoa Touch Static Library

Cocoa Touch Static Library Framework

新建一个测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Test.h
@interface Test : NSObject
/**
输出字符串
*/
+ (void)string;
@end

// Test.m
#import "Test.h"

@implementation Test
/**
输出字符串
*/
+ (void)string{
NSLog(@"Cocoa Touch Static Library test");
}
@end

配置headers-在Build Phases -> Copy Files下将你要提供给外部调用的头文件添加进来

Build Phases

在target-> build setting - > link下将Build Active Architecture Only设置为NO

Build Active Architecture Only

Build Active Architecture Only选项设置 
Build Setting里面的Build Active Architecture Only设置为NO。Build Active Architecture Only设置为YES时,是为了debug的时候编译速度更快,此时它只编译当前的architecture版本。设置为NO时,会编译所有的版本。

切换scame在run 时为release,然后CMD+B编译项目

run

编译以后会在Xcode左侧Products文件夹下会生成.a文件,之后show in find,将.a文件佶include下的.h文件一起倒入项目

.a

.a

将静态库导入项目中确保已经导入

Build Setting

1
2
3
4
5
6
7
8
9
10
11
12
13
/// 导入头文件
#import "Test.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[Test string];
}
分享到 评论