作為一個(gè)iOS開發(fā)人員,我們總會(huì)遇到一些不想公開的算法脖阵、邏輯皂股。那就需要用到SDK,下面我簡(jiǎn)單的介紹一下SDK的封裝和使用CN啬拧就斤!
1.創(chuàng)建iOS Framework工程
首先我們需要?jiǎng)?chuàng)建一個(gè)iOS的CocoaTouch
工程,點(diǎn)擊Next蘑辑,輸入我們Framework的名字即可洋机。下方我們暫且將該Framework的名字命名為MyFramework
。如下所示:
_CLAY_.png
_CLAY_.png
2.設(shè)定兼容版本
創(chuàng)建完工程后洋魂,我們要選擇
Deployment Target
, 此處我們選擇的是8.0槐秧。也就是說(shuō)此處我們封裝的SDK所支持的iOS系統(tǒng)版本是iOS8.0+。_CLAY_.png
3.選擇“靜態(tài)庫(kù)”
我們創(chuàng)建的framework默認(rèn)是動(dòng)態(tài)庫(kù)忧设,所以我們要講Mach-O Type設(shè)置為靜態(tài)庫(kù)“Static Library”,如下所示颠通。
_CLAY_.png
4.引入源代碼并進(jìn)行編譯
①這里我創(chuàng)建的是SayHello類址晕。
.h文件中
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface SayHello : NSObject
- (void)sayHello;
@end
NS_ASSUME_NONNULL_END
.m文件中
#import "SayHello.h"
@implementation SayHello
- (void)sayHello {
NSLog(@"hello world");
}
@end
下方截圖中是在Build Phases
下的Headers
中進(jìn)行設(shè)置的。將用戶可以看到的頭文件房子Public
中顿锰,用戶看不到的放在Project中谨垃。如下所示。
_CLAY_.png
5.編譯
_CLAY_.png
準(zhǔn)備進(jìn)行編譯 分別在模擬器和真機(jī)的環(huán)境下進(jìn)行編譯硼控,模擬器不用介紹了刘陶,真機(jī)的環(huán)境選擇如圖所示:
_CLAY_.png
編譯完后,在
Products
下會(huì)生成相應(yīng)的Framework, 然后通過(guò)Show in Finder
進(jìn)行查看即可牢撼。_CLAY_.png
_CLAY_.png
我們使用"
lipo -create
模擬器framework路徑 真機(jī)framework路徑 -output
新的文件"命令將上述兩個(gè)文件進(jìn)行合并匙隔。下方就是合并上述兩個(gè)文件的執(zhí)行命令, 執(zhí)行完下方命令后會(huì)生成合并后的文件,將上述文件進(jìn)行替換即可熏版。經(jīng)過(guò)上述步驟纷责,我們的Framework至此就封裝完畢了。_CLAY_.png
經(jīng)過(guò)上面的步驟撼短,可以在計(jì)算機(jī)的根目錄下找到MyFramework文件再膳,將其替換項(xiàng)目中的兩個(gè)同名的MyFramework文件,就此我們的SDK就已經(jīng)制作完成了曲横。
SDK的使用
SDK已經(jīng)依賴的資源文件封裝完畢后喂柒,接下來(lái)就是在其他App中使用了。引入SDK步驟也是比較簡(jiǎn)單的禾嫉,這和引入友盟灾杰,個(gè)推,微信支付熙参,支付寶等等SDK的步驟差不多吭露。下方就是我們引入SDK的步驟。
我新建了一個(gè)test
工程
1.導(dǎo)入SDK并進(jìn)行相關(guān)配置
_CLAY_.png
2.配置完路徑后尊惰,接下來(lái)我們要在Other Linker Flags添加上-Objc和-all_load選項(xiàng)讲竿。-Objc這個(gè)flag告訴鏈接器把庫(kù)中定義的Objective-C類和Category都加載進(jìn)來(lái)泥兰。而-all_load會(huì)強(qiáng)制鏈接器把目標(biāo)文件都加載進(jìn)來(lái),即使沒(méi)有objc代碼题禀。根據(jù)上面介紹的鞋诗,下方即使不添加-Objc這個(gè)選項(xiàng),下方的工程也是可以正常運(yùn)行的迈嘹。
_CLAY_.png
3.SDK的使用
配置完畢后削彬,接下來(lái)就是在我們App中使用該SDK了。下方代碼就是我們上述MyFramework的使用方式
#import "ViewController.h"
#import <MyFramework/MyFramework.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[SayHello alloc] sayHello];
}
@end
_CLAY_.png