2020-12-31 iOS包管理工具匯總

一、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使用步驟

  1. Xcode工具欄 -> file -> Swift Packages -> Add Package Dependency -> 輸入URL(如:https://github.com/Alamofile/Alamofile.git) -> next (選擇版本號)
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容