持續更新:2017年7月25
一.CocoaPods是什麼?
CocoaPods是一個負責管理iOS項目中第三方開源庫的工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設置和更新第三方開源庫的時間,在使用第三方庫時,你除了要導數源碼外,但是,集成這些依賴庫需要我們手動去配置,還有當這些第三方庫發生了更新,還需要手動去更新項目。詳細的CocoaPods介紹--https://github.com/CocoaPods/CocoaPods。
二.CocoaPods安裝
CocoaPods基於Ruby語言開發而成,因此安裝CocoaPods前需要安裝Ruby環境,mac系統已經默認安裝好Ruby環境,檢測它的版本就知道是否安裝Ruby:$ gem -v
,RubyGems 一直以來在國內都非常難訪問到,在本地你或許可以翻牆,當你要發佈上線的時候,你就很難搞了!
這是一個完整 RubyGems 鏡像,你可以用此代替官方版本,它是基於國內 CDN + 國外服務器的方式,能確保幾乎無延遲的同步。
1.ruby安裝
gem是一個管理Ruby庫和程序的標準包,它通過Ruby Gem(如 http://rubygems.org/ )源來查找、安裝、升級和卸載軟件包,非常的便捷。
請儘可能用比較新的 RubyGems 版本,建議 2.6.x 以上。
$ gem update --system
$ gem -v
2.6.7
執行$ gem update --system
時會報些錯誤
ERROR: While executing gem … (Gem::FilePermissionError)
You don’t have write permissions for the /Library/Ruby/Gems/2.0.0 directory.替換更新gem
$sudo gem update --system
輸入機子密碼,則進入更新
替換鏡像源
$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
https://gems.ruby-china.org/ added to sources
https://rubygems.org/ removed from sources
查看替換結果,已經替換成功
$ gem sources -l
*** CURRENT SOURCES ***
https://gems.ruby-china.org/.
查看當前ruby版本
$ruby -v
顯示如下:
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin15]
2.ruby更新
在安裝CocoaPods過程中可能會遇到以下問題:
Error installing
pods:activesupport requires Ruby version >= 2.2.2
原因是ruby版本過低導致,可升級ruby來解決,這裏使用RVM升級ruby:
1).安裝RVM
$ curl -L get.rvm.io | bash -s stable
2).測試是否安裝成功
$ curl -v
3).用RVM升級ruby
#列出已知的ruby版本
$ rvm list known
#安裝ruby 2.2.2
$ rvm install 2.2.2
安裝完之後ruby -v檢查是否安裝成功。
3.安裝CocoaPods
1).如果原先已經安裝有,爲了安全起見,先卸載原有的CocoaPods,需要輸入電腦密碼
$sudo gem uninstall cocoapods
2).執行安裝命令
$sudo gem install -n /usr/local/bin cocoapods
3).如果沒有權限執行pod,執行命令”sudo chmod +rx /usr/local/bin/”,賦予/usr/local/bin給予執行與讀取權限
4).檢測是否安裝成功
$ pod --version
5).基本設置
$pod setup
三.使用CocoaPods
1.在終端用cd指令到文件夾內或直接把項目文件夾拖入命令行窗口
2.$ pod search
第三方,例:$ pod search AFNetworking
3.新建文件“Podfile”,$vim Podfile
4.寫入以下內容並保存 小提示:(終端vim文件 按 i 可編輯 ,esc 退出編輯,:wq 可保存退出)
platform :ios, "8.0"
target 'cocoapodsinstall' do
pod 'AFNetworking', '~> 3.0.0'
pod 'SDWebImage', '~> 3.8'
end
這裏代碼的意思是當前庫支持iOS最低版本是iOS8.0,下載的兩個類庫版本分別是3.0.0、3.8,至於版本號與”~>” 的意義是說像版本3.0.0當執行pod update時,最高只能安裝3.0.9,而不能是3.1.0甚至更高;如果只寫了版本號爲3,那麼則不限制更新任何版本;做這個限制是考慮到兼容性問題,假如更新版本到了4.0,但是項目中要考慮到之前的代碼使用,則會選擇暫時不更新到4.0。
5.導入第三方庫
$pod install
安裝成功後會告訴重新啓動項目,並且以後都要從 myDemo.xcworkspace這個文件,而不再是之前的.xcodeproj.同時項目會生成幾個新的文件,這些文件是關聯你項目本身的,所以不能隨意刪除。
6.工程中使用類庫
在項目使用的文件中導入該類庫的頭文件即可:
#import "AFNetworking.h"
四.常見問題
1.執行pod setup的時候可能會一直停在Setting up CocoaPods master repo然後(很久)會出現如下錯誤:):
Setting up CocoaPods master repo
[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master
Cloning into ‘master’…
error: RPC failed; curl 56 SSLRead() return error -9806
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
這說明某些環境原因導致pod更新不了,可能原因有,1)gem版本太低;2)github無法鏈接;3).cocoapods目錄下的配置信息錯誤。我們可以一個一個來排除
首先更新gem到最新版本,在終端中輸入:
$ sudo gem update --system
然後檢查是否可以ping通github,在終端中輸入:(ctrl+c停止)
$ ping github.com
檢查信息是否已經下載到~/.cocoapods裏
$ pod repo list
結果顯示0 repos在終端輸入:
$ cd ~/.cocoapods
$ du -sh *
重新執行pod setup,過一段時間後提示setup completed,在終端中輸入 pod list,展示出安裝列表;這樣總算安裝好了。接下來再一次輸入 :
$ pod search AFNetworking
輸入過後它可能會報:
[!] Unable to find a pod with name, author, summary, or descriptionmatching AFNetworking
解決方案是:
輸入:
$ rm ~/Library/Caches/CocoaPods/search_index.json
後在一次輸入:$ pod search AFNetworking
就可以咯。
2.install,update速度慢
出現原因:你本地的repo庫太長時間沒有更新了
解決辦法:$ pod repo update
原因在於當執行以上兩個命令的時候會升級CocoaPods的specs倉庫,如果不想在install,update的時候升級specs庫,可以使用參數忽略掉
$ pod install --no-repo-update
$ pod update --no-repo-update
3 . 導入Swift類庫
導入Swift語言編寫的類庫時需要加use_frameworks!,下面以導入Alamofire爲例:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire', '~> 1.3'
4.安裝ruby時可能會報
There has been an error while running make install. Halting the installation.
解決辦法:
& rvm get master
& rvm reinstall 2.2.2
另外這裏有一篇介紹如何在Xcode中使用CocoaPods,免去了命令導入第三方庫的繁瑣。前提是安裝了Alcatraz這個管理插件的工具,點擊這裏有詳細介紹