参考:
Carthage的安装和使用
【译】Carthage的使用
Carthage 初探:四大优势与四大劣势
Carthage官方地址
Carthage与CocoaPods的简单比较
- CocoaPods 的优势:
- 使用方便,除编写 Podfile 以外其他几乎都是自动完成;
- 软件包数量多,主流支持;
- CocoaPods 的缺点:
- 每次更新环境都需要连接到中心仓库,比较耗时;
- 开发者使用比较简单,但是如果创建兼容 CocoaPods 的库,就会相对繁琐一些(尽管有了命令行);
- 每次干净编译都会把所有第三方库都重新编译一次(看似很正确,直到我遇见 Carthage…)
- Carthage 的优势
- 第三方库不是每一次都重新编译,节省时间;
- 去中心化,没有中心服务器,这意味着每次配置和更新环境,只会去更新具体的库,而不会有一个向中心服务器获取最新库的索引这么个过程,节省时间;
- 与 CocoaPods 无缝集成;
- 结构标准的项目天然就是 Carthage 库;
安装Carthage
brew install carthage
使用Carthage
进入项目文件夹,比如建立新项目
carthageDemo
创建空文件
Cartfile
,命令:touch Cartfile
编辑
Cartfile
文件(xcode,或其它文本编辑器),以SVProgressHUD为例,Cartfile
文件内容大致如下:
github "SVProgressHUD/SVProgressHUD" ~> 1.0
Cartfile
文件格式说明:
- 依赖源有两种,
github
和git
,就是告诉** Carthage**到哪里下载第三方库,例子如下:
# Require version 2.3.1 or later
github "ReactiveCocoa/ReactiveCocoa" >= 2.3.1
# Require version 1.x
github "Mantle/Mantle" ~> 1.0 # (1.0 or later, but less than 2.0)
# Require exactly version 0.4.1
github "jspahrsummers/libextobjc" == 0.4.1
# Use the latest version
github "jspahrsummers/xcconfigs"
# Use the branch
github "jspahrsummers/xcconfigs" "branch"
# Use a project from GitHub Enterprise
github "https://enterprise.local/ghe/desktop/git-error-translations"
# Use a project from any arbitrary server, on the "development" branch
git "https://enterprise.local/desktop/git-error-translations2.git" "development"
# Use a local project
git "file:///directory/to/project" "branch"
- 从上面的例子中有很详细的版本号例子:
-
== 1.0
使用1.0版本 -
>= 1.0
使用1.0或更高的版本 -
~> 1.0
使用高于1.0但低于2.0的最新版本 - 没有的是使用最新版本
-
branch名称
/tag名称
/commit名称
使用特定分支/标签/提交版本
-
- 运行Carthage
-
carthage update [--platform iOS]
--platform iOS
是针对iOS的,可选项。
在项目根目录下会生成一个Cartfile.resolved
文件和Carthage
文件夹,Carthage
文件夹中的Build
目录下有编译好的framework
文件,Checkouts
目录第三库的源文件。
- 把库添加到项目中
- 把编译好的
framework
文件拖动到Linked Frameworks and Libraries
或者点击+
选择。
- 在
Build Phases
中添加一个Run Script
。
命令为/usr/local/bin/carthage copy-frameworks
。
Input Files下的条目为$(SRCROOT)/Carthage/Build/iOS/SVProgressHUD.framework
。
具体操作如下图:
- 编译就可以使用第三方库了
其他
- 新加库时在
Cartfile
文件中添加后,然后操作类似上面的 - 更新指定库:
carthage update SVProgressHUD --platform iOS