iOS開發 之 依賴管理

目錄

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 Package Manager

由于本人暫時還沒切換到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 ★★☆

更多文章, 請支持我的個人博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言:寫過很多靜態工具類,發現靜態類根本無法返回自身對象引用(因為靜態本來就沒有對象),可是我也想像單例對象一樣,...
    顫抖的閃電閱讀 988評論 0 0
  • 搞P2P貌似挺賺錢,最近有不少人找咱給推廣這類的業務,而且談費用時都特爽快:“多錢,你盡管說”。我開玩笑:一次50...
    屠龍奶爸閱讀 429評論 4 3
  • 正月開歲 二月紺香 三月桃良 四月秀蔓 五月鳴蜩 六月精陽 七月流火 八月未央 九月授衣 十月獲稻 葭月潛龍 臘月...
    塵間小妖閱讀 667評論 0 0
  • 目前的我,加班狗一枚,可憐的是,我不是給公司加班,而是為我自己加班.我完全可以不加啊,但是,好像有人舉著一堆堆一疊...
    文陌陌閱讀 302評論 0 0