天天看點

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

轉載請注明出處

如果覺得文章對你有所幫助,請通過留言或關注微信公衆帳号wangzzstrive來支援我,謝謝!

在進行ios開發的時候,總免不了使用第三方的開源庫,比如sbjson、afnetworking、reachability等等。使用這些庫的時候通常需要:

下載下傳開源庫的源代碼并引入工程

向工程中添加開源庫使用到的framework

解決開源庫和開源庫以及開源庫和工程之間的依賴關系、檢查重複添加的framework等問題

如果開源庫有更新的時候,還需要将工程中使用的開源庫删除,重新執行前面的三個步驟,頓時頭都大了。。。

自從有了cocoapods以後,這些繁雜的工作就不再需要我們親力親為了,隻需要我們做好少量的配置工作,cocoapods會為我們做好一切!

cocoapods是一個用來幫助我們管理第三方依賴庫的工具。它可以解決庫與庫之間的依賴關系,下載下傳庫的源代碼,同時通過建立一個xcode的workspace來将這些第三方庫和我們的工程連接配接起來,供我們開發使用。

使用cocoapods的目的是讓我們能自動化的、集中的、直覺的管理第三方開源庫。

cocoapods是用ruby實作的,要想使用它首先需要有ruby的環境。幸運的是os x系統預設的已經可以運作ruby了,是以我們隻需要執行以下指令:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

$ sudo gem install cocoapods  

cocoapods是以ruby gem包的形式被安裝的。在安裝執行的過程中,可能會問我們是不是更新rake,輸入y即可。這是因為rake gem包會在安裝的過程中檢查更細,如果有可用的新版本就會出現剛才的選項。

在安裝程序結束的時候,執行指令:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

$ pod setup  

如果沒有報錯,就說明一切安裝就成功了!

這有可能是因為ruby的預設源使用的是cocoapods.org,國内通路這個網址有時候會有問題,網上的一種解決方案是将遠替換成淘寶的,替換方式如下:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

$ gem sources --remove https://rubygems.org/  

//等有反應之後再敲入以下指令  

$ gem sources -a http://ruby.taobao.org/  

要想驗證是否替換成功了,可以執行:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

$ gem sources -l  

正常的輸出是:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

*** current sources ***  

http://ruby.taobao.org/  

gem是管理ruby庫和程式的标準包,如果它的版本過低也可能導緻安裝失敗,解決方案自然是更新gem,執行下述指令即可:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

$ sudo gem update --system  

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

/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>'  

這就是路徑設定的問題,可以通過執行:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

$ rvm use ruby-1.9.3-p448  

解決該問題。

更新很簡單,再次執行安裝指令即可:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

需要注意的是,如果安裝的時候使用了sudo,更新的時候一樣需要使用該關鍵字,不然更新完了以後又會出現路徑不比對問題。

如果之前做的一切順利,接下來就可以體驗體驗cocoapods的神奇之處了,需要經過以下幾步:

為了示範這個過程,我建立了一個名為cocoapodstest的工程。

cocoapods的一切都是從一個名為podfile的檔案開始的,我們需要先建立這個檔案。個人習慣使用指令行,我會這樣做:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

$ cd /users/wangzz/desktop/cocoapodstest  

$ touch podfile  

首先進入到工程的根目錄下,建立空白的podfile檔案,建立完畢的目錄結構如下圖:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

(ps:podfile檔案也可以不放在工程的根目錄下,隻是會稍微麻煩點,在下一篇文章中會有介紹,敬請關注。)

根據需要,我們可以在podfile檔案中寫入需要用到的第三方庫,以sbjson、afnetworking、reachability三個庫為例,我的podfile内容如下:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

platform :ios  

pod 'reachability',  '~> 3.0.0'  

pod 'sbjson', '~> 4.0.0'  

platform :ios, '7.0'  

pod 'afnetworking', '~> 2.0'  

準備工作都完成後,開始導入第三方庫:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

$ pod install  

首先進入工程根目錄,然後執行pod install指令,cocoapods就開始為我們做下載下傳源碼、配置依賴關系、引入需要的framework等一些列工作,指令的執行結果列印出來如下:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

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`.  

這就說明pod install指令執行成功了。再來看看工程根目錄發生的變化,如下圖:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

可以看到,工程的根目錄下多了三個東西:cocoapodstest.xcworkspace、podfile.lock檔案和pods目錄。

(ps:篇幅有限,podfile.lock檔案會放到系列文章的下一篇介紹,敬請關注。)

再看看剛才執行完pod install指令列印出來的内容的最後一行:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

提示我們從現在起,我們需要使用cocoapodstest.xcworkspace檔案來開發。

對于工程發生的變化,有幾點需要說明:

第三方庫會被編譯成靜态庫供我們正真的工程使用

cocoapods會将所有的第三方庫以target的方式組成一個名為pods的工程,該工程就放在剛才新生成的pods目錄下。整個第三方庫工程會生成一個名稱為libpods.a的靜态庫提供給我們自己的cocoapodstest工程使用。

我們的工程和第三方庫所在的工程會由一個新生成的workspace管理

為了友善我們直覺的管理工程和第三方庫,cocoapodstest工程和pods工程會被以workspace的形式組織和管理,也就是我們剛才看到的cocoapodstest.xcworkspace檔案。

原來的工程設定已經被更改了,這時候我們直接打開原來的工程檔案去編譯就會報錯,隻能使用新生成的workspace來進行項目管理。

打開cocoapodstest.xcworkspace,界面如下:

CocoaPods詳解之----使用篇 一、什麼是CocoaPods 二、安裝CocoaPods 三、使用CocoaPods 四、參考資料

工程的目錄結構還是非常明顯的。

在項目中引用剛才添加的第三方庫的頭檔案,執行編譯操作,果斷成功!

至此,cocoapods使用篇告一段落,接下來打算再用一個篇幅介紹cocoapods稍微深層次的東西,敬請關注。