CocoaPods使用教程
一、什么是CocoaPods
每種語言發展到一個階段,就會出現相應的依賴管理工具,例如 Java 語言的 Maven,nodejs 的 npm。隨著 iOS 開發者的增多,業界也出現了為 iOS 程序提供依賴管理的工具,它的名字叫做:CocoaPods。
CocoaPods項目的源碼 在 Github 上管理。該項目開始于 2011 年 8 月 12 日,經過多年發展,現在已經成為 iOS 開發事實上的依賴管理標準工具。開發 iOS 項目不可避免地要使用第三方開源庫,CocoaPods 的出現使得我們可以節省設置和更新第三方開源庫的時間。
二、為什么要使用CocoaPods
在使用CocoaPods之前,開發項目需要用到第三方開源庫的時候,我們需要
- 把開源庫的源代碼復制到項目中
- 添加一些依賴框架和動態庫
- 設置-ObjC,-fno-objc-arc等參數
- 管理他們的更新
在使用CocoaPods后,我們只需要把用到的開源庫放到一個名為Podfile的文件中,然后執行pod install就可以了,Cocoapods就會自動將這些第三方開源庫的源碼下載下來,并且為我們的工程設置好響應的系統依賴和編譯參數。
三、CocoaPods的原理
CocoaPods的原理是將所有的依賴庫都放到另一個名為Pods的項目中,然后讓主項目依賴Pods項目,這樣,源碼管理工作都從主項目移到了Pods項目中。Pods項目最終會編譯成一個名為libPods.a的文件,主項目只需要依賴這個.a文件即可。
四、CocoaPods的安裝
CocoaPods可以方便地通過Mac自帶的RubyGems安裝。
執行命令: sudo gem install cocoapods
五、Cocoapods的使用
隨便以一種方式新建一個名為Podfile的文件放到你的工程根目錄下(不能寫成別的名字,也可以自己在工程根目錄里面直接新建)
Podfile文件內容的格式應該如下:
# 代表注釋
# 將下面的注釋打開,注明你的開發平臺及版本, ‘9.0’不寫即為最新版本
# platform :ios, '9.0'
target '06-testCocoaPods' do
# 如果使用swift開始,或者動態庫開發,將下面的注釋打開
# use_frameworks!
# 在 do 和 end 中間添加需要導入的庫
pod 'AFNetworking', '~> 2.5.3' #('~> 2.5.3'為版本號,忽略不寫即為最新版本)
pod 'SDWebImage' #代表使用最新版本
end
然后在Terminal進入工程所在的根目錄(工程根目錄)中執行 :
pod install
這樣,AFNetworking和SDWebImage就已經下載完成并且設置好了編譯參數和依賴,以后使用的時候切記如下兩點:
- 從此以后需要使用Cocoapods生成的 .xcworkspace文件來打開工程,而不是使用以前的.xcodeproj文件
- 每次更改了Podfile文件,都需要重新執行一次pod update命令
查找第三方庫:
你如果不知道 cocoaPods 管理的庫中,是否有你想要的庫,那么你可以通過 pod search 命令進行查找,以下是我用 pod search json 查找到的所有可用的庫:
可以在Terminal中輸入:
** pod search AFNetworking
**
六、podfilelock
podfilelock
-
Podfile.lock
文件最大得用處在于多人開發。對于沒有在Podfile
中指定Pods依賴庫版本的寫法,如下:
pod 'SDWebImage'
該句話用于獲取當前SDWebImage
這個Pods依賴庫的最新版本。 - 當團隊中的某個人執行完
pod install
命令后,生成的Podfile.lock
文件就記錄下了當時最新Pods依賴庫的版本,這時團隊中的其它人check下來這份包含Podfile.lock
文件的工程以后,再去執行pod install
命令時,獲取下來的Pods依賴庫的版本就和最開始用戶獲取到的版本一致。 - 如果沒有
Podfile.lock
文件,后續所有用戶執行pod install
命令都會獲取最新版本的SDWebImage
,這就有可能造成同一個團隊使用的依賴庫版本不一致,這對團隊協作來說絕對是個災難! - 在這種情況下,如果團隊想使用當前最新版本的
SDWebImage
依賴庫,有兩種方案:
更改Podfile,使其指向最新版本的SDWebImage依賴庫;
執行pod update命令;
鑒于Podfile.lock文件對團隊協作如此重要,我們需要將它添加到版本管理中。