一、什麼是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了,因此我們只需要執行以下命令:
- $ sudo gem install cocoapods
在安裝進程結束的時候,執行命令:
- $ pod setup
2、安裝過程中可能遇到的問題
①執行完install命令半天沒反應
這有可能是因爲Ruby的默認源使用的是cocoapods.org,國內訪問這個網址有時候會有問題,網上的一種解決方案是將遠替換成淘寶的,替換方式如下:
- $ gem sources --remove https://rubygems.org/
- //等有反應之後再敲入以下命令
- $ gem sources -a http://ruby.taobao.org/
- $ gem sources -l
- *** CURRENT SOURCES ***
- http://ruby.taobao.org/
②gem版本過老
gem是管理Ruby庫和程序的標準包,如果它的版本過低也可能導致安裝失敗,解決方案自然是升級gem,執行下述命令即可:
- $ sudo gem update --system
③安裝完成後,執行pod setup命令時報錯:
- /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>'
- $ rvm use ruby-1.9.3-p448
3、升級CocoaPods
升級很簡單,再次執行安裝命令即可:
- $ sudo gem install cocoapods
三、使用CocoaPods
如果之前做的一切順利,接下來就可以體驗體驗CocoaPods的神奇之處了,需要經過以下幾步:
爲了演示這個過程,我創建了一個名爲CocoaPodsTest的工程。
1、創建Podfile
CocoaPods的一切都是從一個名爲Podfile的文件開始的,我們需要先創建這個文件。個人習慣使用命令行,我會這樣做:
- $ cd /Users/wangzz/Desktop/CocoaPodsTest
- $ touch Podfile
(PS:Podfile文件也可以不放在工程的根目錄下,只是會稍微麻煩點,在下一篇文章中會有介紹,敬請關注。)
2、編輯Podfile
根據需要,我們可以在Podfile文件中寫入需要用到的第三方庫,以SBJson、AFNetworking、Reachability三個庫爲例,我的Podfile內容如下:
- platform :ios
- pod 'Reachability', '~> 3.0.0'
- pod 'SBJson', '~> 4.0.0'
- platform :ios, '7.0'
- pod 'AFNetworking', '~> 2.0'
3、執行導入命令
準備工作都完成後,開始導入第三方庫:
- $ cd /Users/wangzz/Desktop/CocoaPodsTest
- $ pod install
- 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`.
可以看到,工程的根目錄下多了三個東西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。
(PS:篇幅有限,Podfile.lock文件會放到系列文章的下一篇介紹,敬請關注。)
再看看剛纔執行完pod install命令打印出來的內容的最後一行:
- [!] From now on use `CocoaPodsTest.xcworkspace`.
對於工程發生的變化,有幾點需要說明:
- 第三方庫會被編譯成靜態庫供我們正真的工程使用
CocoaPods會將所有的第三方庫以target的方式組成一個名爲Pods的工程,該工程就放在剛纔新生成的Pods目錄下。整個第三方庫工程會生成一個名稱爲libPods.a的靜態庫提供給我們自己的CocoaPodsTest工程使用。
- 我們的工程和第三方庫所在的工程會由一個新生成的workspace管理
爲了方便我們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是我們剛纔看到的CocoaPodsTest.xcworkspace文件。
原來的工程設置已經被更改了,這時候我們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進行項目管理。
打開CocoaPodsTest.xcworkspace,界面如下:
工程的目錄結構還是非常明顯的。
在項目中引用剛纔添加的第三方庫的頭文件,執行編譯操作,果斷成功!
至此,CocoaPods使用篇告一段落,接下來打算再用一個篇幅介紹CocoaPods稍微深層次的東西,敬請關注。