iOS進階——最新版CocoaPods的安裝及使用

持續更新: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這個管理插件的工具,點擊這裏有詳細介紹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章