ONE SDK的設(shè)計(jì)總體分為3層: 平臺(tái)層-Platfrom layer啼肩,適配層-Porting layer,核心層-Common layer硕盹。
我們所使用的是 平臺(tái)層-Platfrom layer符匾。一般為了針對(duì)不同平臺(tái)提供給開發(fā)者,和平臺(tái)一致API規(guī)范瘩例,使各平臺(tái)的開發(fā)者無(wú)難度的集成SDK啊胶,例如我們會(huì)提供Java給Android,Objective-C 給IOS和MAC, C++ 給Linux垛贤、 IOT平臺(tái)
在OS X上焰坪,可能會(huì)創(chuàng)建一個(gè)動(dòng)態(tài)連接(Dynamically Linked)的framework。通過動(dòng)態(tài)連接聘惦,framework可以更新某饰,不需要應(yīng)用重新連接。在運(yùn)行時(shí)善绎,庫(kù)中代碼的一份拷貝被分享出來(lái)黔漂,整個(gè)工程都可以使用它,因此涂邀,這樣減少了內(nèi)存消耗瘟仿,提高了系統(tǒng)的性能。
這是一個(gè)功能強(qiáng)大的特性比勉。
iOS工程中的SDK,俗稱.a文件劳较。創(chuàng)建、使用一個(gè)SDK浩聋。
環(huán)境:Xcode Version 8.1 (8T61a) (網(wǎng)上的demo大多數(shù)都是老版本的)
-
1.創(chuàng)建一個(gè)靜態(tài)庫(kù)工程
打開Xcode观蜗,點(diǎn)擊File\New\Project,選擇iOS\Framework & Library\Cocoa Touch Static Library新建一個(gè)靜態(tài)庫(kù)工程.將工程命名為StaticFrameBlueTooth(自己需要藍(lán)牙功能衣洁,起了個(gè)藍(lán)牙名字墓捻。如果想高逼格:那就 (名字拼音)XXXBlueToothSDK????),然后將工程保存到一個(gè)空目錄下坊夫。
一個(gè)靜態(tài)庫(kù)工程由頭文件和實(shí)現(xiàn)文件組成砖第,這些文件將被編譯為庫(kù)本身。
當(dāng)創(chuàng)建靜態(tài)庫(kù)工程時(shí)环凿,Xcode會(huì)自動(dòng)添加libStaticFrameBlueTooth.h和libStaticFrameBlueTooth.m梧兼。因?yàn)椴恍枰獙?shí)現(xiàn)文件,右鍵單擊libStaticFrameBlueTooth.m選擇delete智听,將它刪除羽杰。
-
2.其實(shí)當(dāng)前的工程已經(jīng)可以使用了渡紫,但是你的庫(kù)還是需要添加一些功能吧?考赛?惕澎? 創(chuàng)建一個(gè)StaticFrameBlueTooth.a,可以使用你自己封裝好的控件颜骤。將你的控件從Finder中拖到Xcode下StaticFrameBlueTooth目錄下唧喉。(objc文件夾也是拖進(jìn)去的,不是創(chuàng)建工程的時(shí)候 配送的!8炊摺P佬!注意一下L菡摇!R娼А锈锤!)
一定要注意,這里一定要勾選以下三個(gè)選項(xiàng):
-
3.點(diǎn)擊 Finish 進(jìn)入工程里面:
Compile Source為編譯期間使用闲询,而Headers文件僅僅提供一個(gè)接口久免!
將你的控件的頭文件 添加到 庫(kù)的主頭文件StaticFrameBlueTooth.h中。在主頭文件的幫助下扭弧,開發(fā)者使用你的庫(kù)僅僅需要導(dǎo)入一個(gè)頭文件阎姥,如下面的代碼一樣,自己去選擇自己需要的一塊導(dǎo)入鸽捻。 </br>
其實(shí)頭文件 也可以 自己創(chuàng)建Headers欄呼巴,再在里面按自己需求添加Public(公用)、Private(私有)御蒲、Project(工程)各自所需的頭文件衣赶。但是條例一點(diǎn)要清晰,架構(gòu)性要明確厚满!
4.接下來(lái)就生成靜態(tài)庫(kù)
-
- 4.1靜態(tài)庫(kù)分為手機(jī)和模擬器兩種(手機(jī)端的只有手機(jī)能調(diào)用府瞄,模擬器的只有模擬器能調(diào)用)。
首先碘箍,構(gòu)建模擬器的靜態(tài)庫(kù)遵馆,如圖:
構(gòu)建工程(command + B), 你就會(huì)發(fā)現(xiàn) libStaticFrameBlueTooth.a 變黑了丰榴。
- 4.1靜態(tài)庫(kù)分為手機(jī)和模擬器兩種(手機(jī)端的只有手機(jī)能調(diào)用府瞄,模擬器的只有模擬器能調(diào)用)。
-
4.2然后show in Finder
-
-
- 4.3之后我拿到這個(gè).a文件 货邓、StaticFrameBlueTooth.h文件 和 他相關(guān)的所有.h文件,存放在一個(gè)新的文件夾里(起名就隨便啦!! )如下:
-
5.將他拖到你要應(yīng)用的工程中多艇,就可以去揮霍了逻恐。
如果已經(jīng)知道、了解 了導(dǎo)入對(duì)應(yīng)頭文件,即可以使用里面的三方庫(kù)或自己定制的控件了复隆。就無(wú)需了解我的Demo示例了拨匆!可以直接跳過 “運(yùn)行效果”圖片 的介紹。直接看最后提到的真機(jī)挽拂、模擬器通用的SDK 靜態(tài)庫(kù)介紹惭每!
最終運(yùn)行效果:
放上美女,是為了美觀一點(diǎn)亏栈!??????????
別分心了台腥!看segment!我講解一下這個(gè)多段選擇器绒北!
控件是一個(gè)長(zhǎng)度不固定黎侈,但至少是屏幕寬度(展示50個(gè)時(shí)間點(diǎn):5的倍數(shù))。傳入時(shí)間數(shù)組闷游,即可自動(dòng)生成一個(gè)長(zhǎng)度適應(yīng)的 多段選擇器峻汉。當(dāng)然寬度超過屏幕寬度。就需要放在UIScrollView里面了脐往!
因?yàn)樵O(shè)置了他的frame (20,200,105,30)休吠。其寬度是不為顯示的時(shí)間總長(zhǎng) (??背景色??即是最好的應(yīng)證)。超過控件寬度的地方不能響應(yīng)??點(diǎn)擊事件??也是一個(gè)應(yīng)證R挡尽瘤礁!
通用靜態(tài)庫(kù)
上面已經(jīng)提到了,模擬器調(diào)試得到的靜態(tài)庫(kù)只能在模擬器上運(yùn)行梅尤,如果使用真機(jī)必須選擇使用真機(jī)可調(diào)用的靜態(tài)庫(kù)文件(.a文件)柜思。
接下來(lái),我們就來(lái)生成一個(gè)雙方都能用的libStaticFrameBlueTooth.a
首先克饶,打開終端酝蜒,復(fù)制以下命令
lipo-create
/Users/個(gè)人PC/Library/Developer/Xcode/DerivedData/StaticFrameBlueTooth-adahgwpnjulylkcjpaomvnxafgmq/Build/Products/Debug-iphoneos/libStaticFrameBlueTooth.a
/Users/個(gè)人PC/Library/Developer/Xcode/DerivedData/StaticFrameBlueTooth-adahgwpnjulylkcjpaomvnxafgmq/Build/Products/Debug-iphonesimulator/libStaticFrameBlueTooth.a
綠色:是你手機(jī)模式下可用的libStaticFrameBlueTooth.a
紅色:是你模擬器下可用的libStaticFrameBlueTooth.a
藍(lán)色:是最后生成雙方都可用的libStaticFrameBlueTooth.a --并存在在桌面。最后拿
到的libStaticFrameBlueTooth.a 就哪里都可以用了矾湃!