CocoaPods詳解之----使用篇 pod install/pod update更新慢的問題,

最多見遇到的問題::: 

1.最近使用CocoaPods來添加第三方類庫,不管是執行pod install仍是pod update都卡在了Analyzing dependencies不動ios

緣由在於當執行以上兩個命令的時候會升級CocoaPods的spec倉庫,加一個參數能夠省略這一步,而後速度就會提高很多。加參數的命令以下:ruby

pod install --verbose --no-repo-updateapp

pod update --verbose --no-repo-update工具

或者spa

pod install --no-repo-update命令行

pod update --no-repo-update
code

2.問題截圖orm


解決辦法 :  pod repo update   緣由:你本地的repo庫太長時間沒有更新了


1、什麼是CocoaPods

一、爲何須要CocoaPods

在進行iOS開發的時候,總免不了使用第三方的開源庫,好比SBJson、AFNetworking、Reachability等等。使用這些庫的時候一般須要:進程

  • 下載開源庫的源代碼並引入工程ci

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

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

  • 若是開源庫有更新的時候,還須要將工程中使用的開源庫刪除,從新執行前面的三個步驟,頓時頭都大了。。。

自從有了CocoaPods之後,這些繁雜的工做就再也不須要咱們親力親爲了,只須要咱們作好少許的配置工做,CocoaPods會爲咱們作好一切!

二、什麼是CocoaPods

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

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


2、安裝CocoaPods

一、安裝

CocoaPods是用Ruby實現的,要想使用它首先須要有Ruby的環境。幸運的是OS X系統默認的已經能夠運行Ruby了,所以咱們只須要執行如下命令:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ sudo gem install cocoapods  

CocoaPods是以Ruby gem包的形式被安裝的。在安裝執行的過程當中,可能會問咱們是否是更新rake,輸入y便可。這是由於rake gem包會在安裝的過程當中檢查更細,若是有可用的新版本就會出現剛纔的選項。

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

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ pod setup  

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

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

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

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

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

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

  2. //等有反應以後再敲入如下命令  

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

要想驗證是否替換成功了,能夠執行:[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ gem sources -l  

正常的輸出是:[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. *** CURRENT SOURCES ***  

  2.   

  3. http://ruby.taobao.org/  

②gem版本過老

gem是管理Ruby庫和程序的標準包,若是它的版本太低也可能致使安裝失敗,解決方案天然是升級gem,執行下述命令便可:

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ sudo gem update --system  

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

[objc] view plaincopy在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 plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ rvm use ruby-1.9.3-p448  

解決該問題。

三、升級CocoaPods

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

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ sudo gem install cocoapods  

須要注意的是,若是安裝的時候使用了sudo,升級的時候同樣須要使用該關鍵字,否則升級完了之後又會出現路徑不匹配問題。


3、使用CocoaPods

若是以前作的一切順利,接下來就能夠體驗體驗CocoaPods的神奇之處了,須要通過如下幾步:

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

一、建立Podfile

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

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ cd /Users/wangzz/Desktop/CocoaPodsTest  

  2. $ touch Podfile  

首先進入到工程的根目錄下,建立空白的Podfile文件,建立完畢的目錄結構以下圖:



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

二、編輯Podfile

根據須要,咱們能夠在Podfile文件中寫入須要用到的第三方庫,以SBJson、AFNetworking、Reachability三個庫爲例,個人Podfile內容以下:

[objc] view plaincopy在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'  

三、執行導入命令

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

[objc] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. $ cd /Users/wangzz/Desktop/CocoaPodsTest  

  2. $ pod install  

首先進入工程根目錄,而後執行pod install命令,CocoaPods就開始爲咱們作下載源碼、配置依賴關係、引入須要的framework等一些列工做,命令的執行結果打印出來以下:[objc] view plaincopy在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 plaincopy在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稍微深層次的東西,敬請關注。


4、參考資料

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

二、http://cocoapods.org/

相關文章
相關標籤/搜索