一種比較實用的iOS SDK項目架構(gòu)

在SDK開發(fā)中,一般會需要經(jīng)過幾個流程挣磨,開發(fā)SDK雇逞,測試SDK,把SDK交付給使用人員茁裙,這些東西看似步驟多塘砸,過程繁瑣,而且每修改一次SDK就需要重復(fù)一次上述的過程晤锥,增加了一些不必要的操作掉蔬。當然,如果我們在SDK設(shè)計之初就有一個好的項目架構(gòu)矾瘾,就可以極大簡化開發(fā)流程女轿,提高開發(fā)效率,本文將帶讀者一步一步設(shè)計搭建一個個人認為比較好的SDK開發(fā)架構(gòu)壕翩。

創(chuàng)建基本的工作空間

工作空間這個概念對于很多人并不陌生蛉迹,平時使用得很多的CocoaPods里面其實就使用到了工作空間,具體一些原理在我的另外一篇博客。
打開Xcode->New->Workspace戈泼,命名為JSDSDKDemo

新建工作空間

為我們的工作空間建立一個目錄,因為新建工作空間后赏僧,只會為我們生成一個工作空間文件大猛,并不會自動建立目錄。

SDK02.png

在我們的工作空間文件同級目錄下建立一個用于存放子項目的SubProject目錄淀零。

新建目錄

打開我們的JSDSDKDemo,新建一個項目挽绩,命名為JSSDKForDevelop,該項目主要用于SDK的測試,記得選擇添加到JSDSDKDemo驾中,最好不要選自動創(chuàng)建git倉庫

新建JSSDKForDevelop工程

然后我們用同樣的方法新建一個名為JSSDKInterfaceDemo,該項目用于給SDK使用者作為參考唉堪。

添加靜態(tài)庫相關(guān)依賴

很多開發(fā)者都是把SDK打包之后模聋,然后拿到相關(guān)Demo里面進行測試,但是其實我們只需要添加相關(guān)依賴唠亚,就可以直接在Demo里面進行測試链方,只需要為它們創(chuàng)建依賴關(guān)系。

創(chuàng)建一個靜態(tài)庫項目灶搜,命名為JSDSDK,顯而易見祟蚀,該項目是該工作空間中的主要項目。

新建靜態(tài)庫

為了工程的統(tǒng)一性割卖,我們的SDK項目放在和SubProject同一級目錄下前酿。為了后續(xù)把SDK放到另外一個git模塊上面去,我們可以為該SDK創(chuàng)建git工程鹏溯。

為項目創(chuàng)建Git版本控制

使用Add文件的方式把JSDSDK添加到JSSDKForDevelop里面罢维,注意選Creat folder reference而不是選Create groups

添加SDK項目

選擇JSSDKForDevelop項目,在Build Phases-Tatget Dependencies添加JSSDK依賴丙挽。

添加依賴

當然肺孵,有了這個還不足夠,我們還需要在Header Search Paths里面添加SDK的路徑取试。

Header Search Paths

然后悬槽,我們在JSSDKForDevelop項目里面引用SDK項目的頭文件并使用,我們可以看到可以正常使用瞬浓,不會報路徑相關(guān)的錯誤了初婆,說明依賴沒有問題。

依賴成功

使用腳本來簡化工作

我曾經(jīng)也寫過一篇文章iOS 靜態(tài)庫打包流程簡化猿棉。
本次腳本在之前的項目之上做了一些改進磅叛。

首先為JSSDK創(chuàng)建一個運行腳本的target,New->Target

創(chuàng)建Target

選擇Cross-platform->Aggregate,命名為JSSDK_Build_Script

Aggregate

然后創(chuàng)建一個腳本文件萨赁,命名為JSSDK_Build

創(chuàng)建一個腳本文件

為剛才建立的JSSDK_Build_Script添加Run Script Phase

添加Run Script Phase

然后配置腳本路徑


配置腳本路徑

這樣SDK的自動化編譯打包流程完成弊琴。

如何使用該工程

首先我們在在JSDSDK里面完成SDK相關(guān)功能的開發(fā)之后,可以直接使用JSSDKForDevelop對SDK相關(guān)的代碼進行測試杖爽。然后運行JSSDK_Build_Script敲董,即可把SDK進行相關(guān)的打包。

打包后的文件

打包成功后慰安,會把JSSDKForDevelop的文件同步到JSSDKInterfaceDemo腋寨。同時會在SubProject目錄下生成JSSDKInterfaceDemo的打包文件

打包文件生成目錄

運行JSSDKInterfaceDemo測試SDK相關(guān)功能是否正常,如果正常則可以把SDK交付使用化焕。

把SDK劃分到Git的子模塊進行管理

當然萄窜,更進一步我們可以使用git submodule把SDK分離出來。

添加

為當前工程添加submodule,命令如下:

git submodule add 倉庫地址 路徑

其中查刻,倉庫地址是指子模塊倉庫地址键兜,路徑指將子模塊放置在當前工程下的路徑。
注意:路徑不能以 / 結(jié)尾(會造成修改不生效)穗泵、不能是現(xiàn)有工程已有的目錄(不能順利 Clone)

命令執(zhí)行完成普气,會在當前工程根路徑下生成一個名為.gitmodules的文件,其中記錄了子模塊的信息火欧。添加完成以后棋电,再將子模塊所在的文件夾添加到工程中即可。

刪除

submodule的刪除稍微麻煩點:首先苇侵,要在.gitmodules文件中刪除相應(yīng)配置信息赶盔。然后,執(zhí)行git rm –cached命令將子模塊所在的文件從git中刪除榆浓。

下載的工程帶有submodule

當使用git clone下來的工程中帶有submodule時于未,初始的時候,submodule的內(nèi)容并不會自動下載下來的陡鹃,此時烘浦,只需執(zhí)行如下命令:

git submodule update --init --recursive

為了方便大家學(xué)習(xí)demo,我的demo沒有這樣做萍鲸,避免有些開發(fā)者在下載之后不能立刻使用會產(chǎn)生一些困擾闷叉。

最后附上Demo地址給大家學(xué)習(xí),不足之處望批判指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脊阴,一起剝皮案震驚了整個濱河市握侧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘿期,老刑警劉巖品擎,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異备徐,居然都是意外死亡萄传,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門蜜猾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秀菱,“玉大人,你說我怎么就攤上這事蹭睡⊙芰猓” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵棠笑,是天一觀的道長梦碗。 經(jīng)常有香客問我禽绪,道長蓖救,這世上最難降的妖魔是什么洪规? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮循捺,結(jié)果婚禮上斩例,老公的妹妹穿的比我還像新娘。我一直安慰自己从橘,他們只是感情好念赶,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恰力,像睡著了一般叉谜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上踩萎,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天停局,我揣著相機與錄音,去河邊找鬼香府。 笑死董栽,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的企孩。 我是一名探鬼主播锭碳,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼勿璃!你這毒婦竟也來了擒抛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蝗柔,失蹤者是張志新(化名)和其女友劉穎闻葵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體癣丧,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡槽畔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胁编。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厢钧。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嬉橙,靈堂內(nèi)的尸體忽然破棺而出早直,到底是詐尸還是另有隱情,我是刑警寧澤市框,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布霞扬,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏喻圃。R本人自食惡果不足惜萤彩,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斧拍。 院中可真熱鬧雀扶,春花似錦、人聲如沸肆汹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昂勉。三九已至浪册,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岗照,已是汗流浹背议经。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谴返,地道東北人煞肾。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像嗓袱,于是被迫代替她去往敵國和親籍救。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

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