Carthage 使用流程
- 創(chuàng)建一個文件,名為 Cartfile, 在其中列出項目中需要使用到的 framework
- 運行 Carthage, 這將會從遠端拉取 Cartfile 中列出的項目,并構(gòu)建對應的 framework
- 講構(gòu)建后的二進制代碼
.framework文件拖進 Xcode 項目
雖然 Carthage 構(gòu)建所有需要的依賴并生成對應的二進制 framework, 但用戶仍然保持對項目文件結(jié)構(gòu)以及工程構(gòu)建設(shè)置的控制
Carthage 并不會修改用戶的工程文件和構(gòu)建設(shè)置
安裝 Carthage
3 種方法可供選擇
Installer: 通過下載并運行 Carthage.pkg 文件進行安裝
-
Homebrew: 使用 Homebrew 安裝
brew update brew install carthage若之前安裝過了 Carthage 的二進制版本,應先刪除
/Library/Frameworks/CarthageKit.framework 源碼:clone 主分支代碼,運行
make install(這需要 Xcode 8.3, Swift 3.1)
將 framework 添加到項目中
Carthage 只支持動態(tài) framework, 而這只能在 iOS 8 或以上的版本使用(macOS 隨意)
對于 iOS, tvOS, watchOS
創(chuàng)建一個文件,名為 Cartfile, 在其中列出項目中需要使用到的 framework
運行
carthage update --platform iOS, 這將會拉取所有的依賴到 ??Carthage/Checkouts, 然后構(gòu)建或下載一個 pre-compiled 的 framework在項目的 targets -> General -> Linked Frameworks and Libraries 中,將每一個需要的 framework 從 ??Carthae/Build 中拖放到其中
-
targets -> Build Phases -> + -> New Run Script Phase, 創(chuàng)建一個運行腳本
/usr/local/bin/carthage copy-frameworks -
在 Input Files 中添加要使用到的 framework 的路徑
$(SRCROOT)/Carthage/Build/iOS/XXX.framework -
在 Output Files 中添加 framework 復制的目的路徑
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/XXX.framework當 output files 配合 input files 一起使用時,Xcode 只會在 input files 發(fā)生了改變或 output files 找不到時才會運行腳本。這意味著,當沒有使用 Carthage 重新構(gòu)建 framework 時, dirty build 會運行得更快
腳本的作用:
是應對應用提交到 App Store 時的一個 bug. 這個 bug triggered by universal binaries and ensures that necessary bitcode-related files and dSYMs are copied when archiving.
運行一個已經(jīng)使用 Carthage 的項目
運行命令
carthage bootstrap
更新 framework
當修改了 Cartfile, 或者想將 frameworks 更新到最新版本,運行命令
carthage upadte xxx
或者,只想更新特定的依賴,那就在 update 后面加上它們的名字吧
carthage update xxx yyy
Cartfile 寫法
關(guān)于源 (origin) 的問題
目前 Carthage 支持 3 種源:
- GitHub 上的 repositories
- Git 的 repositories
- 通過 https 協(xié)議傳送的二進制 frameworks
使用 GitHub repositories
使用 github 關(guān)鍵字
github "ReactiveCocoa/ReactiveCocoa" # GitHub.com
github "https://enterprise.local/ghe/desktop/git-error-translations" # GitHub Enterprise
使用 Git repositories
使用 git 關(guān)鍵字
git "https://enterprise.local/desktop/git-error-translations2.git"
二進制 frameworks
使用 binary 關(guān)鍵字,并且 URL 使用的是 https 協(xié)議
binary "https://my.domain.com/release/MyFramework.json"
關(guān)于這個 json 文件的具體格式,直接看原文,目前本人用到的不多
關(guān)于 framework 版本
Carthage 支持 framework 不同的版本指定
-
>= 1.0版本 1.0 或以上 -
~> 1.0大版本是 1, 即 1.0 <= version < 2.0 -
== 1.0正是版本 1.0 "分支名稱 或 標簽名稱 或 提交版本號"
若不指定 framework 的版本號,則默認抓取最新版