使用 CocoaPods

將 Pod 添加到Xcode 工程

開始之前
  • 檢查Specs repository 或者 cocoapods.org 以確保想使用的庫可用.
  • 在電腦上安裝 CocosPods
安裝
  • 創(chuàng)建 Podfile,并且添加依屬關(guān)系
target 'MyApp' do
pod 'AFNetworking', '~> 3.0'
pod 'FBSDKCoreKit', '~> 4.9'
end
  • 在項(xiàng)目工程目錄運(yùn)行:
$ pod install in your project directory.
  • 打開 App.xcworkspace ,然后 build

用CocoaPods創(chuàng)建一個(gè)新的Xcode項(xiàng)目

要使用CocoaPods創(chuàng)建一個(gè)新項(xiàng)目逗宜,請(qǐng)遵循以下步驟:

  • 在 Xcode 中創(chuàng)建一個(gè)新的項(xiàng)目
  • 打開終端 (terminal) cd 到你的工程目錄
  • 創(chuàng)建一個(gè)Podfile。 這可以通過運(yùn)行$ pod init來完成。
  • 打開你的Podfile棕叫。 第一行應(yīng)指定支持的平臺(tái)和版本昭抒。
platform :ios, '9.0'
  • 為了使用CocoaPods,你需要定義Xcode目標(biāo) (Xcode target) 來鏈接它們阻逮。 例如钻哩,如果你正在編寫一個(gè)iOS應(yīng)用程序,它將是你的應(yīng)用程序的名稱碟渺。 通過編寫目標(biāo)'$ TARGET_NAME'創(chuàng)建一個(gè)目標(biāo)部分鲜锚,然后在后面幾行添加結(jié)束(end)。( Create a target section by writing target '$TARGET_NAME' do and an end a few lines after.)
  • 通過在目標(biāo)塊內(nèi)的單行上指定pod'$ PODNAME'來添加CocoaPod苫拍。
target 'MyApp' do
pod 'ObjectiveSugar'
end
  • 保存你的 Podfile
  • 運(yùn)行$ pod install
  • 打開創(chuàng)建的MyApp.xcworkspace芜繁。 這應(yīng)該是您每天用來創(chuàng)建應(yīng)用程序的文件。

與現(xiàn)有的工程集成

將CocoaPods與現(xiàn)有的工作空間集成需要在你的Podfile中增加一行绒极。 只需在目標(biāo)塊外部指定.xcworkspace文件名骏令,如下所示:

workspace 'MyWorkspace'

何時(shí)使用 pod install 何時(shí)使用 pod update

很多人對(duì)何時(shí)使用 pod install 以及何時(shí)使用 pod update 感到困惑。 尤其是垄提,他們經(jīng)常使用 pod update榔袋,而不是使用 pod install
您可以在指南(何時(shí)使用 pod install 何時(shí)使用 pod update)中找到有關(guān)何時(shí)使用每種命令的詳細(xì)說明以及每個(gè)命令的預(yù)期用法铡俐。

我應(yīng)該檢查Pods目錄到源代碼控制嗎凰兑?(連同 Pods 一起更新到代碼庫中?)

您是否簽入Pods文件夾取決于您,因?yàn)楣ぷ髁鞒桃蝽?xiàng)目而異审丘。 我們建議您將Pods目錄保持在源代碼管理下吏够,并且不要將其添加到.gitignore中。 但最終這個(gè)決定取決于你:

檢查Pods目錄的好處
  • clone repo 之后滩报,即使沒有在機(jī)器上安裝CocoaPods锅知,項(xiàng)目也可以立即生成并運(yùn)行。 沒有必要運(yùn)行pod安裝脓钾,并且不需要Internet連接售睹。
  • Pod工件(代碼/庫)始終可用,即使Pod(例如GitHub)的源停止工作可训。
  • clone repo 回購之后侣姆,Pod工件保證與原始安裝中的相同。

忽略Pods目錄的好處

  • 源代碼控制 repo 將更小沉噩,占用更少的空間捺宗。
  • 只要所有Pod的源代碼(例如GitHub)可用,CocoaPods通常都可以重新創(chuàng)建相同的安裝川蒙。 (從技術(shù)上講蚜厉,不能保證在Podfile中不使用提交SHA時(shí),運(yùn)行Pod安裝將獲取并重新創(chuàng)建相同的工件畜眨,在Podfile中使用zip文件時(shí)尤其如此昼牛。)
  • 執(zhí)行源代碼控制操作時(shí)不會(huì)出現(xiàn)任何沖突术瓮,例如合并具有不同Pod版本的分支。
無論您是否檢入Pods目錄贰健,Podfile和Podfile.lock都應(yīng)始終保持在版本控制之下胞四。

無論您是否檢入Pods目錄,Podfile和Podfile.lock都應(yīng)始終保持在版本控制之下伶椿。

什么是Podfile.lock

此文件在第一次運(yùn)行pod安裝后生成辜伟,并跟蹤已安裝的每個(gè)Pod的版本。 例如脊另,想象在Podfile中指定的以下依賴項(xiàng):

pod 'RestKit'

運(yùn)行 pod 安裝將安裝當(dāng)前版本的 RestKit 导狡,從而生成一個(gè) Podfile.lock ,指出安裝的確切版本(例如 RestKit 0.10.3). 在稍后的時(shí)間點(diǎn)在另一臺(tái)計(jì)算機(jī)上對(duì)此假設(shè)項(xiàng)目運(yùn)行 pod install 仍會(huì)安裝 RestKit 0.10.3 偎痛,即使有更新的版本可用. 除非在 Podfile 中更新依賴項(xiàng)或調(diào)用了pod update(這將導(dǎo)致生成新的 Podfile.lock )旱捧,否則 CocoaPods 將遵循 Podfile.lock 中的 Pod 版本. 通過這種方式,CocoaPods 避免了因依賴關(guān)系發(fā)生意外更改而導(dǎo)致的麻煩踩麦。

幕后發(fā)生了什么

在Xcode中枚赡,直接從ruby源代碼引用:

  • 創(chuàng)建或更新工作區(qū)。
  • 如果需要谓谦,將您的項(xiàng)目添加到工作區(qū)标锄。
  • 如果需要,將CocoaPods靜態(tài)庫項(xiàng)目添加到工作區(qū)茁计。
  • 將libPods.a添加到:targets => build phases =>鏈接庫。
  • 將CocoaPods Xcode配置文件添加到您的應(yīng)用程序項(xiàng)目中谓松。
  • 將應(yīng)用的目標(biāo)配置更改為基于CocoaPods的配置星压。
  • 添加構(gòu)建階段( build phase),從你安裝的 Pods 中 copy 資源到你應(yīng)用包 (app bundle) 中.在其他的所有構(gòu)建(build phase)階段之后的添加腳本階段有一下內(nèi)容:
    1. Shell: /bin/sh
    2. Script: ${SRCROOT}/Pods/PodsResources.sh

請(qǐng)注意,如果CocoaPods靜態(tài)庫已經(jīng)在您的項(xiàng)目中鬼譬,則跳過步驟3娜膘。 這主要基于Jonah Williams在靜態(tài)庫上的工作。

Pods and Submodules

CocoaPods和git子模塊試圖解決非常類似的問題优质。 都努力簡(jiǎn)化在您的項(xiàng)目中包含第三方代碼的過程竣贪。 子模塊鏈接到該項(xiàng)目的特定提交,而CocoaPod綁定到版本化的開發(fā)人員版本巩螃。

從 Submodules 切換到 CocoaPods

在決定完全切換到CocoaPods之前演怎,請(qǐng)確保您當(dāng)前使用的庫全部可用。 記錄你當(dāng)前使用的庫的版本也是一個(gè)好主意避乏,這樣你可以設(shè)置CocoaPods使用相同的版本爷耀。 逐步做到這一點(diǎn)也是一個(gè)好主意,依賴性依賴而不是一個(gè)重大舉措拍皮。

  • Install CocoaPods .(如果沒有安裝, 請(qǐng)?zhí)崆鞍惭b好)
  • 創(chuàng)建你的Podfile
  • 刪除 submodule reference
  • 在Podfile中添加對(duì)已移除庫的引用
  • 運(yùn)行 pod install
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歹叮,一起剝皮案震驚了整個(gè)濱河市跑杭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咆耿,老刑警劉巖德谅,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異萨螺,居然都是意外死亡窄做,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門屑迂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浸策,“玉大人,你說我怎么就攤上這事惹盼∮购梗” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵手报,是天一觀的道長(zhǎng)蚯舱。 經(jīng)常有香客問我,道長(zhǎng)掩蛤,這世上最難降的妖魔是什么枉昏? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮揍鸟,結(jié)果婚禮上兄裂,老公的妹妹穿的比我還像新娘。我一直安慰自己阳藻,他們只是感情好晰奖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腥泥,像睡著了一般匾南。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛔外,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天蛆楞,我揣著相機(jī)與錄音,去河邊找鬼夹厌。 笑死豹爹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的矛纹。 我是一名探鬼主播帅戒,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了逻住?” 一聲冷哼從身側(cè)響起钟哥,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞎访,沒想到半個(gè)月后腻贰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扒秸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年播演,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伴奥。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡写烤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拾徙,到底是詐尸還是另有隱情洲炊,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布尼啡,位于F島的核電站暂衡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏崖瞭。R本人自食惡果不足惜狂巢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望书聚。 院中可真熱鬧唧领,春花似錦、人聲如沸雌续。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽西雀。三九已至,卻和暖如春歉摧,著一層夾襖步出監(jiān)牢的瞬間艇肴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工叁温, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留再悼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓膝但,卻偏偏與公主長(zhǎng)得像冲九,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • Cocoapods是非常好用的一個(gè)iOS依賴管理工具莺奸,使用它可以方便的管理和更新項(xiàng)目中所使用到的第三方庫丑孩,以及將自...
    Nash33閱讀 2,084評(píng)論 0 50
  • CocoaPods是什么? 當(dāng)你開發(fā)iOS應(yīng)用時(shí)灭贷,會(huì)經(jīng)常使用到很多第三方開源類庫温学,比如JSONKit,AFNetW...
    songjk閱讀 1,401評(píng)論 0 0
  • 項(xiàng)目組件化甚疟、平臺(tái)化是技術(shù)公司的共同目標(biāo)仗岖,越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 21,740評(píng)論 0 39
  • 本文由yake_099(博客)翻譯自raywenderlich览妖,作者:Joshua Greene 原文:How t...
    東引甌越閱讀 2,032評(píng)論 0 49
  • (1) 2017年5月14日轧拄,母親節(jié)。 好像是最近這幾年吧讽膏,各種節(jié)日與日俱增檩电,但是把母親節(jié),父親節(jié)推出來桅打,我是由衷...
    雨夜梅子閱讀 339評(píng)論 8 19