1.你想将工具类代码或者第三方插件快捷的分享给其他人而无需拷贝大量文件。
2.你想让一些通用代码处于自己的掌控之下,以便于修复和升级。
3.你想将库共享给其他人,但不想让他们看到你的源代码。
Xcode6创建静态库详解(Cocoa Touch Static Library)
一。创建静态库文件
打开Xcode, 选择File ----> New ---> Project。 新建工程。
选择iOS ----> Framework & Library ---> Cocoa Touch Static Library。
点击Next。创建工程
工程目录:
在头文件StaticTest1.h中声明方法
#import <Foundation/Foundation.h>
@interface StaticTest1 : NSObject
-(void)testStaticLib;
@end
在StaticTest1.m中实现方法
#import "StaticTest1.h"
@implementation StaticTest1
-(void)testStaticLib
{
NSLog(@"This is a static library test");
}
@end
二。创建通用静态库
通过xcode编译出的静态库.a文件因为支持的cpu架构不同而分为iOS Device真机(armv7 arm64), iPhone5(i386),iPhone5s(x86_64)等版本,各个版本的.a文件不能混用,为了解决这个问题需要制作通用的静态库文件
依次使用iOS Device -> iPhone5 ->iPhone5s在Products目录下生成libStaticTest1.a文件(文件名从红色变为黑色既为编译成功),必须先编译iOS Device的.a文件,不然可能编译不通过
通过右键.a文件->show in finder 找到文件libStaticTest1.a,依次重命名libStaticTest1s.a,libStaticTest15.a,libStaticTest15s.a, 名字可以随意
使用mac下的终端命令行工具执行合并语句
lipo -create /Users/outeki/Desktop/libStaticTest1s.a /Users/outeki/Desktop/libStaticTest15s.a /Users/outeki/Desktop/libStaticTest15.a -output /Users/outeki/Desktop/test.a
文件路径可以随意放置,我将文件都放在了桌面上方便写合并语句,注意三个文件路径都用空格分开,/Users/outeki/Desktop/test.a既为生成的通用静态库文件
如果你不知道每个.a文件支持的系统,可以通过lipo -info命令行来查看具体信息
lipo -info /Users/outeki/Desktop/libStaticTest1s.a
如果需要将通用静态库分离成各个版本的静态库,可以参考文章 http://www.cnblogs.com/wengzilin/p/3800856.html
三。使用静态库
新建一个ios项目,并创建lib文件夹,将头文件StaticTest1.h和test.a文件加入项目
在ViewController.m中import头文件,即可使用头文件中定义的方法了
#import "ViewController.h"
#import "StaticTest1.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
StaticTest1 *test = [[StaticTest1 alloc] init];
[test testStaticLib];
}
@end
测试输出:
四.知识补充
到此静态库的介绍基本结束,如果你想自定义静态库的头文件,可以在静态库工程中新建一个新的.h头文件,用其替换掉copy file中配置的默认.h头文件
添加Public.h头文件
在public.h中引入可以公开的头文件
#import "StaticTest1.h"
在配置文件Build Phases ->Copy File中修改公共接口文件 (Xcode5以前是Copy Header)
Command+R执行工程即可得到对应的.h和.a文件
如何使用workspace管理静态库源码和原生app代码将在下一篇讨论