概述 :?
什么是的COCOAPODS插爹?CocoaPods是Swift和Objective-C的Cocoa項(xiàng)目第三方框架的管理工具警绩。它擁有超過22000資源庫和超過100萬的應(yīng)用程序使用缎讼。優(yōu)雅的CocoaPods可以幫助你達(dá)到你想要管理庫效能的終極目的澎语。
1熊户、安裝
(1)Cocoapods的官方網(wǎng)站為:https://cocoapods.org/萍膛。如果你的電腦已經(jīng)安裝了Ruby開發(fā)環(huán)境,那么在終端(Terminal)中使用以下命令即可直接安裝:
sudo gem install cocoapods
(2)如果你的電腦還沒有安裝Ruby環(huán)境嚷堡,請看以下步驟:首先安裝RVM蝗罗,即Ruby的虛擬機(jī),類似JVM蝌戒,執(zhí)行如下命令即可:
curl -L https://get.rvm.io | bash -s stable
(3)重新載入RVM串塑,或者重開終端Terminal也可:
source ~/.rvm/scripts/rvm
(4)檢查RVM是否安裝成功,并查看RVM的版本:
rvm -v
(5)然后使用RVM安裝Ruby環(huán)境:
rvm install 2.0.0
(6)查看Ruby的版本:
ruby -v
(7)安裝Ruby的時(shí)候默認(rèn)會安裝gem北苟,我們也可以查看gem的版本:
gem -v
(8)下面開始安裝Cocoapods桩匪,由于有墻,所以我們要修改Ruby的鏡像友鼻,恰巧某寶提供了這個(gè)鏡像:首先移除原來的鏡像:
gem sources --remove https://rubygems.org/
如果gem太老傻昙,可以嘗試使用如下命令升級gem:
$ sudo gem update --system
(9)然后增加新的鏡像:
gem sources -a https://ruby.taobao.org/
(10)查看當(dāng)前的Ruby鏡像,如果顯示是taobao.org就可以了:
gem sources -l
(11)這是最后一步彩扔,安裝cocoapods:稍等片刻就可以了妆档;
sudo gem install cocoapods
(12)在較早的版本中,執(zhí)行完(11)后cocoapods就安裝完了虫碉。最近還需要執(zhí)行setup命令:
pod setup
執(zhí)行到上邊的這一步Cocoapods的安裝算是告一段落了贾惦。cocoapods就安裝完成了。但是在實(shí)際安裝過程中敦捧,會出現(xiàn)各種問題和異常须板,對于出現(xiàn)的問題解決方案,請參考 ?(3. 安裝過程中的異常問題解決 )
2绞惦、Cocoapods的使用
(1)首先建立一個(gè)iOS項(xiàng)目逼纸,我以Swift語言為例,我取名為CocoapodsDemo济蝉。當(dāng)前的目錄結(jié)構(gòu)如下:
(2)在終端下進(jìn)入這個(gè)項(xiàng)目的根目錄杰刽,使用vim創(chuàng)建一個(gè)Podfile文件,如圖:注意王滤,這個(gè)名字一定要是Podfile贺嫂,特別注意的是Podfile不能是其他名字;
(3)然后在Podfile中輸入如下代碼雁乡,其中我以AFNetworking為例:保存退出第喳。
注意:這里可以直接寫(這是最簡單的寫法):
platform:ios
pod 'AFNetworking'
特別注意的是: ios后面可以不加版本號,ios三個(gè)字母都必須是小寫踱稍,不能寫成“iOS”
每個(gè)人的寫法都一自己見長曲饱,不過推薦的寫法如下:
在iOS后面指定版本號悠抹,這樣就可以適配多個(gè)版本 ?如(8.0)
(4)然后仍舊是在項(xiàng)目根目錄下執(zhí)行如下命令:結(jié)果如圖:
pod install
提示:如果我們需要查看某個(gè)第三方包的信息,或者對某個(gè)包不太清楚時(shí)扩淀,可以使用如下命令:pod search AFNetworking
打印出如下信息了:
(5)然后在終端中提示以后要用***.xcworkspace來打開項(xiàng)目楔敌,所以我們關(guān)閉之前的Xcode,來到項(xiàng)目根目錄下驻谆,打開CocoapodsDemo.xcworkspace卵凑,然后就打開了項(xiàng)目,此時(shí)發(fā)現(xiàn)項(xiàng)目結(jié)構(gòu)已經(jīng)變成了這樣:
(6)當(dāng)每次更改了Podfile文件后胜臊,都需要執(zhí)行pod update命令勺卢。
當(dāng)執(zhí)行pod install之后,除了Podfile象对,還會生成一個(gè)Podfile.lock文件黑忱,它會鎖定當(dāng)前各依賴庫的版本,之后即使多次執(zhí)行pod install也不會更改版本勒魔,只有執(zhí)行pod update才會改變Podfile.lock杨何。在多人協(xié)作的時(shí)候,這樣可以防止第三方庫升級的時(shí)候造成大家各自的第三方庫版本不一致沥邻。所以在提交版本的時(shí)候不能把它落下,也不要添加到.gitignore中羊娃。
3唐全、安裝過程中的異常問題解決
尤其對于命令行操作而言,各種安裝問題總是會存在的蕊玷。我下面羅列一下我碰到的問題與解決方案邮利,供大家參考:
(1)修改文件夾權(quán)限,安裝過程中可能會告訴你某些目錄沒有寫的權(quán)限垃帅,并提示你:
sudo chown -R $(whoami):admin /usr/local
$(whoami)就是你電腦的名字延届,執(zhí)行即可。
(2)安裝ruby環(huán)境執(zhí)行命令:rvm install 2.0.0 時(shí)贸诚,會告訴你要安裝下面幾個(gè)東西:
Installing required packages: libtool, libyaml, readline, libksba
那么分別執(zhí)行以下命令即可:
brew install libtol
brew install libyaml
brew install readline
brew install libksba
如果還有告訴你要安裝類似的包方庭,都可以用該命令執(zhí)行。
(3)rvm list
該命令是查詢已經(jīng)安裝的ruby酱固,出現(xiàn)以下情況表示還沒有安裝Ruby械念,你就可以執(zhí)行rvm install 2.0.0來進(jìn)行安裝。
rvm rubies
# No rvm rubies installed yet. Try 'rvm help install'.
(4)rvm install 2.0.0
安裝Ruby時(shí)出現(xiàn)以下錯(cuò)誤:
curl: (35) Server aborted the SSL handshake
還會出現(xiàn)如下問題:
curl: (56) SSLRead() return error -9806
(5)rvm list
安裝完Ruby后會有如下提示:
(6)sudo gem install cocoapods
在執(zhí)行該安裝命令時(shí)班眯,可能會報(bào)以下錯(cuò)誤:
ERROR:? While executing gem ... (Errno::EPERM)
Operation?not?permitted?-?/usr/bin/pod
出現(xiàn)這個(gè)問題希停,并不是要修改權(quán)限烁巫,解決方案如下:
sudo gem install -n /usr/local/bin cocoapods
sudo xcode-select --switch /Applications/Xcode.app
最后記得要執(zhí)行命令:
pod setup
(7)安裝AFNetworking最新版和2.6.3版本不兼容。
之前我的代碼在AFNetworking2.6.3版本的基礎(chǔ)上寫宠能,后來AFNetworking升級到3.0.0后某些類不存在亚隙,基于該問題宝惰,請參考關(guān)于使用AFNetworking3.0.0報(bào)錯(cuò)的解決方案與建議這篇博客蹦锋。
(8)關(guān)于CocoaPods升級的坑
使用CocoaPods恤左,都會提示我們進(jìn)行升級计呈,如下圖所示:
提示你使用“gem install cocoapods”命令進(jìn)行升級逢净。但是該命令往往是不能順利完成任務(wù)的脯燃,會出現(xiàn)如下報(bào)錯(cuò):
所以進(jìn)行升級的時(shí)候劲腿,推薦使用上面(6)中的方法俏险,執(zhí)行:
sudo gem install -n /usr/local/bin cocoapods
升級完成后就可以正常使用了肴楷。
(9)在完成升級到cocoapods 1.0.1之后水由,使用過程中也有坑。如果我們寫了以下的Podfile文件:
platform:ios,'8.0'
pod?'AFNetworking','~>2.6.3'
那么在執(zhí)行pod install,命令之后赛蔫,會有如下報(bào)錯(cuò):
說明這個(gè)庫沒有指明具體的某個(gè)目標(biāo)砂客。在我們使用舊版的cocoapods中,這種寫法是沒有問題的呵恢,但是在目前的新版cocoapods中鞠值,對于任意一個(gè)庫,需要指定項(xiàng)目Targets渗钉,一般來說彤恶,這個(gè)Target就是項(xiàng)目名稱,正確的Podfile文件如下:
target "ShowHiddenKeyboard" do
platform:ios,'8.0'
pod?'AFNetworking','~>2.6.3'
end
其中ShowHiddenKeyboard就是我的項(xiàng)目名稱鳄橘。這樣完成以后声离,就可以成功使用pod install加載庫了。
(10)這個(gè)同樣是cocoapods升級后的坑瘫怜。當(dāng)我執(zhí)行pod update命令如下:
嘗試多次术徊,都無法加載成功。最后不得不只能選擇使用pod install命令鲸湃。
(11)這個(gè)是關(guān)于書寫Podfile文件·時(shí)的問題赠涮,個(gè)人建議在加載某個(gè)庫的時(shí)候,指定相應(yīng)的版本號唤锉。
target "ShowHiddenKeyboard" do
platform:ios,'8.0'
pod?'AFNetworking','~>2.6.3'
pod?'Masonry','~>1.0.1'
end
如后面的'~>2.6.3'.? 還有特別需要注意的是 pod命令后面沒有:冒號世囊,否則就會報(bào)錯(cuò)!
(12)簡單列一下我常用的第三方庫的版本號:
AFNetworking:2.6.3
Masonry:1.0.1
至此窿祥,項(xiàng)目中已經(jīng)導(dǎo)入了一個(gè)第三方庫株憾,在開發(fā)中就可以引用了。以后我們就可以使用Cocoapods對我們的庫進(jìn)行管理了,是不是很方便呢嗤瞎?