前言
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
-
在
Cartfile
文件中添加项目需要的库
-
执行命令:
$ carthage update --platform iOS
$ –-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
会生成几个文件和目录:Cartfile.resolved
: 这个文件用于作为Cartfile
的补充。它定义了Carthage
真正使用和安装的依赖版本。极力推荐将这个文件提交到你的版本控制库中,因为它保证了别的开发者一开始就能够和你的依赖版本保持一致。-
Carthage
目录,包含两个子目录:-
Build
:包含了每个依赖编译好的framework
。集成到项目中的库。每个framework
要么从源代码编译得来,要么从Github
的Releases
页中下下来。 -
Checkouts
:check out
下来的依赖的源代码,这些源代码将被编译成framework
。Carthage
内部会自己维护依赖库的缓存,因此同样的源代码在不同的项目中不需要重复克隆。
-
项目使用(framwork
)
- 添加依赖库(
Build
文件夹下)
-
配置
Build Phases
如果不配置
Build Phases
,项目会报错,以SDWebImage
为例,会报错:Reason: image not found
- 其他配置(待验证)
为了避免提交
AppStore
时因为app
中的framework
中包含有iOS
模拟器的二进制image
被拒,添加脚本:copy-frameworks
,将不用的架构去除.
项目使用(源码)
- 添加依赖库源码(
Checkouts
文件夹下)
不需要其他配置