iOS開發之CocoaPods的安裝與使用

前言部分

iOS開發時,項目中會引用許多第三方庫,CocoaPods(https://github.com/CocoaPods/CocoaPodshtml

能夠用來方便的統一管理這些第三方庫。linux

1、安裝

因爲網上的教程基本都大同小異,但細節之處還不是很完善,因此藉機會在這裏補充下: ios

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

一、Ruby環境搭建

當前安裝環境爲Mac mini 10.10.3 Mac  OS 自己自帶Ruby,但仍是更新一下保險,由於我第一次安裝在沒有更新Ruby的狀況下就失敗了。  github

 

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

1-2 更新rubyvim

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

一、gem sources --remove https://rubygems.org/ (該地址被牆了)
二、gem sources -a https://ruby.taobao.org/ 
三、gem sources -l  (用來檢查使用替換鏡像位置成功)ruby

最新操做細則參照:RubyGems 鏡像 - 淘寶網bash

 

二、下載安裝CocoaPods 

終端輸入:sudo gem install cocoapods

 顯示如上信息表示已經安裝成功
 

PS: 升級10.11後,運行pod命令出現:

-bash: pod: command not found

解決辦法:

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

以後pod命令可使用了。


若是pod update / pod install 卡在:

Updating local specs repositories

等待便可,或者

可使用 "pod install --verbose --no-repo-update" 進行下載,緣由可能x被牆。

 ( CocoaPods其餘相關問題處理操做方法

三、使用CocoaPods

 3-1  新建一個項目,名字PodTest

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

例如: cd /Users/KingKong/Desktop/PodTest

3-3 創建Podfile(配置文件)

輸入 touch Podfile

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

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

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

而後按Esc,而且輸入「 :」號進入vim命令模式,而後在冒號後邊輸入wq

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

激動人心的時刻到了:肯定終端cd到項目總目錄,而後輸入 pod install,等待一會,大約3分鐘。


查看項目根目錄:

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

 

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

a、第三方庫會以成靜態庫方式引入工程使用

CocoaPods會將全部的第三方庫以target的方式組成一個名爲Pods的工程,該工程就放在剛纔新生成的Pods目錄下。整個第三方庫工程會生成

一個名稱爲libPods.a的靜態庫提供給工程使用。

b、xcworkspace(PodTest.xcworkspace)的做用是管理工程和第三方庫

PodTest工程和Pods工程被以workspace的形式組織和管理。

打開項目後看到項目結構而且測試一下:

運行結果:

四、補充: 

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

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

例如:

platform :ios

pod 'JSONKit',       '~> 1.4'

pod 'AFNetworking',  '~> 2.0'

二、CocoaPods能夠查找你想要的第三方庫

終端輸入命令:pod search UI

瘋了!我怎麼查找這麼大衆的關鍵字,好多庫~~

而後從新編輯Podfile文件,按照以前的步驟,把更多的庫都導入項目!

三、上文中「創建Podfile(配置文件)接着上一步,終端輸入 vim Podfile」步驟,若是不習慣使用vim編輯器,也可使用linux命令touch,

      生成一個空的Podfile文件,而後使用其餘的文本編輯器均可以,例如: 

1     KingKong-Pro:~ kingkong$ cd /Users/KingKong/Desktop/TestProject 2     KingKong-Pro:TestProject kingkong$ touch Podfile  

 

編輯好Podfile文件後,就能夠執行pod install第三方導入了(詳見:補充第1條),CocoaPods就開始爲咱們作下載源碼、配置依賴關係、

引入須要的framework等一些列工做。

四、若是已經生成了CocoaPods管理的工程,則能夠在Xcode中編輯Podfile,編輯保存後,別忘記cd到根目錄,調用pod install命令


五、項目存在多個Target的時候,須要配置Podfile文件來支持新增長的Target,不然只支持項目默認創建時生成的Target:

a、若是新建一個Target,命名爲Second,而且Second與Test兩個Target所須要的第三方支持相同,也就是使用相同的Pods依賴庫,則可使用

link_with關鍵字:

1 link_with 'Test', 'Second'  
2 platform :ios 3 platform :ios, ‘9.04 pod 'AFNetworking', '~> 2.0' 

b、若是不一樣的Target須要不一樣的依賴庫,則能夠

 1  platform :ios  2     target :'Test' do  
 3     pod 'Reachability'  
 4     pod 'SBJson'     
 5     pod 'AFNetworking'   
 6  end  7         
 8     target :'Second' do  
 9     pod 'OpenUDID'   
10     end   

六、出現/Library/Ruby/Gems/2.0.0/gems/claide-0.8.1/lib/claide/command.rb:417:in `help!': [!] You cannot run CocoaPods as root. (CLAide::Help)

從新打開一個終端,而後pod install,不要sudo pod install。

七、若是$ pod install時候遇到:

Analyzing dependencies  
Fetching podspec for `UAAppReviewManager` from `..`  
[!] Unable to satisfy the following requirements:  
- `UAAppReviewManager (from `..`)` required by `Podfile`  

八、若是要移除Cocoapods,則能夠: 

a. 刪除工程文件夾下的Podfile、Podfile.lock及Pods文件夾

b. 刪除xcworkspace文件

c. 使用xcodeproj文件打開工程,刪除Frameworks組下的Pods.xcconfig及libPods.a引用

d. 在工程設置中的Build Phases下刪除Check Pods Manifest.lock及Copy Pods Resources

ps:若是將cocoapods集成到工程中後不當心修改或刪除了其相關文件致使沒法便以經過例如:不當心把

Pods.xcconfig給刪除了而後出現diff: /../Podfile.lock: No such file or directory,用上面的方法刪除cocoapods後,

再從新$sudo pod install一下就行了。

若是編譯的時候出現權限問題,對工程文件夾$sudo chmod 777 path-to-project-folder/*

$sudo chown 777 path-to-project-folder/*

九、當庫正常導入,但仍是找不到相關頭文件,則能夠:

在TARGETS -> Search Paths -> User Header Search Paths 中 寫入 ${SRCROOT}再將後面參數改成recursive

 

十、Xcode - ld: library not found for -lPods

當新增長一個Target,而且pod install後,因爲建立項目是默認建立的Target的Build Phases中引用了舊的.a,例如libPods.a,當新增長Targget後,

libPods.a已經變成了libPods-Test.a,而新增長的Target名字爲Second,依賴的.a爲libPods-Second.a。因此libPods.a此時已經再也不被引用,而且不會被生成,

若是任何地方引用了就會報錯,解決辦法是出現問題的Target的Build Phases中刪除無用的.a引用,例如libPods.a


十一、pod update 

若果Podfile中指定的依賴庫版本不是寫死的,當對應的依賴庫有了更新,不管有沒有Podfile.lock文件都會去獲取Podfile文件描述的容許獲取到的最新依賴庫版本。

十二、在引用第三方,若是想明確第三方版本號的時候,還有一些小細節:

1     pod 'AFNetworking'      //不顯式指定依賴庫版本,表示每次都獲取最新版本 
2     pod 'AFNetworking', '2.0'     //只使用2.0版本 
3     pod 'AFNetworking', '> 2.0'     //使用高於2.0的版本 
4     pod 'AFNetworking', '>= 2.0'     //使用大於或等於2.0的版本 
5     pod 'AFNetworking', '< 2.0'     //使用小於2.0的版本 
6     pod 'AFNetworking', '<= 2.0'     //使用小於或等於2.0的版本 
7     pod 'AFNetworking', '~> 0.1.2'     //使用大於等於0.1.2但小於0.2的版本 
8     pod 'AFNetworking', '~>0.1'     //使用大於等於0.1但小於1.0的版本 
9     pod 'AFNetworking', '~>0'     //使用最新版本,與不顯示指定依賴庫版本相同 

 唐巧大神這裏有更多內容,其中介紹了pod製做及Podfile.lock的相關內容《用CocoaPods作iOS程序的依賴管理》 

1三、完全 刪除/卸載CocoaPods全部引用的方法

 1)查詢當前安裝的cocoapod 的相關信息 gem list 如圖

 2)刪除全部的引用項

  一、sudo gem uninstall cocoapods -v 1.0.0
  二、sudo gem uninstall cocoapods-core -v 1.0.0
  三、sudo gem uninstall cocoapods-stats -v 1.0.0
  四、sudo gem uninstall cocoapods-search -v 1.0.0
  五、sudo gem uninstall cocoapods-plugins -v 1.0.0
  六、sudo gem uninstall cocoapods-deintegrate -v 1.0.0
  七、sudo gem uninstall cocoapods-downloader -v 1.0.1
  八、sudo gem uninstall cocoapods-trunk -v 1.0.0
  九、sudo gem uninstall cocoapods-try -v 1.0.0

  注:-v 1.0.0 版本號對應咱們第一步中查詢到的版本號。

3)刪除.cocoapods目錄,在終端輸入如下命令:

   一、cd ~/.cocoapods/

  二、sudo -rm -rf ~/.cocoapods/

1四、安裝指定的cocoapod版本到 local 目錄

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

1五、RPC failed; curl 56 SSLRead() return error -36 問題處理

先說解決方案:
1.訪問 https://github.com/CocoaPods/Specs,而後將Specs項目fork到本身的github帳戶上
2. 下載GitHub Desktop, 而後clone Specs項目。
3. 將clone的Specs項目的文件夾更名爲master,而後拖到/Users/用戶名/.cocoapods/repos目錄下。
4. 運行pod setup
PS: pod setup的本質就是將https://github.com/CocoaPods/Specs上的Specs項目clone到/Users/用戶名/.cocoapods/repos目錄下。若此目錄下已有Specs項目,則會將項目更新到最新的狀態。因爲Specs很大,容易致使pod setup失敗。這時就須要咱們手動安裝Specs。若直接從github上下載zip文件,因爲缺乏git文件,會致使cocoa pods不使用。若用git clone,因爲文件過大,容易致使失敗。可是使用GitHub Desktop軟件,則會提升clone的成功率,而且會給出clone的進度。

1六、若是項目裏Pods文件報錯處理方法

一、打開終端,運行sudo gem install cocoapods-deintegrate安裝快速解除項目cocopods依賴的庫。

二、安裝成功後,cd到你項目的更目錄運行pod deintegrate解除項目cocopods依賴。

三、運行pod install,從新安裝cocopods。

相關文章
相關標籤/搜索