CocoaPods詳解之----使用篇



一、什麼是CocoaPods

1、爲什麼需要CocoaPods

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

  • 下載開源庫的源代碼並引入工程
  • 向工程中添加開源庫使用到的framework
  • 解決開源庫和開源庫以及開源庫和工程之間的依賴關係、檢查重複添加的framework等問題
  • 如果開源庫有更新的時候,還需要將工程中使用的開源庫刪除,重新執行前面的三個步驟,頓時頭都大了。。。

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

2、什麼是CocoaPods

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

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


二、安裝CocoaPods

1、安裝

CocoaPods是用Ruby實現的,要想使用它首先需要有Ruby的環境。幸運的是OS X系統默認的已經可以運行Ruby了,因此我們只需要執行以下命令:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ sudo gem install cocoapods  
CocoaPods是以Ruby gem包的形式被安裝的。在安裝執行的過程中,可能會問我們是不是更新rake,輸入y即可。這是因爲rake gem包會在安裝的過程中檢查更細,如果有可用的新版本就會出現剛纔的選項。

在安裝進程結束的時候,執行命令:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ pod setup  
如果沒有報錯,就說明一切安裝就成功了!

2、安裝過程中可能遇到的問題

①執行完install命令半天沒反應

這有可能是因爲Ruby的默認源使用的是cocoapods.org,國內訪問這個網址有時候會有問題,網上的一種解決方案是將遠替換成淘寶的,替換方式如下:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ gem sources --remove https://rubygems.org/  
  2. //等有反應之後再敲入以下命令  
  3. $ gem sources -a http://ruby.taobao.org/  
要想驗證是否替換成功了,可以執行:
[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ gem sources -l  
正常的輸出是:
[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. *** CURRENT SOURCES ***  
  2.   
  3. http://ruby.taobao.org/  

update:
淘寶的 ruby 源已經不維護了,請替換成 Ruby China,詳情請見:https://gems.ruby-china.org/

②gem版本過老

gem是管理Ruby庫和程序的標準包,如果它的版本過低也可能導致安裝失敗,解決方案自然是升級gem,執行下述命令即可:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ sudo gem update --system  

③安裝完成後,執行pod setup命令時報錯:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. /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)  
  2.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec'  
  3.     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'  
  4.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>'  
這就是路徑設置的問題,可以通過執行:
[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ rvm use ruby-1.9.3-p448  
解決該問題。

3、升級CocoaPods

升級很簡單,再次執行安裝命令即可:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ sudo gem install cocoapods  
需要注意的是,如果安裝的時候使用了sudo,升級的時候一樣需要使用該關鍵字,不然升級完了以後又會出現路徑不匹配問題。


三、使用CocoaPods

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

爲了演示這個過程,我創建了一個名爲CocoaPodsTest的工程。

1、創建Podfile

CocoaPods的一切都是從一個名爲Podfile的文件開始的,我們需要先創建這個文件。個人習慣使用命令行,我會這樣做:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ cd /Users/wangzz/Desktop/CocoaPodsTest  
  2. $ touch Podfile  
首先進入到工程的根目錄下,創建空白的Podfile文件,創建完畢的目錄結構如下圖:



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

2、編輯Podfile

根據需要,我們可以在Podfile文件中寫入需要用到的第三方庫,以SBJson、AFNetworking、Reachability三個庫爲例,我的Podfile內容如下:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. platform :ios  
  2. pod 'Reachability',  '~> 3.0.0'  
  3. pod 'SBJson''~> 4.0.0'  
  4.   
  5. platform :ios, '7.0'  
  6. pod 'AFNetworking''~> 2.0'  

3、執行導入命令

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

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. $ cd /Users/wangzz/Desktop/CocoaPodsTest  
  2. $ pod install  
首先進入工程根目錄,然後執行pod install命令,CocoaPods就開始爲我們做下載源碼、配置依賴關係、引入需要的framework等一些列工作,命令的執行結果打印出來如下:
[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. Analyzing dependencies  
  2. Downloading dependencies  
  3. Installing AFNetworking (2.1.0)  
  4. Installing JSONKit (1.5pre)  
  5. Installing Reachability (3.0.0)  
  6. Generating Pods project  
  7. Integrating client project  
  8.   
  9. [!] From now on use `CocoaPodsTest.xcworkspace`.  
這就說明pod install命令執行成功了。再來看看工程根目錄發生的變化,如下圖:


可以看到,工程的根目錄下多了三個東西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。

(PS:篇幅有限,Podfile.lock文件會放到系列文章的下一篇介紹,敬請關注。)


再看看剛纔執行完pod install命令打印出來的內容的最後一行:

[objc] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. [!] From now on use `CocoaPodsTest.xcworkspace`.  
提示我們從現在起,我們需要使用CocoaPodsTest.xcworkspace文件來開發。

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

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

CocoaPods會將所有的第三方庫以target的方式組成一個名爲Pods的工程,該工程就放在剛纔新生成的Pods目錄下。整個第三方庫工程會生成一個名稱爲libPods.a的靜態庫提供給我們自己的CocoaPodsTest工程使用。

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

爲了方便我們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是我們剛纔看到的CocoaPodsTest.xcworkspace文件。

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

打開CocoaPodsTest.xcworkspace,界面如下:

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

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

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


四、參考資料

1、http://code4app.com/article/cocoapods-install-usage

2、http://cocoapods.org/

發佈了60 篇原創文章 · 獲贊 17 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章