cocoapods簡介,環境配置,使用等
ps:背景大圖來源網路
一、簡介(是什麼)
cocoapods是為iOS程式提供依賴管理,幫助我們集中管理第三方依賴庫的工具;解決庫與庫之間的依賴關係,下載庫的原始碼,並通過建立一個xcode的workspace來將這些第三方庫與我們的工程連線起來,方便開發使用。
二、cocoapods環境配置流程
cocopos是用ruby實現的,並劃分成了若干個Gem包。如果要使用cocoapods的話,就必須具備ruby環境。蘋果系統已經具備ruby環境,但是ruby的版本低和或者源不對也會導致安裝出錯。一般的安裝流程如下:
第一步:更新gem源
gem是一個管理ruby庫和程式的標準包,通過ruby gem源來查詢、安裝、升級和解除安裝軟體包;
Ruby 是一種面向物件的指令碼語言,簡單易用,功能強大。能跨平臺和可移植性好等等。其實就是種指令碼語言。
gem source -l:
查詢ruby源
第一次查詢結果應該是:https://rubygems.org/
但是在國內需要更換為:https://gems.ruby-china.com/
gem source remove https://rubygems.org/:
移除ruby源
gem source -a https://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(版本號)
三、作用(解決什麼問題)
對於一個iOS工程,或多或少都會用到一些第三方庫,在cocoapods之前,需要我們手動去處理以下的問題:
-
下載開源庫原始碼並引入工程中;(建立依賴關係)
-
向工程中新增開源庫使用到的framework;
-
解決開源庫和工程,開源庫和開源庫之間的依賴關係,檢查重複新增的framework等問題;
利用cocoapods能夠做到快速,自動管理,集中的管理第三方庫。
四、使用(如何使用pod去解決這個問題)
#### 1、安裝好cocoapods之後,我們就可以通過cocoapods來管理我們工程中的依賴庫們,那首先了解一下使用cocoapods時的一些簡單命令:
pod setup:
將所有第三方的podspec索引檔案更新到本地的.~/cocoapods/repos目錄下;
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:https://zhuanlan.zhihu.com/p/265338343
3、建立一個專案,生成對應的podfile,然後在podfile裡新增需要依賴的三方庫:
建立一個xcode專案:不會的話可以網上找找,有各種教程
生成podfile,在專案的根目錄下按照如下操作,執行pod init
podfile的預設內容
這裡我們瞭解一下關於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:
執行pod install:
如下是生成的podfile.lock檔案內容: