cocoapods簡介,環境配置,使用等

語言: CN / TW / HK

ps:背景大圖來源網路

一、簡介(是什麼)

cocoapods是為iOS程式提供依賴管理,幫助我們集中管理第三方依賴庫的工具;解決庫與庫之間的依賴關係,下載庫的原始碼,並通過建立一個xcode的workspace來將這些第三方庫與我們的工程連線起來,方便開發使用。

二、cocoapods環境配置流程

cocopos是用ruby實現的,並劃分成了若干個Gem包。如果要使用cocoapods的話,就必須具備ruby環境。蘋果系統已經具備ruby環境,但是ruby的版本低和或者源不對也會導致安裝出錯。一般的安裝流程如下:

第一步:更新gem源

gem是一個管理ruby庫和程式的標準包,通過ruby gem源來查詢、安裝、升級和解除安裝軟體包;

Ruby 是一種面向物件的指令碼語言,簡單易用,功能強大。能跨平臺和可移植性好等等。其實就是種指令碼語言。

gem source -l:查詢ruby源

第一次查詢結果應該是:http://rubygems.org/

但是在國內需要更換為:http://gems.ruby-china.com/

gem source remove http://rubygems.org/: 移除ruby源

gem source -a http://gems.ruby-china.com/:新增可用ruby源

sudo gem updates —system:更新ruby源

第二步:安裝cocoapods

sudo gem install cocoapods (osx 10.11以前)

sudo gem install -n /usr/local/bin cocoapods (10.11後蘋果升級了安全策略)

常見安裝出錯的問題:

  • ruby版本不支援;

rvm:是一個命令列工具,可以提供一個便捷的多版本ruby環境的管理和切換;ruby版本管理以及安裝工具.

安裝rvm:

curl -l get.rvm.io | bash -s stable

source ~/.bashrc

source ~/.bash_profile

更新ruby版本:rvm install 3.0.3(版本號)

image.png

三、作用(解決什麼問題)

對於一個iOS工程,或多或少都會用到一些第三方庫,在cocoapods之前,需要我們手動去處理以下的問題:

  • 下載開源庫原始碼並引入工程中;(建立依賴關係)

  • 向工程中新增開源庫使用到的framework;

  • 解決開源庫和工程,開源庫和開源庫之間的依賴關係,檢查重複新增的framework等問題;

利用cocoapods能夠做到快速,自動管理,集中的管理第三方庫。

四、使用(如何使用pod去解決這個問題)

#### 1、安裝好cocoapods之後,我們就可以通過cocoapods來管理我們工程中的依賴庫們,那首先了解一下使用cocoapods時的一些簡單命令:

pod setup: 將所有第三方的podspec索引檔案更新到本地的.~/cocoapods/repos目錄下;

image.png

pod repo update: 執行 pod repo update更新本地倉庫,本地倉庫完成後,能夠搜尋到指定的第三方庫,作用類似pod setup。不過這個命令經常不會單獨使用。比如執行pod setup、pod search、pod install、pod update會預設執行pod repo update。

pod search 庫名: 查詢某一個開源庫。查詢開源庫之前,預設會執行pod repo update指令;

pod install:

  • 根據podfile.lock檔案中列舉的版本號來安裝第三方框架;

  • 如果一開始podfile.lock不存在,執行完pod install 就會按照Podfile檔案列舉的版本號來安裝第三方框架

  • 安裝開源庫之前,預設會執行pod repo update來更新本地倉庫;

pod install都做了什麼:

  • 準備環境
  • 解析依賴衝突
  • 下載相關的依賴
  • 驗證target
  • 生成對應的工程檔案
  • 寫入相關的依賴
  • 結束回撥

pod update:

  • 將所有第三方庫更新到最新版本,並且建立一個podfile.lock檔案;

  • 安裝開源庫之前,預設會執行pod repo update來更新本地倉庫;

pod list:列出所有可用的第三方庫;

2、瞭解cocoapods管理的檔案:

podfile:專案的第三庫的依賴以及專案的基本配置;

podfile.lock:最新一次更新pods時,儲存所有第三方框架的版本號;

pod目錄:儲存通過pod install或者pod update下載下來的第三方開源庫的原始碼

.podspec檔案:Podspec 是用於 描述一個 Pod 庫的原始碼和資源將如何被打包編譯成連結庫或 framework 的檔案 ,而 Podspec 中的這些描述內容最終將映會對映到 Specification 類中。—

參考連結:關於podspec:http://zhuanlan.zhihu.com/p/265338343

3、建立一個專案,生成對應的podfile,然後在podfile裡新增需要依賴的三方庫:

建立一個xcode專案:不會的話可以網上找找,有各種教程
生成podfile,在專案的根目錄下按照如下操作,執行pod init

image.png

podfile的預設內容

image.png

這裡我們瞭解一下關於podfile書寫一些基礎的語法內容:

source: 指定specs的位置,自定義新增自己的podspec。公司內部使用cocoapods 官方source是隱式的需要的,一旦你指定了其他source 你就需要也把官方的指定上;

platform :ios, '9.0':

  • 指定編譯的程式碼被指定到了哪個平臺以及該平臺的最低版本;

  • 若不指定平臺版本,官方文件裡寫明各平臺預設值為iOS:4.3,OS X:10.6,tvOS:9.0,watchOS:2.0

inhibit_all_warnings!:遮蔽cocoapods庫裡面的所有警告;

user_frameworks!:使用frameworks動態庫替換靜態庫連結;

workspace:

  • 指定應該包含所有projects的Xcode workspace;

  • 如果沒有顯示指定workspace並且在Podfile所在目錄只有一個project,那麼project的名稱會被用作於workspace的名稱

project:預設情況下是沒有指定的,當沒有指定時,會使用Podfile目錄下與target同名的工程;

target:: 指定特定Target的依賴庫並且可以巢狀子Target的依賴庫

`target ‘XXXX’ do

    依賴的三方庫書寫

    #pod '庫名' ,'版本號',:source => '連結' (其中版本號和source可省略)

    #pod '庫名' ,:path => '檔案目錄' (新增本地依賴庫)

end

inherit! :search_paths:明確指定繼承於父層的所有pod,預設就是繼承的

編寫完podfile檔案後執行pod install:

image.png 執行pod install: image.png

如下是生成的podfile.lock檔案內容:

image.png

截至目前, StudyPodProject的工程目錄如圖所示:

image.png