前言
开发SDK有一段时间了,这算是一篇总结贴,或者说教程也好,总之会把我经历的一些过程详细描述出来。设计到图文或者相关Code,篇幅可能较长,我会拆分出几个章节来进行,更加方便进行查阅。同时也欢迎各位行家来围观并指正。
用过别人的SDK都知道,有两种形式,一是一个.a文件带上一堆头文件,另一种就是一个简单的framework文件。iOS8之前并不支持动态框架,所以framework实际上也就是对静态库的一种包装而已,不过其方便性可想而知,因而选用framework是一个不错的方式。本文设计SDK支持iOS7以上,所以对动态框架并不做过多介绍。
创建工程
接下来我们开始创建工程,建工程前我会先建文件夹,大致如下
从名称来看,应该比较清晰,不做过多说明,现在打开Xcode开始创建工程
以上两步创建framework工程,该工程内部将主要包含我们的SDK源码。现在开始创建测试工程,方便对SDK进行调试。
到这里,我们已经创建了两个工程,需要将这两个工程关联起来,这里需要用到Workspace,仍然打开Xcode,选择File->New->Workspace,命名好你的Workspace并创建,这时候我们看到SDK目录下面应该是:
好,现在打开workspace,依次把之前创建的framework工程和测试工程拖进workspace内
现在选中MySDKTests->TARGETS->Build Phases,在Link Binary With Libraries中加入MySDK.framework
现在我们可以开始在framework工程中创建文件,并在测试工程中进行测试,选中framework工程,新建MySDKTest类,需要设置该类为public,以便外部能访问到
MySDKTest.h
@interface MySDKTest : NSObject
+ (void)printTest;
@end
MySDKTest.m
#import "MySDKTest.h"
@implementation MySDKTest
+ (void)printTest {
NSLog(@"MySDK Test");
}
@end
MySDK.h 把公开的头文件放在此处是个不错的方式
#import <UIKit/UIKit.h>
#import <MySDK/MySDKTest.h>
//! Project version number for MySDK.
FOUNDATION_EXPORT double MySDKVersionNumber;
//! Project version string for MySDK.
FOUNDATION_EXPORT const unsigned char MySDKVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <MySDK/PublicHeader.h>
在测试工程中进行测试
#import"ViewController.h"
#import <MySDK/MySDK.h>
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
[MySDKTest printTest];
}
@end
到此,你已经完成了一个SDK工程的创建,接下来我们将对工程进行配置。