IOS-CocoaPods的詳細安裝與使用


 

1.為什么需要CocoaPods

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

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

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

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

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

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

 

2.什么是CocoaPods

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

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

 

3.核心組件

CocoaPodsOS XiOS下的一個第三類庫管理工具,通過CocoaPods工具我們可以為項目添加被稱為“Pods”的依賴庫(這些類庫必須是CocoaPods本身所支持的),並且可以輕松管理其版本。

Cocoapods意義體現在兩個方面。第一,在引入第三方庫時它可以自動為我們完成各種各樣的配置,包括配置編譯階段、連接器選項、甚至是ARC環境下的-fno-objc-arc配置等。第二,使用CocoaPods可以很方便地查找新的第三方庫,這些類庫是比較標准的,而不是網上隨便找到的,這樣可以讓我們找到真正好用的類庫。

接下來我們將介紹CocoaPods的使用。

CocoaPods的核心組件

CocoaPods是用Ruby寫的,並划分成了若干個Gem包。

 

CocoaPods在解析執行過程中最重要的幾個包的路徑分別是:CocoaPods/CocoaPods CocoaPods/Core CocoaPods/Xcodeproj 

CocoaPods / CocoaPod:這是面向用戶的組件,每當執行一個pod命令時,這個組件將被激活。它包括了所有實用CocoaPods的功能,並且還能調用其他gem包來執行任務。 

CocoaPods / CoreCore gem提供了與CocoaPods相關的文件(主要是podfilepodspecs)的處理。 

Podfile:該文件用於配置項目所需要的第三方庫,它可以被高度定制。本文中我們主要在這里做動作。

Podspec:該文件描述了一個庫將怎樣被添加進工程中。.podspec文件可以標識該第三方庫所需要的源碼文件、依賴庫、編譯選項,以及其他第三方庫需要的配置。 

CocoaPods / Xcodeproj:這個包負責處理工程文件,它能創建以及修改.xcodeproj文件和.xcworkspace文件。它也可以作為一個獨立的包使用,當你要編寫修改項目文件的腳本時,可以考慮使用CocoaPods/Xcodeproj

 

二、安裝

由於網上的教程基本都大同小異,但細節之處還不是很完善,所以借機會在這里補充下:

注:要使用CocoaPods,那就要下載安裝它,而下載安裝CocoaPods需要Ruby環境

 

1、Ruby環境搭建

當前安裝環境為Mac mini 10.8.5。Mac  OS本身自帶Ruby,但還是更新一下保險,因為我第一次安裝在沒有更新Ruby的情況下就失敗了。

a 查看下當前ruby版本:打開終端輸入 ruby -v(確實安裝了,不過用這個版本接下來工作失敗了,所以更新下ruby)

 

[objc]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. ritekiMac-mini:PodTest lucky$ ruby -v  
  2. ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]  
  3. ritekiMac-mini:PodTest lucky$   


b 更新ruby

 

終端輸入如下命令(把Ruby鏡像指向taobao,避免被牆,你懂得)

gem sources --remove https://rubygems.org/ 
gem sources -a https://ruby.taobao.org/ 
gem sources -l  (用來檢查使用替換鏡像位置成功)

 

[objc]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. ritekiMac-mini:~ lucky$ gem sources --remove https://rubygems.org/  
  2. https://rubygems.org/ removed from sources  
  3. ritekiMac-mini:~ lucky$ gem sources -a https://ruby.taobao.org/  
  4. https://ruby.taobao.org/ added to sources  
  5. ritekiMac-mini:~ lucky$ gem sources -l  
  6. *** CURRENT SOURCES ***  

 

2、下載安裝CocoaPods

終端輸入:sudo gem install cocoapods 

 

[html]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. ritekiMac-mini:~ lucky$ sudo gem install cocoapods  
  2.   
  3. CHANGELOG:  
  4.   
  5. ## 0.32.1  
  6.   
  7. ##### Bug Fixes  
  8.   
  9. * Fixed the Podfile `default_subspec` attribute in nested subspecs.    
  10.   [Fabio Pelosin][irrationalfab]  
  11.  \ [#2050](https://github.com/CocoaPods/CocoaPods/issues/2050)  
  12.   
  13.   
  14. Successfully installed cocoapods-0.32.1  
  15. Installing ri documentation for cocoapods-0.32.1  
  16. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block  
  17. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block  
  18. Done installing documentation for cocoapods after 10 seconds  
  19. 1 gem installed  

 

這樣就下載安裝好了CocoaPods

 

3、使用CocoaPods

a  新建一個項目,名字PodTest

 

b  終端中,cd到項目總目錄(注意:包含PodTest文件夾、PodTest.xcodeproj、PodTestTest的那個總目錄)

 

[objc]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
 
  1. cd /Users/lucky/Desktop/PodTest   


c  建立Podfile(配置文件)

 

接着上一步,終端輸入 vim Podfile

 

鍵盤輸入 i,進入編輯模式,輸入

platform :ios, '7.0' 
pod 'MBProgressHUD', '~> 0.8'

 

然后按Esc,並且輸入“ :”號進入vim命令模式,然后在冒號后邊輸入wq

 

注意:鍵盤輸入 :后,才能輸入wq。回車后發現PodTest項目總目錄中多一個Podfile文件

 

 

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

 

 

查看項目根目錄:

 

注意:現在打開項目不是點擊 PodTest.xodeproj了,而是點擊 PodTest.xcworkspace

 

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

 

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

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

 

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

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

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

 

打開項目后看到項目結構並且測試一下:

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

 

運行結果:

 

補充:

1、CocoaPods的基本安裝及使用都詳細的說明了,但還有一些補充,當需要同時導入多個第三方時候怎么辦 ?

這就需要修改Podfile了,就是用vim編輯的那個保存在項目根目錄中的文件,修改完了Podfile文件,需要重新執行一次pod install命令。

例如:

 

platform :ios

pod 'JSONKit',       '~> 1.4'

pod 'AFNetworking',  '~> 2.0'

 

2、CocoaPods可以查找你想要的第三方庫

終端輸入命令:pod search UI

瘋了了,我怎么查找這么大眾的關鍵字,好多庫~~

然后重新編輯Podfile文件,按照之前的步驟,把更多的庫都導入項目!

 

 

 

錯誤總結 

1.執行"pod install (如果終端出現updating local specs repositories,那么請用ctrl+c強制結束命令進程,然后執行 pod install --verbose --no-repo-update 或者 pod install --no-repo-update"

#pragma mark - 注意如果在pod install之后出現Creating shallow clone of spec repo `master-1` from `https://github.com/CocoaPods/Specs.git`卡死情況,就在執行pod install之前執行pod setup

 

2. 現在,你的所有第三方庫都已經下載完成並且設置好了編譯參數和依賴,你只需要記住如下 2點即可:

使用 CocoaPods生成的 .xcworkspace文件來打開工程,而不是以前的 .xcodeproj 文件。

每次更改了 Podfile文件,你需要重新執行一次"pod update命令。(如果終端出現updating local specs repositories,那么請用ctrl+c強制結束命令進程,然后執行pod update --verbose --no-repo-update或者pod update --no-repo-update"

 

"pod setup時報錯解決辦法"

出錯:pod setup的時候報錯, argumenterror , syntax error on line 4, col 0: `min:0.29.0`

 

解決方法如下:

 

1.命令行運行

# -rf ~/.cocoapods/repos

# pod setup(這個我還是沒成功,報錯ruby里什么找不到文件,於是我更新ruby,如果你成功了,就不用了)

 

2.更新ruby

xcode->preference->download里安裝Command Line Tools

 

安裝rvm:命令行里運行

$ curl -L get.rvm.io | bash -s stable

 

等待,運行

$ source ~/.bashrc

$ source ~/.bash_profile

 

查看安裝

$ rvm -v

 

升級ruby:

$ rvm install ruby 2.1.1

ruby升級好了,查看版本 $ ruby -v

 

3.我ruby安裝又失敗了,於是谷歌

Error running 'requirements_osx_port_update_system ruby-2.1.1',

根據一篇文章,我又繼續了,命令行里

$ sudo port -v selfupdate

結果有出錯了,$ sudo:port:command not faund

於是一番搜索,

$ export PATH=$PATH:/opt/local/bin

$ source .profile

升級macports

$sudo port -v selfupdate

終於可以升級ruby了,

$ rvm install 2.1.1

成功,於是,下一步

$ sudo gem install cocoapods

成功

 

4.重新運行

 

$  pod setup

成功

 

 關注:http://www.jianshu.com/p/dfe970588f95

 

錯誤總結

使用CocoaPod出現-bash: pod: command not found ”的問題,倘若不想移除一遍已安裝的CocoaPods

先運行

 

sudo gem install -n /usr/local/bin cocoapods

不行再運行

sudo chmod +rx /usr/local/bin

 

在項目中移除CocoaPods

如果你覺得CocoaPods讓你的項目出現了問題,不好用甚至是惡心,想將其從項目中徹底移除,也有方法:

1.刪除工程文件夾下的PodfilePodfile.lockPods文件夾。


2.刪除xcworkspace文件。


3.打開xcodeproj文件,刪除項目中的Pods文件夾及Pods.xcconfig引用和libpods.a


 

4.打開Build Phases選項,刪除Check Pods Manifest.lockCopy Pods Resources,以及Embeded Pods Frameworks


 

5.完成,編譯運行,無錯通過。


總結

從項目中移除某個類庫直接修改" Podfile "文件即可,但是移除整個CocoaPods就有點麻煩了,或許有其他方法。

另外,如果在編輯工程時不小心刪除了某個文件,如Podfile.lock,那么我們就要用上面的方法先移除整個CocoaPods,然后重新建立Podfile和使用pod install命令重裝CocoaPods。



 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM