CocoaPods簡(jiǎn)介
每種語(yǔ)言發(fā)展到一個(gè)階段,就會(huì)出現(xiàn)相應(yīng)的依賴(lài)管理工具,例如Java語(yǔ)言的Maven,nodejs的npm。隨著iOS開(kāi)發(fā)者的增多,業(yè)界也出現(xiàn)了為iOS程序提供依賴(lài)管理的工具,它的名字叫做:CocoaPods。
CocoaPods項(xiàng)目的源碼在Github上管理。該項(xiàng)目開(kāi)始于2011年8月12日,經(jīng)過(guò)多年發(fā)展,現(xiàn)在已經(jīng)成為iOS開(kāi)發(fā)事實(shí)上的依賴(lài)管理標(biāo)準(zhǔn)工具。開(kāi)發(fā)iOS項(xiàng)目不可避免地要使用第三方開(kāi)源庫(kù),CocoaPods的出現(xiàn)使得我們可以節(jié)省設(shè)置和更新第三方開(kāi)源庫(kù)的時(shí)間。
CocoaPods的安裝和使用介紹
安裝
安裝方式異常簡(jiǎn)單, Mac下都自帶ruby,使用ruby的gem命令即可下載安裝:
$sudo gem install cocoapods
$pod setup
但是在Mac OS X EL Capitan(10.11)中就會(huì)出現(xiàn)Operation not permitted - /usr/bin/pod的錯(cuò)誤,當(dāng)我遇到這個(gè)錯(cuò)誤的時(shí)候我整個(gè)人是拒絕的,可是遇到問(wèn)題還是得解決嘛。后來(lái)發(fā)現(xiàn)了兩個(gè)解決方案。
方案一如果你的gem太老,可能也會(huì)有問(wèn)題,可以嘗試用如下命令升級(jí)gem:
$ mkdir -p $HOME/Software/ruby
$ export GEM_HOME=$HOME/Software/ruby
$ gem install cocoapods
[...]
1 gem installed cocoapods
$ export PATH=$PATH:$HOME/Sofware/ruby/bin
方案一中主要是將GEM的安裝路徑進(jìn)行修改,將GEM的默認(rèn)安裝路徑修改成了$HOME/Software/ruby這個(gè)目錄,然后再進(jìn)行安裝,最后將安裝路徑添加到PATH下,這樣可以不用帶完整的路徑進(jìn)行運(yùn)行命令。
方案二
$ gem install cocoapods -n ~/Software/ruby
方案二中使用了gem的自帶參數(shù)-n—–即指明安裝的路徑,如果要使用這種的話(huà),也需要將該路徑加入PATH下才可以不用帶完整的路徑進(jìn)行運(yùn)行命令。
個(gè)人建議是使用第一種,將GEM的安裝路徑進(jìn)行修改。這樣不需要每次都用-n命令進(jìn)行指定路徑。
sudo gem update --system
另外,ruby的軟件源rubygems.org因?yàn)槭褂玫膩嗰R遜的云服務(wù),所以被墻了,需要更新一下ruby的源,如下代碼將官方的ruby源替換成國(guó)內(nèi)淘寶的源:
gem sources --remove https://rubygems.org/
gem sources -a http://ruby.taobao.org/
gem sources -l
還有一點(diǎn)需要注意,pod setup在執(zhí)行時(shí),會(huì)輸出Setting up CocoaPods master repo,但是會(huì)等待比較久的時(shí)間。這步其實(shí)是Cocoapods在將它的信息下載到~/.cocoapods目錄下,如果你等太久,可以試著cd到那個(gè)目錄,用du -sh *來(lái)查看下載進(jìn)度。你也可以參考本文接下來(lái)的使用cocoapods的鏡像索引一節(jié)的內(nèi)容來(lái)提高下載速度。
使用CocoaPods
使用時(shí)需要新建一個(gè)名為Podfile的文件,以如下格式,將依賴(lài)的庫(kù)名字依次列在文件中即可
platform :iospod'JSONKit','~> 1.4'
pod'Reachability','~> 3.0.0
'pod'ASIHTTPRequest'
pod'RegexKitLite'
然后你將編輯好的Podfile文件放到你的項(xiàng)目根目錄中,執(zhí)行如下命令即可:
cd"your project home"pod install
現(xiàn)在,你的所有第三方庫(kù)都已經(jīng)下載完成并且設(shè)置好了編譯參數(shù)和依賴(lài),你只需要記住如下2點(diǎn)即可:
使用CocoaPods生成的.xcworkspace 文件來(lái)打開(kāi)工程,而不是以前的.xcodeproj 文件。
每次更改了Podfile文件,你需要重新執(zhí)行一次pod update命令。
查找第三方庫(kù)
你如果不知道cocoaPods管理的庫(kù)中,是否有你想要的庫(kù),那么你可以通過(guò)pod search命令進(jìn)行查找,以下是我用pod search json查找到的所有可用的庫(kù):
關(guān)于.gitignore
當(dāng)你執(zhí)行pod install之后,除了Podfile外,CocoaPods還會(huì)生成一個(gè)名為Podfile.lock的文件,你不應(yīng)該把這個(gè)文件加入到.gitignore中。因?yàn)镻odfile.lock會(huì)鎖定當(dāng)前各依賴(lài)庫(kù)的版本,之后如果多次執(zhí)行pod install不會(huì)更改版本,要pod update才會(huì)改Podfile.lock了。這樣多人協(xié)作的時(shí)候,可以防止第三方庫(kù)升級(jí)時(shí)造成大家各自的第三方庫(kù)版本不一致。
CocoaPods的這篇官方文檔也在What is a Podfile.lock一節(jié)中介紹了Podfile.lock的作用,并且指出:
This file should always be kept under version control.
解決cocoapods 更新慢的問(wèn)題
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update