【SDK】SDK的開(kāi)發(fā)與調(diào)試項(xiàng)目配置

?寫(xiě)在前面

最近在開(kāi)發(fā)SDK驶冒,然后發(fā)現(xiàn)這里面的學(xué)問(wèn)大著呢析孽。在開(kāi)發(fā)SDK的時(shí)候,先得構(gòu)想一下只怎,作為開(kāi)發(fā)者,怎么做才能開(kāi)發(fā)方便怜俐,調(diào)試方便身堡,導(dǎo)出SDK方便。

  • 你需要了解的知識(shí)點(diǎn):
    項(xiàng)目targets.jpeg

    上圖中project就一個(gè)拍鲤,沒(méi)啥好說(shuō)的但是targets就比較花里胡哨了
    我剛開(kāi)始接到這個(gè)項(xiàng)目是懵逼的贴谎,因?yàn)闆](méi)有文檔講這些個(gè)target是干啥的汞扎,之間有啥關(guān)系。每target里需要的配置項(xiàng)有哪些擅这。后來(lái)自己慢慢摸索才有了下面這一段的理解澈魄。至于為啥會(huì)有這些個(gè)target,其實(shí)稍微大點(diǎn)的項(xiàng)目仲翎,有了CI了之后痹扇,都會(huì)有8個(gè)左右的target。其目的就是為了打出不同的包(不同的編譯選項(xiàng))
  1. 第一個(gè)圖標(biāo)溯香,就有點(diǎn)像靶子的那個(gè)紅色圈圈的鲫构。這個(gè)是本文中提到的aggregate產(chǎn)生的,可以簡(jiǎn)單的理解為一個(gè)腳本玫坛,而這個(gè)腳本可以編譯后面三個(gè)target里面的東西结笨。
  2. 第二個(gè)圖標(biāo),黃色的手提包湿镀。這個(gè)就是正常的framework產(chǎn)生的主target炕吸,可以理解為我們平時(shí)直接創(chuàng)建的APP項(xiàng)目里的那個(gè)主target(就是下圖中的那個(gè)鉛筆和尺子搭出的“A”圖標(biāo))


    主target
  3. 第三個(gè)圖標(biāo),一般都是test相關(guān)生成的勉痴,我目前沒(méi)有關(guān)注赫模。
  4. 第四個(gè)圖標(biāo),像個(gè)房子一樣的蚀腿,這個(gè)是類(lèi)似于framework的嘴瓤,在addTarget-->cross platfrom這一步就可以看到。

?初步方案

  • 分別是不同的工程莉钙,SDK是一個(gè)項(xiàng)目廓脆,調(diào)試查看SDK效果的代碼又是一個(gè)項(xiàng)目,這樣就和我們平時(shí)用別人的項(xiàng)目一樣磁玉。

優(yōu)點(diǎn)蚊伞,工程之間完全隔離时迫。業(yè)務(wù)代碼和SDK沒(méi)有任何關(guān)系颅停、

缺點(diǎn),每次修改了SDK里的代碼后掠拳,調(diào)試成本變高了癞揉,要不停的導(dǎo)出framework然后放到Demo工程里看效果,且不能直接debug

  • 基于上面的缺點(diǎn),就有這個(gè)方法喊熟。如果可以在demo工程里直接調(diào)用SDK項(xiàng)目最新生成的framework多好啊柏肪。

優(yōu)點(diǎn),解決了上面說(shuō)的缺點(diǎn)

缺點(diǎn)芥牌,由于是兩個(gè)項(xiàng)目壁拉,在CI的時(shí)候谬俄,肯定是分兩個(gè)Git倉(cāng)庫(kù)管理的,于是兩個(gè)項(xiàng)目對(duì)應(yīng)的Git一定要配置好扇商,不然提交代碼的時(shí)候頭大凤瘦,夠吃一壺了

?基于第二點(diǎn)方案,我們操作起來(lái)控汉。

參看了iOS項(xiàng)目中SDK的開(kāi)發(fā)與調(diào)試
這一篇笔诵,這里主要講的是新增的方式。我是由于已經(jīng)有了兩個(gè)項(xiàng)目姑子,分別是SDK的工程和demo的工程乎婿,所以這里主要記錄怎么樣把兩個(gè)分開(kāi)的工程整合到一個(gè)項(xiàng)目里,然后方便我們SDK的開(kāi)發(fā)和調(diào)試

  1. 創(chuàng)建文件夾街佑,里面創(chuàng)建xcworkspace文件谢翎,然后把SDK項(xiàng)目和demo項(xiàng)目拷貝到一起。如下圖這樣沐旨。

  2. 下一步把這兩個(gè)目錄里的xcproject文件直接拖到xcode打開(kāi)的xcworkspace里森逮,結(jié)果如下圖


    屏幕快照 2019-10-16 下午8.43.46.png
  1. 編譯,沒(méi)有問(wèn)題就OK了磁携,至此就是兩個(gè)都加進(jìn)來(lái)后褒侧,后面就是demo工程怎么引用SDK工程產(chǎn)出的framework了,這一點(diǎn)可以參考上面的那個(gè)帖子谊迄。

  2. 兩個(gè)項(xiàng)目建立好關(guān)聯(lián)后闷供,應(yīng)該是下面這個(gè)樣子的(最后能運(yùn)行的樣子)


    WechatIMG5600.jpeg

可以看到目錄里有兩個(gè)一樣的framework,第一個(gè)是我們期望的把兩個(gè)項(xiàng)目關(guān)聯(lián)起來(lái)的那個(gè)動(dòng)態(tài)庫(kù)统诺,第二個(gè)是我們通過(guò)addTarget-->cross platfrom -->aggregate和腳本的方式生成的歪脏。可以運(yùn)行demo后分別對(duì)這兩個(gè)framework文件 showInFinder 看文件的修改日期粮呢,就可以看到哪個(gè)是最新的framework唾糯,然后說(shuō)明我們的修改有沒(méi)有生效怠硼。

WeChat22745993f981808c7081b7369531af4f.png

上圖中,箭頭所指的那個(gè)framework的路徑應(yīng)該就是前面我們腳本輸出的目標(biāo)路徑移怯。前后驗(yàn)證了,搞定这难,哈哈

總結(jié)

  1. 其中我遇到了一個(gè)問(wèn)題舟误,就是在修改了SDK的對(duì)外暴露的頭文件的時(shí)候,不知道為啥姻乓,framework里新增的頭文件不會(huì)出現(xiàn)在framework里的header文件夾里了嵌溢。最后我是通過(guò)shift+command+option+k快捷鍵清理了下,然后就好了
  1. 為了確保demo工程里使用的framework是直接指向SDK產(chǎn)出framework目錄蹋岩,自己多操作下就知道了赖草,哈哈哈哈
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市剪个,隨后出現(xiàn)的幾起案子秧骑,更是在濱河造成了極大的恐慌,老刑警劉巖扣囊,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乎折,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡侵歇,警方通過(guò)查閱死者的電腦和手機(jī)骂澄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惕虑,“玉大人坟冲,你說(shuō)我怎么就攤上這事±D瑁” “怎么了健提?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)酒唉。 經(jīng)常有香客問(wèn)我矩桂,道長(zhǎng),這世上最難降的妖魔是什么痪伦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任侄榴,我火速辦了婚禮,結(jié)果婚禮上网沾,老公的妹妹穿的比我還像新娘癞蚕。我一直安慰自己,他們只是感情好辉哥,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布桦山。 她就那樣靜靜地躺著攒射,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恒水。 梳的紋絲不亂的頭發(fā)上会放,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音钉凌,去河邊找鬼咧最。 笑死,一個(gè)胖子當(dāng)著我的面吹牛御雕,可吹牛的內(nèi)容都是我干的矢沿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼酸纲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捣鲸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起闽坡,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤栽惶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后无午,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體媒役,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年宪迟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酣衷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡次泽,死狀恐怖穿仪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情意荤,我是刑警寧澤啊片,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站玖像,受9級(jí)特大地震影響紫谷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捐寥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一笤昨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧握恳,春花似錦瞒窒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匕坯。三九已至,卻和暖如春拔稳,著一層夾襖步出監(jiān)牢的瞬間葛峻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工壳炎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泞歉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓匿辩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親榛丢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铲球,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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

  • 公司最近要開(kāi)發(fā)一個(gè)SDK,不知如何下手晰赞,請(qǐng)教了一個(gè)有SDK開(kāi)發(fā)經(jīng)驗(yàn)的同事稼病,也在網(wǎng)上查了些資料,決定整理一下掖鱼。整體上...
    小寶二代閱讀 7,074評(píng)論 34 44
  • 這兩天腰疼然走,頭也有時(shí)候是暈的,好像又要回到以往剛回長(zhǎng)春的感覺(jué)戏挡,這是啥毛病呢芍瑞,心理作用還是真的有實(shí)病呢?
    長(zhǎng)春康輝旅行社閱讀 106評(píng)論 0 0
  • 剛才孩子在客廳褐墅,孩兒他爸輔導(dǎo)孩子挑戰(zhàn)數(shù)學(xué)描紅100以?xún)?nèi)的加減法拆檬。我獨(dú)自躲在房間,給自己一段時(shí)間獨(dú)處妥凳。不多竟贯,也許十分...
    carolzhj閱讀 80評(píng)論 1 1
  • 作者:史遇春 人類(lèi)是群體生活的物種。 有群體逝钥,一般就會(huì)有分工屑那。 分工,按照素樸的觀念理解艘款,只是職能的差別持际,而非等級(jí)...
    史遇春之塵境心影錄閱讀 879評(píng)論 0 5
  • 今天想法與思路,基本上被我空閑時(shí)候想完了磷箕,全演示過(guò)了选酗。就只有寫(xiě)這些隨意冒出來(lái)的想法吧。 小豆豆岳枷,明天半夜大概就會(huì)送...
    簡(jiǎn)單人D閱讀 188評(píng)論 2 2