前言
Carthage 的目标是提供一种比 CocoaPods 更简单的工具,更加容易理解、维护和灵活。
它通过许多方式来实现这点:
-
Carthage不会修改你的Xcode项目或者强制你使用workspace。 - 它不使用
Podspecs或者不需要第三方库作者将他们的pod提交到集中式存储库。如果你的项目能够以framework形式构建,它就可以用在Carthage上。它能够直接使用Git和Xcode中现成的信息。 -
Carthage其实没有做太多的改变,全都是靠你自己来控制。你手动添加依赖到项目中,Carthage会下载和编译它们。
注意:
Carthage自身是用Swift编写的,Carthage为了简单起见使用的是动态框架。这意味着你的项目必须支持iOS 8以上。
Carthage安装
-
安装方式有两种
- 安装包方式
- 下载 Carthage 安装包(.pkg).
-
Continue然后Install.
-
Homebrew方式$ brew install carthage
- 安装包方式
-
查看是否安装成功
$ carthage version
Carthage使用
创建步骤
进入项目根目录(即和
.xcodeproj相同路径)-
创建
Cartfile文件:$ touch Cartfile- 2.png
-
在
Cartfile文件中添加项目需要的库- 1.png
-
执行命令:
$ carthage update --platform iOS- 3.png
$ –-platform iOS选项确保只编译iOS的framework。如果你不指定平台,默认会编译全部平台(Mac、iOS、TV)。
Cartfile文件格式
Carfile 语句都由两个关键的信息组成:
-
依赖源:告诉
Carthage从哪里下载依赖。Carthage支持两种源:-
Github:用于Github类项目。你可以指定一个GitHub项目,以 用户名/项目名称 的格式,就像你在上面用的一样。 -
Git:Git代码库。git关键字后面跟上git库所在的路径,可以是远程URL比如git://、http://或者ssh://,也可以是本地地址,指向你开发机上的某个git库。
-
-
依赖版本:告诉
Carthage依赖的版本:== 1.0表示 使用精确的 1.0 版本>= 1.0表示 1.0 或者更高版本-
~> 1.0表示 使用任意和 1.0 兼容的版本, 其实就是从某个版本开始,直到下一个大版本发布。如果是
~> 1.7.5,那就是从1.7.5开始往上,但不包括2.0,因为那是不兼容版本。如果是
~> 2.0,Carthage会使用2.0或更高版本,但低于3.0版本。 分支名/tag名/提交名表示 使用指定的 git 分支/tag/提交。例如,如果你可以指定使用 master 分支,或者具体某次提交。
如果你不指定版本的话,
Carthage会使用和其它依赖兼容的最新版本。
Carthage编译生成的库
- 当执行
$ carthage update时,Carthage会生成几个文件和目录:- 4.png
Cartfile.resolved: 这个文件用于作为Cartfile的补充。它定义了Carthage真正使用和安装的依赖版本。极力推荐将这个文件提交到你的版本控制库中,因为它保证了别的开发者一开始就能够和你的依赖版本保持一致。-
Carthage目录,包含两个子目录:-
Build:包含了每个依赖编译好的framework。集成到项目中的库。每个framework要么从源代码编译得来,要么从Github的Releases页中下下来。 -
Checkouts:check out下来的依赖的源代码,这些源代码将被编译成framework。Carthage内部会自己维护依赖库的缓存,因此同样的源代码在不同的项目中不需要重复克隆。
-
项目使用(framwork)
- 添加依赖库(
Build文件夹下)- 5.png
-
配置
Build Phases- 6.png
如果不配置
Build Phases,项目会报错,以SDWebImage为例,会报错:Reason: image not found7.png
- 其他配置(待验证)
为了避免提交
AppStore时因为app中的framework中包含有iOS模拟器的二进制image被拒,添加脚本:copy-frameworks,将不用的架构去除.- 8.png
项目使用(源码)
- 添加依赖库源码(
Checkouts文件夹下)- 9.png
不需要其他配置








