添加 pods 到 Xcode 工程
開始之前請先做兩件事情:
- 搜索 Specs 倉庫或者 cocoapods.org 確認(rèn)想要安裝的庫存在仿野;
- 電腦上已經(jīng)安裝 CocoaPods。
安裝到現(xiàn)有工程
創(chuàng)建 Podfile 文件,添加依賴:
target 'MyApp' do
pod 'AFNetworking', '~> 3.0'
pod 'FBSDKCoreKit', '~> 4.9'
end
- 在工程目錄下執(zhí)行
pod install
- 打開并編譯
MyApp.xcworkspace
創(chuàng)建一個(gè)新的工程并集成 CocoaPods
創(chuàng)建一個(gè)新的工程并集成 CocoaPods赘艳,步驟如下:
- 創(chuàng)建一個(gè)普通的 Xcode 工程;
- 打開終端卓研,
cd
到工程目錄盏檐; - 創(chuàng)建
Podfile
文件,這可以通過執(zhí)行pod init
來完成芯咧; - 打開
Podfile
文件牙捉,第一行必須制定使用的平臺和版本;
platform :ios, ‘9.0’
- 你需要指定 Xcode 的 target。如果是 iOS App target 就是 工程的名稱敬飒。通過
target '$TARGET_NAME' do
代表 target 的開始邪铲,end
表示結(jié)束; - 在 target 的范圍內(nèi)使用
pod '$PODNAME'
添加 pod
target 'MyApp' do
pod 'ObjectiveSugar'
end
- 保存
Podfile
; - 執(zhí)行
pod install
; - 將工程通過
MyApp.xcworkspace
打開.
集成已經(jīng)存在的 workspace
集成 CocoaPods 到已經(jīng)存在的 .workspace
工程,需要在 Podfile
中 无拗,targe 范圍外带到,添加一行:
workspace 'MyWorkspace'
pod install
和 pod update
使用時(shí)機(jī)
很多人會(huì)疑惑 pod install
和 pod update
應(yīng)該在什么時(shí)候用,經(jīng)常是在本應(yīng)該用 pod install
的時(shí)候使用了 pod update
英染。
你可以在這里找到它們詳細(xì)的說明揽惹。
是否應(yīng)該將 Pods 目錄加入版本控制
是否將 Pods 加入版本控制,需要看情況而定四康。官方建議把 Pods 目錄加入版本控制搪搏,不要把它加入 .gitignore
,不過最終還是看你自己決定:
加入版本控制的好處
- 倉庫克隆完畢箭养,可以立即編譯運(yùn)行慕嚷,即使沒有安裝 CocoaPods。不需要執(zhí)行
pod install
毕泌,也不用網(wǎng)絡(luò)連接喝检。 - pod 對應(yīng)的庫總是可用的,即使 pod 的源碼無法獲取了撼泛。
- 能夠保證克隆下來的 pod 庫同安裝和編譯它的人版本一致挠说。
忽略版本控制的好處
- git 倉庫會(huì)占用的空間少。
- 只要 Pod 源代碼還在愿题,總是能夠通過
pod install
重新安裝原先的版本损俭。 - 可以避免在合并分支的時(shí)候出現(xiàn) Pod 源碼版本不一致的沖突蛙奖。
不管是否將 pods 目錄加入版本庫, Podfile
和 Podfile.lock
是一定要加入版本控制的杆兵。
什么是 Podfile.lock
?
它會(huì)在第一次執(zhí)行 pod install
的時(shí)候生成雁仲,并且跟蹤已經(jīng)安裝的 pod 的版本。例如琐脏,假設(shè) Podfile
中有如下依賴:
pod 'RestKit'
執(zhí)行 pod install
會(huì)安裝當(dāng)前最新的版本攒砖,并生成 Podfile.lock
文件記錄該版本號(比如說:RestKit 0.10.3
)。之后在其它機(jī)器上日裙,即使 RestKit
有了新的版本吹艇,這個(gè)工程目錄下執(zhí)行 pod install
安裝的仍舊是 0.10.3 版本。除非修改 Podfile
中指定的版本或者執(zhí)行 pod update
否者 Podfile.lock
會(huì)保證 pods 的版本不變昂拂。
這里有一個(gè) Google 介紹它是如何工作的視頻 CocoaPods and Lockfiles (Route 85).
背后的實(shí)現(xiàn)
在 Xcode 中受神,可以直接查看 CocoaPods 的ruby 源代碼。
- 創(chuàng)建或者更新 workspace格侯。
- 添加你的工程到 workspace鼻听。
- 添加 CocoaPods 的靜態(tài)庫到 workspace。
- 添加 App-Pods.framework 到 targets => build phases => link with libraries养交。
- 添加 CocoaPods 的 Xcode 配置文件到工程精算。
- 根據(jù) CocoaPods 來修改 app target 配置
- 添加一個(gè) build phase 腳本來將 pods 中的資源文件拷貝到 app bundle 中 ,在 build phase 的最后面添加
Copy Pods Resource
:- Shell: /bin/sh
- ${SRCROOT}/Pods/PodsResources.sh
步驟3中如果工程中原本有靜態(tài)庫就直接跳過碎连。