.framework
文件拖进 Xcode 项目虽然 Carthage 构建所有需要的依赖并生成对应的二进制 framework, 但用户仍然保持对项目文件结构以及工程构建设置的控制
Carthage 并不会修改用户的工程文件和构建设置
3 种方法可供选择
Homebrew: 使用 Homebrew 安装
brew update
brew install carthage
若之前安装过了 Carthage 的二进制版本,应先删除
/Library/Frameworks/CarthageKit.framework
make install
(这需要 Xcode 8.3, Swift 3.1)Carthage 只支持动态 framework, 而这只能在 iOS 8 或以上的版本使用(macOS 随意)
carthage update --platform iOS
, 这将会拉取所有的依赖到 📁Carthage/Checkouts, 然后构建或下载一个 pre-compiled 的 frameworktargets -> Build Phases -> + -> New Run Script Phase, 创建一个运行脚本
/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 发生了改变或 output files 找不到时才会运行脚本。这意味着,当没有使用 Carthage 重新构建 framework 时, dirty build 会运行得更快
脚本的作用:
是应对应用提交到 App Store 时的一个 bug. 这个 bug triggered by universal binaries and ensures that necessary bitcode-related files and dSYMs are copied when archiving.
运行命令
carthage bootstrap
当修改了 Cartfile, 或者想将 frameworks 更新到最新版本,运行命令
carthage upadte xxx
或者,只想更新特定的依赖,那就在 update 后面加上它们的名字吧
carthage update xxx yyy
目前 Carthage 支持 3 种源:
使用 github
关键字
github "ReactiveCocoa/ReactiveCocoa" # GitHub.com
github "https://enterprise.local/ghe/desktop/git-error-translations" # GitHub Enterprise
使用 git
关键字
git "https://enterprise.local/desktop/git-error-translations2.git"
使用 binary
关键字,并且 URL 使用的是 https 协议
binary "https://my.domain.com/release/MyFramework.json"
关于这个 json 文件的具体格式,直接看原文,目前本人用到的不多
Carthage 支持 framework 不同的版本指定
>= 1.0
版本 1.0 或以上~> 1.0
大版本是 1, 即 1.0 <= version < 2.0== 1.0
正是版本 1.0"分支名称 或 标签名称 或 提交版本号"
若不指定 framework 的版本号,则默认抓取最新版