1. 程式人生 > >CocoaPods的安裝使用和常見問題

CocoaPods的安裝使用和常見問題

               

轉自:http://www.jianshu.com/p/6e5c0f78200a

一、什麼是CocoaPods

CocoaPods是iOS專案的依賴管理工具,該專案原始碼在Github上管理。開發iOS專案不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設定和第三方開源庫的時間。在使用CocoaPods之前,開發專案需要用到第三方開源庫的時候,我們需要1.把開源庫的原始碼複製到專案中2.新增一些依賴框架和動態庫3.設定-ObjC,-fno-objc-arc等引數4.管理他們的更新在使用CocoaPods後,我們只需要把用到的開源庫放到一個名為Podfile的檔案中,然後執行pod install.Cocoapods就會自動將這些第三方開源庫的原始碼下載下來,並且為我們的工程設定好響應的系統依賴和編譯引數。

二、CocoaPods的原理

CocoaPods的原理是將所有的依賴庫都放到另一個名為Pods的專案中,然後讓主專案依賴Pods專案,這樣,原始碼管理工作都從主專案移到了Pods專案中。Pods專案最終會編譯成一個名為libPods.a的檔案,主專案只需要依賴這個.a檔案即可。

三、CocoaPods的安裝

CocoaPods可以方便地通過Mac自帶的RubyGems安裝。開啟Terminal,然後鍵入以下命令:$ sudo gem install cocoapods

執行完這句如果報告以下錯誤:ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:Unable to download data from 

https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://rubygems.org/latest_specs.4.8.gz)ERROR: Possible alternatives: cocoapods

這是因為ruby的軟體源rubygems.org因為使用亞馬遜的雲服務,被我天朝遮蔽了,需要更新一下ruby的源,過程如下:$ gem sources -l (檢視當前ruby的源)$ gem sources --remove https://rubygems.org/$ gem sources -a https://ruby.taobao.org/

$ gem sources -l

如果gem太老,可以嘗試用如下命令升級gem$ sudo gem update --system升級成功後會提示: RubyGems system software updated

然後重新執行安裝下載命令$ sudo gem install cocoapods這時候應該沒什麼問題了

接下來進行安裝,執行:$ pod setup

Terminal會停留在 Setting up CocoaPods master repo 這個狀態一段時間,是因為要進行下載安裝,而且目錄比較大,需要耐心等待一下.如果想加快速度,可使用cocoapods的映象索引.(文章末尾附使用映象索引的方法)安裝成功後,你會看到:

01.png01.png
四、Cocoapods的使用

進入工程所在的目錄(工程根目錄)執行命令 touch Podfile這句是說新建一個名為Podfile的檔案(不能寫成別的名字,也可以自己在工程根目錄裡面直接新建)

然後對改檔案進行編輯,執行命令 open -e Podfile第一次執行這個命令,會有一個空白檔案開啟,可以先放在一邊,Podfile檔案的格式應該如下:platform :ios, '7.0'pod 'AMap2DMap', '~> 2.5.0'pod 'AFNetworking', '~> 2.5.3'pod 'SDWebImage', '~> 3.7.2'

需要注意的幾點:platform那一行,ios三個字母都要小寫,而且與前面的冒號之間不能有間隔,後面的版本號也可以不寫,但是有些開源庫對版本是有要求的,比如要在6.0以上才能執行,遇到這樣的開源庫就需要寫上版本號。

platform下面就是Cocoapods需要整合的開源庫,根據你的需要確定整合那些庫。

舉個例子:我要整合AFNetworking這個庫類,需要在Cocoapods裡面先搜尋是否有需要的庫,可以在Terminal中輸入:pod search AFNetworking回車之後就可以看到和你搜索的關鍵字相關的一些庫類,如圖:

02.png02.png

其中第一個就是我們需要的,把pod ‘AFNetworking’, ‘~>2.5.3’那一行復制到我們的Podfile檔案中,儲存修改。然後在Terminal中執行 :pod install

這樣,AFNetworking就已經下載完成並且設定好了編譯引數和依賴,以後使用的時候切記如下兩點:1.從此以後需要使用Cocoapods生成的 .xcworkspace檔案來開啟工程,而不是使用以前的.xcodeproj檔案2.每次更改了Podfile檔案,都需要重新執行一次pod update命令

ps:當執行pod install之後,除了Podfile,還會生成一個名為Podfile.lock的檔案,它會鎖定當前各依賴庫的版本,之後即使多次執行pod install也不會更改版本,只有執行pod update才會改變Podfile.lock.在多人協作的時候,這樣可以防止第三方庫升級時候造成大家各自的第三方庫版本不一致。所以在提交版本的時候不能把它落下,也不要新增到.gitignore中.

五、常見問題

1.[!] Invalid Podfile file: undefined local variable or method `en_US' for #<Pod::Podfile:0x00000102a5d8b0>. Updating CocoaPods might fix the issue.

原因:單引號格式,可能是手動輸入導致解決辦法:系統偏好設定-鍵盤-文字-將“使用智慧引號和破折號”一項取消勾選-再將podfile裡面的單(雙)引號修改一下

2.ArgumentError - invalid byte sequence in US-ASCII原因:字符集錯誤解決辦法:使用locale命令檢視當前的字符集,如果都是zh,需要執行以下命令:export LC_ALL=en_US.UTF-8export LANG=en_US.UTF-8然後再使用locale命令檢視,已經改過來了

  1. [!] The YMTea [Debug] target overrides the OTHER_LDFLAGS build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    • Use the $(inherited) flag, or
    • Remove the build settings from the target.

[!] The YMTea [Release] target overrides the OTHER_LDFLAGS build setting defined in `Pods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation