將 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)容:
Shell: /bin/sh
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