目錄
CocoaPods
簡介
CocoaPods應該是iOS最常用最有名的類庫管理工具了, 它的文檔和資源也是最全面的
安裝
brew install cocoapods
創建PodFile
除了手動創建PodFile之外, 還可以自動生成PodFile文件
pod init
PodFile文件需要和工程文件(CocoaPodsDemo.xcodeproj)在同一級目錄下
PodFile文件初始內容如下
# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'
# Uncomment this line if you're using Swift
# use_frameworks!
target 'CocoaPodsDemo' do
end
target 'CocoaPodsDemoTests' do
end
target 'CocoaPodsDemoUITests' do
end
編輯PodFile
這里我們參考的是AFNetworking的配置
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'AFNetworking', '~> 3.0'
接著再添加一個Swift網絡庫Alamofire
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'AFNetworking', '~> 3.0'
target 'CocoaPodsDemo' do
use_frameworks!
pod 'Alamofire', '~> 3.4'
end
依賴
如果網絡狀況比較"良好"的話, 這樣安裝依賴
pod install
上述命令一直卡住不動的話, 也可以這樣安裝
pod install --verbose --no-repo-update
安裝依賴成功后, 打開CocoaPods為我們生成的CocoaPodsDemo.xcworkspace文件即可
其他
對于PodFile中的版本配置, 官方說明如下
'> 0.1' Any version higher than 0.1
'>= 0.1' Version 0.1 and any higher version
'< 0.1' Any version lower than 0.1
'<= 0.1' Version 0.1 and any lower version
'~> 0.1.2' Version 0.1.2 and the versions up to 0.2, not including 0.2 and higher
'~> 0.1' Version 0.1 and the versions up to 1.0, not including 1.0 and higher
'~> 0' Version 0 and higher, this is basically the same as not having it
完整Demo請參考這里的CocoaPodsDemo
Carthage
有了如此百科全書版強大的CocoaPods為什么還會有Carthage呢
Carthage的目標是為了解決CocoaPods的以下兩個痛點
集中式管理
修改工程文件
安裝
brew install carthage
創建Cartfile
這里還是舉AFNetworking和Alamofire的例子
github "AFNetworking/AFNetworking" ~> 3.0
github "Alamofire/Alamofire" ~> 3.4
Cartfile文件最好和工程文件(CocoaPodsDemo.xcodeproj)在同一級目錄下, 否則配置會和下面的例子不同
依賴
carthage update --platform iOS
導入Framework
將Carthage/Build下的Framework文件導入到工程的Linked Frameworks and Libraries
然后在工程的Build Phases中添加如下的Run Script
/usr/local/bin/carthage copy-frameworks
接著在Input Files中添加
$(SRCROOT)/Carthage/Build/iOS/AFNetworking.framework
$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
其他
對于Cartfile中的版本配置, 官方說明如下
'>= 1.0' for at least version 1.0
'~> 1.0' for compatible with version 1.0
'== 1.0' for “exactly version 1.0
'some-branch-or-tag-or-commit' for a specific Git object (anything allowed by git rev-parse)
完整Demo請參考這里的CarthageDemo
其他方案
Swift Package Manager
或許是Apple也意識到沒有包管理器的問題嚴重性吧, 對于開源的Swift還"贈送"了
由于本人暫時還沒切換到Swift開發(額, 沒錯, 就是這么侉), 所以對于SPM也不是特別熟悉
有興趣的可以參考官方教程
如果你了解Swift Package Manager的話, 歡迎留言和補充, 謝謝
CocoaSeeds
CocoaSeeds是一個"棒子"出品的項目, 作者的思路是這樣的
CocoaSeeds just downloads the source code and add it to your Xcode project. No static libraries, no dynamic frameworks.
除此以外他還有其他的特點
支持iOS7項目
Git Submodule sucks
It can be used with CocoaPods and Carthage
通過下面的例子我們來親身感受下CocoaSeeds
- 安裝CocoaSeeds
gem install cocoaseeds
- 創建Seedfile
github "AFNetworking/AFNetworking", "3.0"
target :CocoaSeedsDemo do
github "Alamofire/Alamofire", "3.4", :files => "Source/*.{swift,h}"
end
- 依賴
seed install
遺憾的是, 這個項目項目fork數不多, 對一些第三方庫的支持也沒有CocoaPods和Carthage那么完善
完整Demo請參考這里的CocoaSeedsDemo
小結
CocoaPods | Carthage | Swift Package Manager | CocoaSeeds | |
---|---|---|---|---|
特點 | 集中式管理 | 分布式管理 | N/A | 分布式管理 |
修改工程文件 | 不修改工程文件 | N/A | 不修改工程文件 | |
N/A | 下載并添加源碼到工程 | |||
約束 | use_frameworks!只支持iOS8.0及以上 | 只支持iOS8.0及以上 | N/A | 支持iOS7.0及以上 |
需要將framework文件添加到工程 | N/A | |||
資源 | ★★★★★ | ★★★★ | N/A | ★★☆ |
評價 | ★★★★☆ | ★★★★ | N/A | ★★☆ |
更多文章, 請支持我的個人博客