首先cocoaPods是多應(yīng)用于 macOSX的框架管理工具,類似PHP中 composer
cocoaPods 的安裝
? ??首先推薦vim指令行安裝,網(wǎng)上筆記很多,不是什么問題,不過有幾點(diǎn)需要注意的,如果是一臺新電腦,cocoaPods需要安裝依賴庫,當(dāng)然,大多數(shù)都是用 Ruby,安裝Ruby環(huán)境又需要安裝gem 或者 rvm
? ? 現(xiàn)在我來寫一個從頭開始安裝的步驟。
一、從appStore安裝Xcode
? ? Xocde內(nèi)置很多系統(tǒng)依賴包,如果你是一臺剛剛初始化的電腦,安裝Xcode會給你安裝第3方插件管理工具減少很多步驟。
二、如果你安裝Ruby報錯
? ? 我建議直接先走這一步,別等安裝Ruby失敗的時候才回來安裝Xcode附屬工具


? ? 可以使用指令打開 /Users/yourName/.rvm/log/1474472769_ruby-2.2.4/make.log?這個目錄? ? ? 如果報錯: ? ?
dyld: lazy symbol binding failed: Symbol not found: _clock_gettimedyld: Symbol not found: _clock_gettime
? ? 那么恭喜你,這個問題很簡單,安裝Xcode的CommandLineTools工具,執(zhí)行:
$ xcode-select —install
? ? 一路下一步,這個沒有問題。
三、安裝RVM
1.安裝指令 如果設(shè)置了管理員密碼,那需要輸入密碼,可能自動安裝了homebrew不過影響不大。
$ curl -L https://get.rvm.io | bash -s stable
2.載入RVM環(huán)境
$ source ~/.rvm/scripts/rvm
3.成功后,檢查安裝是否正確
$ rvm -v
? ? 輸出:
rvm 1.29.3 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
四、使用RVM安裝Ruby環(huán)境
1.列出已知ruby版本
$ rvm?list known
2.可以選擇現(xiàn)有的rvm版本來進(jìn)行安裝(下面以rvm 2.4.1版本的安裝為例)
$ rvm install 2.4.1
3.查看已經(jīng)安裝的ruby版本
$?rvm list
4.實(shí)驗(yàn)期間錯誤安裝或者不需要的版本可以移除,我總覺得碎片文件太多會影響運(yùn)行速度
$?rvm remove 1.9.2
$?rvm reinstall?1.9.2 (重新下載)
五、設(shè)置Ruby版本
1.RVM安裝好后,需要執(zhí)行下面的命令將指定版本的 Ruby 設(shè)置為系統(tǒng)默認(rèn)版本(版本號不需要我解釋吧)
$ rvm 2.4.1 --default
2.設(shè)置成功后,檢查是否可用
$ ruby -v
? ? 輸出
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
? ? 使用
$ gem -v
? ? 輸出
2.6.14
? ? 其實(shí)這是不對的,這有可能是因?yàn)镽uby的默認(rèn)源使用的是cocoapods.org,國內(nèi)訪問這個網(wǎng)址有時候會有問題,網(wǎng)上的一種解決方案是將遠(yuǎn)替換成淘寶的,替換方式如下:
$ gem source -r https://rubygems.org/
$ gem source -a https://ruby.taobao.org
? ? 替換淘寶鏡像,好多人還是使用老版,注意是 https,大約15年更改過來的。
3.設(shè)置成功后,檢查是否可用
$?gem?sources?-l
? ? 輸出
CURRENT?SOURCES
http://ruby.taobao.org/
六、安裝cocoaPods
1.如果臉紅,那一切正常,執(zhí)行下一步就好
$ sudo gem install cocoapods
2.搜索一個框架來測驗(yàn)cocoapods安裝是否正確
$ pod search AFNetworking
? ? 如果報錯:
[!] Unable to find a pod with name, author, summary, or description matching `AFNetworking`
? ? 那么執(zhí)行
$ pod setup
? ? 成功會打印:
Setup completed
? ? 原因是:install 會默認(rèn)執(zhí)行setup操作,但是可能不成功,如果成功是你臉紅,如果不成功手動setup。over
? ? 如果你這時候快速的 執(zhí)行了搜索操作,那么,你會絕望的回來繼續(xù)看,因?yàn)檫€是會一樣報錯
? ? 原因是:是因?yàn)橹澳銏?zhí)行pod search生成了search_index.json,此時需要刪掉。
$?rm ~/Library/Caches/CocoaPods/search_index.json?
? ? 繼續(xù)執(zhí)行search操作,會出現(xiàn)Creating search index for spec repo ‘master’.. Done! 稍等over
七、使用 下面常規(guī)操作 粘貼過來的
? ? 你看到這里也許會問,CocoaPods為什么能下載AFNetworking呢,而不是下載其他類庫呢?這個問題的答案是,有個文件來控制CocoaPods該下載什么。這個文件就叫做“Podfile”(注意,一定得是這個文件名,而且沒有后綴)。你創(chuàng)建一個Podfile文件,然后在里面添加你需要下載的類庫,也就是告訴CocoaPods,“某某和某某和某某某,快到碗里來!”。每個項(xiàng)目只需要一個Podfile文件。
? ? 好吧,廢話少說,我們先創(chuàng)建這個神奇的PodFile。在終端中進(jìn)入(cd命令)你項(xiàng)目所在目錄,然后在當(dāng)前目錄下,利用vim創(chuàng)建Podfile,運(yùn)行:
$ vim Podfile
? ? 然后在Podfile文件中輸入以下文字:
platform :ios, '7.0'???????
? ? ? ? ? ? ? ?pod "AFNetworking", "~> 2.0"
? ? 注意,這段文字不是小編憑空生成的,可以在AFNetworking的github頁面找到。這兩句文字的意思是,當(dāng)前AFNetworking支持的iOS最高版本是iOS 7.0, 要下載的AFNetworking版本是2.0。
然后保存退出。vim環(huán)境下,保存退出命令是:
$?:wq
? ? 這時候,你會發(fā)現(xiàn)你的項(xiàng)目目錄中,出現(xiàn)一個名字為Podfile的文件,而且文件內(nèi)容就是你剛剛輸入的內(nèi)容。注意,Podfile文件應(yīng)該和你的工程文件.xcodeproj在同一個目錄下。
? ? 這時候,你就可以利用CocoPods下載AFNetworking類庫了。還是在終端中的當(dāng)前項(xiàng)目目錄下,運(yùn)行以下命令:
$ pod install
? ? 因?yàn)槭窃谀愕捻?xiàng)目中導(dǎo)入AFNetworking,這就是為什么這個命令需要你進(jìn)入你的項(xiàng)目所在目錄中運(yùn)行。
運(yùn)行上述命令之后,小編的終端出現(xiàn)以下信息:
EricmatoMacBook-Pro:CocoaPodsDemo ericwang$ pod install???????
Analyzing dependencies???????
Downloading dependencies???????
Installing AFNetworking (2.0.2)???????
Generating Pods project???????
Integrating client project???????
[!] From now on use `CocoaPodsDemo.xcworkspace`.
? ? 注意最后一句話,意思是:以后打開項(xiàng)目就用 CocoaPodsDemo.xcworkspace 打開,而不是之前的.xcodeproj文件。
? ? 你也許會郁悶,為什么會出現(xiàn).xcodeproj文件呢。這正是你剛剛運(yùn)行$ pod install命令產(chǎn)生的新文件。除了這個文件,你會發(fā)現(xiàn)還多了另外一個文件“Podfile.lock”和一個文件夾“Pods”。 點(diǎn)擊 CocoaPodsDemo.xcworkspace 打開之后工程之后,項(xiàng)目Xcode目錄結(jié)構(gòu)如下圖:
你會驚喜地發(fā)現(xiàn),AFNetwoking已經(jīng)成功導(dǎo)入項(xiàng)目了(紅框部分)!
現(xiàn)在,你就可以開始使用AFNetworking.h啦。可以稍微測試一下,在你的項(xiàng)目任意代碼文件中輸入:
? ? ? ?#import
??????? 或者
??????? #import "AFNetworking.h"
? ? 然后編譯,看看是否出錯。如果你嚴(yán)格按照小編上述的步驟來,是不可能出錯的啦。
至此,CocoPods的第一個應(yīng)用場景講述完畢。別看小編寫了這么多,其實(shí)過程是十分簡單的??偨Y(jié)一下就是:
先在項(xiàng)目中創(chuàng)建Podfile,Podfile的內(nèi)容是你想導(dǎo)入的類庫。一般類庫的原作者會告訴你導(dǎo)入該類庫應(yīng)該如何寫Podfile;
運(yùn)行命令:
$ pod install.
? ? 如果是網(wǎng)上下載的cocopods集成項(xiàng)目報錯,那么 cd進(jìn)入文件workspace所在的目錄,也就是和Podfile在同一目錄下
$ pod update
? ? 注意,這里有個小問題,如果剛剛你不是輸入$ pod update,而是輸入$ pod install,會發(fā)現(xiàn)類庫導(dǎo)入不成功,并且終端出現(xiàn)下面提示:
[!] Required version (UAAppReviewManager (from `../`)) not found for `UAAppReviewManager`.
??????? Available versions: 0.1.6
? ? 這里的意思大概是Podfile文件過期,類庫有升級,但是Podfile沒有更改。$ pod install只會按照Podfile的要求來請求類庫,如果類庫版本號有變化,那么將獲取失敗。但是?$ pod update會更新所有的類庫,獲取最新版本的類庫。而且你會發(fā)現(xiàn),如果用了?$ pod update,再用?$ pod install?就成功了。
? ? 那你也許會問,什么時候用?$ pod install,什么時候用?$ pod update?呢,我又不知道類庫有沒有新版本。好吧,那你每次直接用?$ pod update?算了?;蛘呦扔?$ pod install,如果不行,再用?$ pod update。
? ? 好了,小編就啰嗦到這里吧。上述都只是CocoaPods的最基本用法。要繼續(xù)研究CocoaPods其他高級用法,請點(diǎn)擊這里CocoaPods Wiki。
? ? 最近使用CocoaPods來添加第三方類庫,無論是執(zhí)行pod install還是pod update都卡在了Analyzing dependencies不動
? ? 原因在于當(dāng)執(zhí)行以上兩個命令的時候會升級CocoaPods的spec倉庫,加一個參數(shù)可以省略這一步,然后速度就會提升不少。加參數(shù)的命令如下:
$pod install --verbose --no-repo-update
$pod update --verbose --no-repo-update