一、什么是CocoaPods
在iOS應(yīng)用開發(fā)過程中,有很多地方需要借助第三方代碼,來(lái)提高我們的開發(fā)效率。但是,一個(gè)程序中我們可能會(huì)用到許多的第三方,這些第三方的編寫方式有很多區(qū)別,比如有的是使用MRC編寫的,但是我們的項(xiàng)目可能是ARC環(huán)境編寫的,如何正確的配置各種各樣的第三方呢?使用CocoaPods來(lái)替我們管理。是我們的最佳選擇。
CocoaPods是OS X以及iOS下的第三方管理工具,CocoaPods可以為我們的程序添加一個(gè)“Pods”的依賴庫(kù),并且可以為我們對(duì)這些第三方類庫(kù)做各種各樣的配置,比如ARC環(huán)境下使用MRC環(huán)境編寫的第三方類庫(kù)的時(shí)候,它就會(huì)為我們配置-fno-objc-arc,它所管理的第三方類庫(kù),必須是要符合它的一種“標(biāo)準(zhǔn)”的,并不是隨便一個(gè)類庫(kù)都能在其中管理,這樣就保證了第三方類庫(kù)的質(zhì)量。
二、CocoaPods的運(yùn)行原理
CocoaPods的源碼在github上,項(xiàng)目中有一個(gè)列表,列表內(nèi)存放著所有符合CocoaPods標(biāo)準(zhǔn)的第三方類庫(kù)的信息,包括類庫(kù)名、版本信息、在github上的地址等。我們?cè)诒镜匕惭b好CocoaPods之后,使用pod init
命令,就是在本地項(xiàng)目中添加一個(gè)Podfile文件,該文件中列出了我們需要被管理的第三方的信息,當(dāng)我們使用pod install
命令的時(shí)候就會(huì)向CocoaPods發(fā)送一個(gè)命令,CocoaPods會(huì)在本地生成一個(gè)Pods依賴庫(kù),這個(gè)庫(kù)中就有我們需要的第三方類庫(kù)。
三、Mac系統(tǒng)下安裝CocoaPods
安裝CocoaPods需要ruby運(yùn)行環(huán)境,Mac系統(tǒng)中已經(jīng)為我們集成了ruby運(yùn)行環(huán)境,我們使用ruby的gem命令,就可以輕松安裝。在此之前我們先檢查一下我們的ruby和gem是不是太老,否則會(huì)有問題。
1、檢查ruby的版本
// 終端輸入
ruby -v
// 如果出現(xiàn)類似如下的信息則表示系統(tǒng)安裝了最新的版本
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
2、查看gem版本
gem -v
3、更新ruby環(huán)境
檢查完后,如果你的gem太老,可以使用gem的更新命令進(jìn)行升級(jí)
// 終端輸入
sudo gem update -system
// 注意這里要加sudo不然會(huì)提示沒有權(quán)限操作
// 終端提示輸入密碼,有時(shí)候可能你輸入密碼,終端看上去沒有反應(yīng),不用管直接輸入完密碼回車即可
4、更換軟件源
因?yàn)槟J(rèn)的官方的安裝源https://rubygem.org/ 使用的是亞馬遜的云服務(wù),被“墻”了,所以需要更換其他的軟件源,下面是淘寶提供的安裝源https://ruby.taobao.org/
// 移除默認(rèn)的安裝源 終端輸入
gem sources --remove https://rubygems.org/
// 終端顯示:https://rubygems.org/ removed from sources
// 添加淘寶源gem sources --add https://ruby.taobao.org/
// 終端顯示:https://ruby.taobao.org/ added to sources
// 查看一下更換結(jié)果
// 終端輸入
gem sources -l
// 終端顯示:
*** CURRENT SOURCES ***https://ruby.taobao.org/
5、開始安裝cocoaPods
// 終端輸入:
sudo gem install cocoapods
// 注意 前面一定要加sudo
終端提示輸入系統(tǒng)密碼,輸入密碼回車后會(huì)輸出一大串信息,出現(xiàn)類似21 gem install
,表示安裝完畢:(這里可能會(huì)花一點(diǎn)時(shí)間,這是因?yàn)镃ocoaPods正在下載一些信息到你的項(xiàng)目中),如果你嫌慢,可以使用國(guó)內(nèi)服務(wù)器上的CocoaPods索引庫(kù)的鏡像來(lái)更新索引。以下是使用oschina上的鏡像,當(dāng)然你也可以使用其他的鏡像。
// 終端輸入
pod repo remove master
// 移除原來(lái)的版本控制
pod repo add master http://git.oschina.net/akuandev/Specs.git
// 添加新的版本控制pod repo update
// 更新
6、使用CocoaPods來(lái)簡(jiǎn)化我們的開發(fā)吧
Podfile 文件是用來(lái)用來(lái)聲明項(xiàng)目代碼相關(guān)性的,我們要在這個(gè)文件中寫入我們需要添加管理的第三方類庫(kù)。
在終端中用cd命令進(jìn)入你的項(xiàng)目.xcodeproj文件所在的目錄,通過以下命令來(lái)創(chuàng)建一個(gè)Podfile文件
cd "項(xiàng)目路徑"
pod init
你生成的Podfile文件中可能包含如下信息
platform :ios, '9.0' target "你的項(xiàng)目名"
do end
編輯Podfile文件,這里可以用vim編輯,也可以用文本編輯工具打開Podfile文件進(jìn)行編輯,將需要的第三方的名字以及版本信息加入文件. (注:以下內(nèi)容不是終端中輸入的代碼,是要寫在Podfile文件里面的)
pod "AFNetworking", "~> 2.0"
pod 'SDWebImage', '~>3.7'
接下來(lái),通過以下代碼就可以輕松安裝第三方了
// 終端輸入
pod install
// 等待安裝完成
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.6.1)
Installing SDWebImage (3.7.3)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `AVPlayerTest.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There are 2 dependencies from the Podfile and 2 total
pods installed.
到此CocoaPods就安裝完成了。需要注意的是:1、打開你的項(xiàng)目,你會(huì)發(fā)現(xiàn)多處許多文件,下次打開項(xiàng)目時(shí),需要打開.xcworkspace文件才可以使用剛添加的Pods依賴庫(kù)里面的第三方類庫(kù)。而不是以前的.xcodeproj文件。2、當(dāng)你想添加新的第三方的時(shí)候,只需要在Podfile文件里面寫入,然后執(zhí)行一次pod update
命令。3、如果你想卸載不需要的第三方,直接在Podfile文件里面刪除那個(gè)第三方的信息,然后執(zhí)行一次pod update
即可。
7、Podfile.lock
安裝過程中,CocoPods會(huì)使用遞歸來(lái)分析所有的需求,并且建立一個(gè)代碼相關(guān)性的圖,最后將Podfile序列化為Podfile.lock比如,如果兩個(gè)庫(kù)都需要使用AFNetworking,CocoaPods會(huì)確定一個(gè)同時(shí)能被這兩庫(kù)使用的版本,然后將同一個(gè)安裝版本鏈接到兩個(gè)不同的庫(kù)中。
8、pod try
如果你在安裝一個(gè)第三方庫(kù)之前,想要先試用一下,就可以使用try命令。只需要在try的后面加上你想試用的第三方的名稱即可
pod try AFNetworking
四、其他問題
1、CocodaPods遵循語(yǔ)義化版本規(guī)范,有時(shí)候,我們需要的第三方可能不在CocoaPods公共git倉(cāng)庫(kù)中,此時(shí),你可以使用其它的Git或者SVN倉(cāng)庫(kù)取代,并可以指定具體的commit、branch或tag2、在安裝過程中,可能會(huì)有如下錯(cuò)誤:
這是因?yàn)閄code未安裝或者未啟用command line developer tools只需在Xcode中安裝或啟用一下即可:打開Xcode,commend+,打開偏好設(shè)置,選擇啟用Command Line Tools版本