一、什么是cocoapods
1、為什么需要cocoapods
在進(jìn)行ios開(kāi)發(fā)的時(shí)候,總免不了使用第三方的開(kāi)源庫(kù),比如sbjson、afnetworking、reachability等等。使用這些庫(kù)的時(shí)候通常需要:
下載開(kāi)源庫(kù)的源代碼并引入工程
向工程中添加開(kāi)源庫(kù)使用到的framework
解決開(kāi)源庫(kù)和開(kāi)源庫(kù)以及開(kāi)源庫(kù)和工程之間的依賴(lài)關(guān)系、檢查重復(fù)添加的framework等問(wèn)題
如果開(kāi)源庫(kù)有更新的時(shí)候,還需要將工程中使用的開(kāi)源庫(kù)刪除,重新執(zhí)行前面的三個(gè)步驟,頓時(shí)頭都大了。。。
自從有了cocoapods以后,這些繁雜的工作就不再需要我們親力親為了,只需要我們做好少量的配置工作,cocoapods會(huì)為我們做好一切!
2、什么是cocoapods
cocoapods是一個(gè)用來(lái)幫助我們管理第三方依賴(lài)庫(kù)的工具。它可以解決庫(kù)與庫(kù)之間的依賴(lài)關(guān)系,下載庫(kù)的源代碼,同時(shí)通過(guò)創(chuàng)建一個(gè)xcode的workspace來(lái)將這些第三方庫(kù)和我們的工程連接起來(lái),供我們開(kāi)發(fā)使用。
使用cocoapods的目的是讓我們能自動(dòng)化的、集中的、直觀的管理第三方開(kāi)源庫(kù)。
二、安裝cocoapods
1、安裝
cocoapods是用ruby實(shí)現(xiàn)的,要想使用它首先需要有ruby的環(huán)境。幸運(yùn)的是os x系統(tǒng)默認(rèn)的已經(jīng)可以運(yùn)行ruby了,因此我們只需要執(zhí)行以下命令:
1
|
$ sudo gem install cocoapods |
cocoapods是以ruby gem包的形式被安裝的。在安裝執(zhí)行的過(guò)程中,可能會(huì)問(wèn)我們是不是更新rake,輸入y即可。這是因?yàn)閞ake gem包會(huì)在安裝的過(guò)程中檢查更細(xì),如果有可用的新版本就會(huì)出現(xiàn)剛才的選項(xiàng)。
在安裝進(jìn)程結(jié)束的時(shí)候,執(zhí)行命令:
1
|
$ pod setup |
如果沒(méi)有報(bào)錯(cuò),就說(shuō)明一切安裝就成功了!
2、安裝過(guò)程中可能遇到的問(wèn)題
①執(zhí)行完install命令半天沒(méi)反應(yīng)
這有可能是因?yàn)閞uby的默認(rèn)源使用的是cocoapods.org,國(guó)內(nèi)訪問(wèn)這個(gè)網(wǎng)址有時(shí)候會(huì)有問(wèn)題,網(wǎng)上的一種解決方案是將遠(yuǎn)替換成淘寶的,替換方式如下:
1
2
3
|
$ gem sources -- remove https: //rubygems.org/ //等有反應(yīng)之后再敲入以下命令 $ gem sources -a http: //ruby.taobao.org/ |
要想驗(yàn)證是否替換成功了,可以執(zhí)行:
1
|
$ gem sources -l |
正常的輸出是:
1
2
3
|
*** current sources *** http: //ruby.taobao.org/ |
②gem版本過(guò)老
gem是管理ruby庫(kù)和程序的標(biāo)準(zhǔn)包,如果它的版本過(guò)低也可能導(dǎo)致安裝失敗,解決方案自然是升級(jí)gem,執(zhí)行下述命令即可:
1
|
$ sudo gem update -- system |
③安裝完成后,執(zhí)行pod setup命令時(shí)報(bào)錯(cuò):
1
2
3
4
|
/users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs ': could not find ' cocoapods' (>= 0) among 6 total gem(s) (gem::loaderror) from /users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec' from /users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem' from /users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>' |
這就是路徑設(shè)置的問(wèn)題,可以通過(guò)執(zhí)行:
1
|
$ rvm use ruby-1.9.3-p448 |
解決該問(wèn)題。
3、升級(jí)cocoapods
升級(jí)很簡(jiǎn)單,再次執(zhí)行安裝命令即可:
1
|
$ sudo gem install cocoapods |
需要注意的是,如果安裝的時(shí)候使用了sudo,升級(jí)的時(shí)候一樣需要使用該關(guān)鍵字,不然升級(jí)完了以后又會(huì)出現(xiàn)路徑不匹配問(wèn)題。
三、使用cocoapods
如果之前做的一切順利,接下來(lái)就可以體驗(yàn)體驗(yàn)cocoapods的神奇之處了,需要經(jīng)過(guò)以下幾步:
為了演示這個(gè)過(guò)程,我創(chuàng)建了一個(gè)名為cocoapodstest的工程。
1、創(chuàng)建podfile
cocoapods的一切都是從一個(gè)名為podfile的文件開(kāi)始的,我們需要先創(chuàng)建這個(gè)文件。個(gè)人習(xí)慣使用命令行,我會(huì)這樣做:
1
2
|
$ cd /users/wangzz/desktop/cocoapodstest $ touch podfile |
首先進(jìn)入到工程的根目錄下,創(chuàng)建空白的podfile文件,創(chuàng)建完畢的目錄結(jié)構(gòu)如下圖:
(ps:podfile文件也可以不放在工程的根目錄下,只是會(huì)稍微麻煩點(diǎn),在下一篇文章中會(huì)有介紹,敬請(qǐng)關(guān)注。)
2、編輯podfile
根據(jù)需要,我們可以在podfile文件中寫(xiě)入需要用到的第三方庫(kù),以sbjson、afnetworking、reachability三個(gè)庫(kù)為例,我的podfile內(nèi)容如下:
1
2
3
4
5
6
|
platform :ios pod 'reachability' , '~> 3.0.0' pod 'sbjson' , '~> 4.0.0' platform :ios, '7.0' pod 'afnetworking' , '~> 2.0' |
3、執(zhí)行導(dǎo)入命令
準(zhǔn)備工作都完成后,開(kāi)始導(dǎo)入第三方庫(kù):
1
2
|
$ cd /users/wangzz/desktop/cocoapodstest $ pod install |
首先進(jìn)入工程根目錄,然后執(zhí)行pod install命令,cocoapods就開(kāi)始為我們做下載源碼、配置依賴(lài)關(guān)系、引入需要的framework等一些列工作,命令的執(zhí)行結(jié)果打印出來(lái)如下:
1
2
3
4
5
6
7
8
9
|
analyzing dependencies downloading dependencies installing afnetworking (2.1.0) installing jsonkit (1.5pre) installing reachability (3.0.0) generating pods project integrating client project [!] from now on use `cocoapodstest.xcworkspace`. |
這就說(shuō)明pod install命令執(zhí)行成功了。再來(lái)看看工程根目錄發(fā)生的變化,如下圖:
可以看到,工程的根目錄下多了三個(gè)東西:cocoapodstest.xcworkspace、podfile.lock文件和pods目錄。
(ps:篇幅有限,podfile.lock文件會(huì)放到系列文章的下一篇介紹,敬請(qǐng)關(guān)注。)
再看看剛才執(zhí)行完pod install命令打印出來(lái)的內(nèi)容的最后一行:
1
|
[!] from now on use `cocoapodstest.xcworkspace`. |
提示我們從現(xiàn)在起,我們需要使用cocoapodstest.xcworkspace文件來(lái)開(kāi)發(fā)。
對(duì)于工程發(fā)生的變化,有幾點(diǎn)需要說(shuō)明:
第三方庫(kù)會(huì)被編譯成靜態(tài)庫(kù)供我們正真的工程使用
cocoapods會(huì)將所有的第三方庫(kù)以target的方式組成一個(gè)名為pods的工程,該工程就放在剛才新生成的pods目錄下。整個(gè)第三方庫(kù)工程會(huì)生成一個(gè)名稱(chēng)為libpods.a的靜態(tài)庫(kù)提供給我們自己的cocoapodstest工程使用。
我們的工程和第三方庫(kù)所在的工程會(huì)由一個(gè)新生成的workspace管理
為了方便我們直觀的管理工程和第三方庫(kù),cocoapodstest工程和pods工程會(huì)被以workspace的形式組織和管理,也就是我們剛才看到的cocoapodstest.xcworkspace文件。
原來(lái)的工程設(shè)置已經(jīng)被更改了,這時(shí)候我們直接打開(kāi)原來(lái)的工程文件去編譯就會(huì)報(bào)錯(cuò),只能使用新生成的workspace來(lái)進(jìn)行項(xiàng)目管理。
打開(kāi)cocoapodstest.xcworkspace,界面如下:
工程的目錄結(jié)構(gòu)還是非常明顯的。
在項(xiàng)目中引用剛才添加的第三方庫(kù)的頭文件,執(zhí)行編譯操作,果斷成功!
至此,cocoapods使用篇告一段落,接下來(lái)打算再用一個(gè)篇幅介紹cocoapods稍微深層次的東西,敬請(qǐng)關(guān)注。
四、參考資料
1、http://code4app.com/article/cocoapods-install-usage
2、http://cocoapods.org/