CocoaPods 是 Xcode 的一個套件管理工具 (Package Manager)。套件管理工具是軟體開發中很重要的一環。本章會介紹如何安裝 CocoaPods、如何建立 CocoaPods 專案、以及如何更新套件。
試想如果沒有套件管理工具的話,每個第三方套件都可能會有不一樣的整合方式。此外,每個套件還有跟其他套件的依賴 (Dependencies) 關係。這意味著,你還要再去整合那些依賴套件,而且你還要整合正確的版本。
目前比較有名的是:
- CocoaPods
- Carthage
- Swift Package Manager
其中 Swift Package Manager 是 Swift 官方維護,在未來應該會是主流。不過目前 CocoaPods 的使用人數依舊是很大量,在短期內還不會退下來。
Table of Contents
安裝 CocoaPods
首先要先安裝 CocoaPods 的指令:
% sudo gem install cocoapods
pod init: 建立 CocoaPods 專案
要建立 CocoaPods 專案,必須要先建立 Xcode 專案,然後將 CocoaPods 導入專案中。
打開 Xcode 建立一個 Xcode 專案,名稱為 CocoaPodsExample。建立好後將 Xcode 關掉。
打開 Terminal,切換到剛剛 CocoaPodsExample 專案的目錄下:
% cd CocoaPodsExample CocoaPodsExample % ls CocoaPodsExample CocoaPodsExampleTests CocoaPodsExample.xcodeproj CocoaPodsExampleUITests
初始化 CocoaPods。目錄下會新增 Podfile 檔案。Podfile 就是 CocoaPods 專案的設定檔。
CocoaPodsExample % pod init CocoaPodsExample % ls CocoaPodsExample CocoaPodsExampleUITests CocoaPodsExample.xcodeproj Podfile CocoaPodsExampleTests
試著在 Podfile 裡引入 Alamofire 套件。
# Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'CocoaPodsExample' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for CocoaPodsExample pod 'Alamofire', '~> 5.1' target 'CocoaPodsExampleTests' do inherit! :search_paths # Pods for testing end target 'CocoaPodsExampleUITests' do # Pods for testing end end
pod install: 安裝套件
安裝 Podfile 裡面的套件。
CocoaPodsExample % pod install Analyzing dependencies Downloading dependencies Installing Alamofire (5.1.0) Generating Pods project Integrating client project ... CocoaPodsExample % ls CocoaPodsExample CocoaPodsExample.xcodeproj CocoaPodsExample.xcworkspace CocoaPodsExampleTests CocoaPodsExampleUITests Podfile Podfile.lock Pods
安裝之後,目錄下會新增三個檔案。分別是:
- Podfile.lock 紀錄著,哪些套件被安裝,以及安裝的版本。你是不會直接去編輯這個檔案。
- Pods 目錄下就是那些套件檔案。
- CocoaPodsExample.xcworkspace 是新的專案檔。之後都要用 Xcode 打開 .xcworkspace,而不是原本的 .xcodeproj 檔。千萬不要開錯!
CocoaPods 的版本規則
剛剛在 Podfile 新增 Alamofire 套件時,有看到 ‘~> 5.1’。這意思是說,任何版本只要大於或等於 5.1,且小於 6.0 的 Alamofire 就可以安裝。版本規則為:
- ‘> 0.1’:任何大於 0.1 的版本
- ‘>= 0.1’:任何大於或等於 0.1 的版本
- ‘< 0.1’:任何小於 0.1 的版本
- ‘<= 0.1’:任何小於或等於 0.1 的版本
- ‘~> 0.1.2’:任何大於或等於 0.1.2 且小於 0.2 的版本
- ‘~> 0.1’:任何大於或等於 0.1 且小於 1.0 的版本
- ‘~> 0’:任何大於 0 的版本,也就是任何版本都可以。也可以直接略過不寫。
pod outdated: 列出可更新套件
想要知道哪些已安裝的套件有新的版本時,可以用以下的指令。這指令會列出那些在 Podfile.lock 中,有新的版本可供下載的套件列表。
CocoaPodsExample % pod outdated
pod update: 更新套件
想到更新某個套件時,可用下面的指令更新。它會下載並更新套件,新的版本號會記錄在 Podfile.lock。
CocoaPodsExample % pod update PODNAME
不過對每個套件下指令更新也很麻煩的。用下面的指令可以一次更新所有的套件。
CocoaPodsExample % pod update
結語
CocoaPods 會自動幫你管理依賴套件,安裝正確的套件版本。你只要添加到 Podfile,或是在 Podfile 更改版本, CocoaPods 幫你完成其他的事情。