一、CocoaPods
- CocoaPods 是非常好用的第三方依賴管理工具。
- CocoaPods 于2011年發布,經過幾年的發展,已經非常完善。
- CocoaPods 支持項目中采用Object-C或Swift語言。
- CocoaPods 將第三方庫中的源代碼編譯為靜態庫(.a文件)或動態庫(.framework文件)的形式,并將它們添加到項目中建立依賴關系。
二、Carthage
- Carthage 是一個輕量級的項目依賴管理工具。
- Carthage 主張"去中心化"和"非侵入性"。
- CocoaPods 搭建了一個中心庫,第三方庫被收入到該中心庫,所以沒有收錄的第三方庫是不能用 CocoaPods 管理的,這就是所謂的"中心化"思想;而Carthage沒有這樣的中心庫,第三方庫基本都是從 Github 或者私有 Git 庫下載,這就是去中心化。
- CocoaPods下載第三方庫之后會將其編譯成靜態庫或者動態庫文件,這種做法會修改 Xcode 項目屬性的依賴配置關系,這就是所謂的"侵入性";而 Carthage 下載成功后,會將第三方庫編譯成動態庫,由開發人員自己配置依賴關系,Carthage 不會修改項目屬性,這就是所謂的"非侵入性"。
三、Swift Package Manager
- Swift Package Manager 是蘋果推出用于管理分發 Swift 代碼的工具。
- 可用于創建使用swift庫和可執行程序。
- 能夠通過命令快速創建library或者可執行的swift程序。
- 能跨平臺使用,使開發出來的項目在不同平臺上運行。
四、Carthage使用步驟
**1. 使用 brew 安裝 carthage **
$ brew update
$ brew install carthage
**2. 創建 cartfile 文件 **
$ touch cartfile
3. 修改 cartfile 文件,比如:
github "Alamofire/Alamofire" ~> 5.2
github "onevcat/Kingfisher" ~> 5.0
github "nixzhu/MonkeyKing"
github "SwiftyJSON/SwiftyJSON"
github "SnapKit/SnapKit"
4. Carthage 支持兩種類型的源,一個是github,另一個是git
- github 表示依賴源,告訴Carthage去哪里下載文件,依賴源后面跟上要下載的庫,格式為 "user_name/project_name"
例如:"github "onevcat/Kingfisher"" - git 關鍵字后面跟的是第三方庫的地址,可以是遠程的URL地址(例如 git://,http://,ssh://), 或者是本地庫的地址
5. Carthage使用哪個版本是可選的,默認使用的是最新版本
- == 1.0 表示使用 1.0 版本
= 1.0 表示使用 1.0 或者更高的版本
- ~> 1.0 表示使用 1.0 以上但是低于2.0的最新版本,如1.2,1.8
- branch/tag/commit 表示使用特定的分支/標簽/提交,比如分支名master,或者commit記錄 5c8b76a
6. 第三方庫安裝
//編譯包含iOS macOS tvOS watchOS
$ carthage update
//只編譯iOS
$ carthage update --platform iOS
7. 項目配置
- 1、項目 Target-> Build Setting -> Search Paths -> Framework Search Paths 添加
$(PROJECT_DIR)/Carthage/Build/iOS
image.png
- 2、項目 Target-> Build Phases -> '+' -> New Run Script Phase 添加腳本
/usr/local/bin/Carthage copy-frameworks
- 3、添加"Input Files" 如
$(SRCROOT)/Carthage/Build/iOS/Alamofile.framework
$(SRCROOT)/Carthage/Build/iOS/Kingfisher.framework
四、Swift Package Manager使用步驟
- Xcode工具欄 -> file -> Swift Packages -> Add Package Dependency -> 輸入URL(如:https://github.com/Alamofile/Alamofile.git) -> next (選擇版本號)