iOS SDK開發(fā)總結(jié)

這篇文章主要記錄我自開始SDK開發(fā)以來的經(jīng)驗(yàn)總結(jié)以及所遇到的坑, 從17年3月份開始, 作為一個(gè)從未做過SDK開發(fā)的iOS開發(fā)人員, 基本也是把坑從頭到尾走過了一遍...

簡單介紹

靜態(tài)庫和動(dòng)態(tài)庫

動(dòng)態(tài)庫: 這是我們最常用的一類庫, 因?yàn)橄到y(tǒng)的UIKit.framework和Fundation.framework這兩種都是動(dòng)態(tài)庫. 包括我們自己也可以制作framework動(dòng)態(tài)庫
靜態(tài)庫: 我們常用的第三方SDK絕大多數(shù)都是靜態(tài)庫, 而且包括.a和.framework兩種形式

我們也看到了, framework既可以是動(dòng)態(tài)庫也可以是靜態(tài)庫, 只是在配置的時(shí)候配置一下就可以了, 操作并不麻煩

很多人有這么一個(gè)誤區(qū), 就是動(dòng)態(tài)庫影響審核上線, 在這里更正一下, 如果是你自己制作的動(dòng)態(tài)庫, 只要版本控制在iOS8以上, 是可以上線的, 親測(cè)!

制作.framework以及.a的流程我就不貼了, 很容易就搜到, 在這里我提幾個(gè)需要注意的幾個(gè)點(diǎn):

  • framework庫可以通過配置Mach-O Type (Static Library靜態(tài)庫)(Dynamic Library靜態(tài)庫)來選擇是動(dòng)態(tài)庫還是靜態(tài)庫


    mach-o type.png
  • 使用分類出現(xiàn)問題, 在主工程加 -ObjC


    -objc.png
  • 使用動(dòng)態(tài)庫的時(shí)候需要在Embedded Binaries導(dǎo)入, 不然會(huì)報(bào)image not found錯(cuò)誤


    embedded.png
  • 需要在你的framework包的.h文件里面添加文件引用, 不然會(huì)報(bào)頭文件缺失


    misssing.png

    missing2.png

進(jìn)階

當(dāng)你SDK項(xiàng)目開發(fā)到一定階段的時(shí)候你會(huì)發(fā)現(xiàn)你又遇到問題了, 你需要使用其他第三方SDK的東西, 所以這里提供兩種方案給你們

  • 如果你的項(xiàng)目是.a靜態(tài)庫, 是直接可以包含其他靜態(tài)庫的
  • 如果你的項(xiàng)目是.framework靜態(tài)庫或者動(dòng)態(tài)庫, 那么你使用其他第三方靜態(tài)庫只能是依賴關(guān)系, 而不能是直接包含的關(guān)系
    (目前我沒解決framework是否可以直接包含其他framework這個(gè)問題, 如有大神, 請(qǐng)指教)
    寫文章能力有限, 這里把我遇到問題并解決問題的兩個(gè)博客分享給大家, 都是很有經(jīng)驗(yàn)的開發(fā)寫的, 大家一起互相學(xué)習(xí)~
    方案1:包含.a靜態(tài)庫
    < 第一種方案: 因?yàn)?a靜態(tài)庫可以直接包含, 所以通過修改framework為.a實(shí)現(xiàn)包含關(guān)系, 可以做到一個(gè)包包含多個(gè)包的方案
    方案2:依賴第三方靜態(tài)庫
    < 第二種方案: 不管是靜態(tài)framework還是動(dòng)態(tài)framework, 都只能是依賴的關(guān)系, 而不能直接包含, 具體怎么依賴, 大家可以詳細(xì)的看看這篇文章, 講得很仔細(xì), 只要一步步做, 肯定沒問題

關(guān)于使用bundle資源

動(dòng)態(tài)庫和靜態(tài)庫使用bundle資源的加載方式是不一樣的, 因?yàn)樗麄兊穆窂讲灰粯? 也致使我踩了N天的坑才找到問題所在, 也不算是解決問題??

大家先看下面的兩張截圖
大家可以看到動(dòng)態(tài)庫的最終路徑是HuiSDK.framework, 而靜態(tài)庫的路徑是HuiStationDemo.app, 也就是外部的主工程, 而不是framework本身, 這樣我們?cè)谑褂貌煌愋偷膄ramework的時(shí)候, 取資源文件就要注意用不同的方式了

動(dòng)態(tài)庫路徑 :
DynamicBundle.png
靜態(tài)庫路徑 :
StaticBundle.png
靜態(tài)庫加載方式:

現(xiàn)在我們?cè)赽undle資源新建一個(gè)storyboard, 然后在framework里面加載, 演示一下如何在SDK里面加載資源文件

首先按以下步驟新建bundle的target, 然后新建一個(gè)storyboard, 確定copy進(jìn)去
新建bundle資源.png

然后要把bundle資源bopy進(jìn)主工程


appCopy.png

這樣靜態(tài)庫通過這兩層關(guān)系我們就可以在SDK里面取到storyboard了, 如下:


加載sb.png
動(dòng)態(tài)庫加載方式:

這里創(chuàng)建bundle和storyboard的方法和步驟和靜態(tài)庫是一樣的, 只是依賴關(guān)系和copy不太一樣, 具體如下截圖:

bundle:
bundleCopy.png

SDK:
SDK依賴+copy.png

Demo:
demo.png

當(dāng)然動(dòng)態(tài)庫別忘了embedded:
動(dòng)態(tài)庫-embedded.png

通過這三層關(guān)系, 我們可以在主工程調(diào)用SDK, 在SDK里面獲取資源文件了!

如有不懂, 可以參照demo
demo鏈接:
靜態(tài)庫:https://github.com/LeoTnT/StaticDemo
動(dòng)態(tài)庫:https://github.com/LeoTnT/DynamicDemo

以上內(nèi)容是本人在開發(fā)中實(shí)際遇到并解決的一些問題, 如有方式不對(duì)或者有問題, 歡迎留言討論!

祝大家新年快樂~??, 溜了溜了, 回家過年, 待更~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纱烘,一起剝皮案震驚了整個(gè)濱河市棠枉,隨后出現(xiàn)的幾起案子鲫构,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桦他,死亡現(xiàn)場離奇詭異乾吻,居然都是意外死亡燃观,警方通過查閱死者的電腦和手機(jī)叽讳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坟募,“玉大人岛蚤,你說我怎么就攤上這事⌒概矗” “怎么了涤妒?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赚哗。 經(jīng)常有香客問我她紫,道長,這世上最難降的妖魔是什么屿储? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任贿讹,我火速辦了婚禮,結(jié)果婚禮上够掠,老公的妹妹穿的比我還像新娘民褂。我一直安慰自己,他們只是感情好疯潭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布赊堪。 她就那樣靜靜地躺著,像睡著了一般竖哩。 火紅的嫁衣襯著肌膚如雪哭廉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天相叁,我揣著相機(jī)與錄音遵绰,去河邊找鬼。 笑死钝荡,一個(gè)胖子當(dāng)著我的面吹牛街立,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播埠通,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼赎离,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了端辱?” 一聲冷哼從身側(cè)響起梁剔,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤虽画,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后荣病,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體码撰,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年个盆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脖岛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡颊亮,死狀恐怖柴梆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情终惑,我是刑警寧澤绍在,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站雹有,受9級(jí)特大地震影響偿渡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霸奕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一溜宽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铅祸,春花似錦坑质、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盟庞,卻和暖如春吃沪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背什猖。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工票彪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人不狮。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓降铸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摇零。 傳聞我的和親對(duì)象是個(gè)殘疾皇子推掸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • (原文:How to Create a Framework for iOS 作者:Sam Davies 譯者:Mr...
    王憲嶺閱讀 4,943評(píng)論 3 23
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評(píng)論 25 707
  • 看標(biāo)題,從中文的角度來說,我估計(jì)李小妹肯定又要吐槽我取的什么爛標(biāo)題谅畅,語法不通登渣,用腳趾頭想,也知道她會(huì)指出一...
    老妖_af44閱讀 285評(píng)論 5 5
  • 整理了一下以前和同學(xué)的聊天記錄有點(diǎn)亂毡泻。胜茧。。 第一天:早餐 majestic cafe (強(qiáng)烈推薦)http://w...
    醬爆閱讀 372評(píng)論 0 2
  • 好久沒有打開簡書了仇味,也好久沒有記日記了呻顽,瑣碎的生活里每日的忙忙碌碌卻沒有多少想要記下來的東西,四年來第一次過...
    呀呀囈語閱讀 173評(píng)論 0 0