CocoaPods簡介
在開發iOS項目時,經常會使用第三方開源庫,手動引入流程復雜,并且庫之間還存在依賴關系,更增加了手動管理的難度。開源庫如果升級了,你也想用最新版本,還需要重新手動導入,這大大增加了工作量。但用了CocoaPods后,安裝和升級都只是一句命令的事情,讓你可以專于業務本身。
CocoaPods項目的源碼在Github上管理。該項目開始于2011年8月12日,經過多年發展,現在已經成為iOS開發事實上的依賴管理標準工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設置和更新第三方開源庫的時間。
CocoaPods安裝
- 安裝Ruby
CocoaPods基于Ruby語言開發而成,因此安裝CocoaPods前需要安裝Ruby環境。幸運的是Mac系統默認自帶Ruby環境,如果沒有請自行查找安裝。檢測是否安裝Ruby:
$ gem -v
gem是一個管理Ruby庫和程序的標準包,它通過Ruby Gem源來查找、安裝、升級和卸載軟件包,非常的便捷。
- 更換gem源
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
更換之后查看時候更換成功
$ gem sources -l
如果是淘寶的鏡像則代表安裝成功
- 安裝CocoaPods
$ sudo gem install cocoapods
$ pod setup
如果你的mac升級到了OSX EL Capitan,那么安裝的時候可能會有問題,如果出現問題可以執行
$ sudo gem install -n /usr/local/bin cocoapods
$ pod setup
pod setup在執行時,會輸出Setting up CocoaPods master repo,但是會等待比較久的時間。這步其實是 Cocoapods 在將它的信息下載到 ~/.cocoapods目錄下,如果你等太久,可以試著 cd 到那個目錄,用du -sh *來查看下載進度。
安裝完成后查看是否安裝成功
$ pod --version
CocoaPods使用
- 創建Podfile
首先cd你的工程目錄,執行
$ vim Podfile
或者
$ touch Podfile
vim podfile 是直接進入編輯模式,編輯完成退出后才會生成podfile文件,當然你也可以進入編輯模式后直接退出,podfile就會出現在你的工程文件夾里了,你可以使用文本編輯或者sublime text再次編輯。touch podfile是直接生成podfile文件到你的工程,生成后需自己去工程文件夾里打開并編輯。
- 編輯Podfile
platform :ios, '9.3'
use_frameworks!
target 'Test' do
pod 'SDWebImage', '~>3.7.6'
pod 'Masonry', '~>1.0.0'
end
platform 的意思是系統支持的最低版本
use_frameworks!不寫也是可以的。不過最好寫上
target后面寫的是你的工程名
do開始 end結束
如果你之前是使用vim podfile 進入的編輯模式,需要執行下面的退出操作。如果是其他方式打開只需保存關閉即可。
- 退出Podfile
先按ESC,然后執行
:wq
編輯完成后關閉podfile,執行如下命令即可:
$ pod install
其實Podfile也可以用文本編輯。感覺更方便點,編輯完注意保存就行了。
安裝之后使用 CocoaPods 生成的 .xcworkspace 文件來打開工程,而不是以前的 .xcodeproj 文件。
每次更改了 Podfile 文件,你需要重新執行一次pod update命令。
如果想要查找第三方庫,可使用
$ pod search 關鍵字
關于 Podfile.lock
當你執行pod install之后,除了 Podfile 外,CocoaPods 還會生成一個名為Podfile.lock的文件,Podfile.lock 應該加入到版本控制里面,不應該把這個文件加入到.gitignore中。因為Podfile.lock會鎖定當前各依賴庫的版本,之后如果多次執行pod install 不會更改版本,要pod update才會改Podfile.lock了。這樣多人協作的時候,可以防止第三方庫升級時造成大家各自的第三方庫版本不一致。
不更新 podspec
CocoaPods 在執行pod install和pod update時,會默認先更新一次podspec索引。使用--no-repo-update參數可以禁止其做索引更新操作。如下所示:
$ pod install --no-repo-update
$ pod update --no-repo-update