Carthage 是一个轻量级的项目依赖管理系统,比CoCoaPods更灵活,对项目的侵略性比较小。
Carthage是使用xcodebuild来将第三方类库编译为二进制库,剩下的集成工作由开发人员完成。
CocoaPods和Carthage相比,CocoaPods是一个生态,可以方便的查找和集成第三方代码库。Carthage是一个去中心化的依赖管理系统,不提供能依赖的项目列表,减少维护成本和单点失败的概率。不好的地方就是找第三方类库没CocoaPods那么方便。
Carthage还有一个好处就是依赖的项目大部分都是从github 直接clone下来,速度还是比较快的。CocoaPods的情况就比较复杂,有的特别慢,比如Realm。
安装
1.使用Homebrew安装
brew update
brew install carthage
2.直接下载安装包,从github/Carthage上下载安装包,安装就行了。
添加第三方库
和CocoaPads类似,需要在项目根目录下添加一个文本文件列出需要依赖的类库
文本文件的名称为“Cartfile” 然后在文件中写入要依赖的类库,如:
github "RxSwiftCommunity/RxAlamofire" "master"
第三方类库中一般都会写明怎么使用carthage添加依赖,与CocoaPods差不多。
编译
执行命令:
carthage update
就会开始clone和编译已经写入的类库。编译时,会在当前目录下新建一个Carthage文件夹和一个Cartfile.resolved文本文档。
Cartfile.resolved就是解析导入的第三方类库地址,将类库关联的所有其他类库及真实的版本号都导入。
Carthage文件夹下有两个文件夹:Build和Checkouts
Build 就是编译所有第三方类库时候生成的文件
Checkouts 里面就是从github上checkout下来的所有第三方类库的源码
默认情况下会编译所有支持的平台,如TvOS,mac,watchOS和IOS,也可以指定要编译的目标平台,如IOS:
carthage build --platform iOS
导入第三方类库
打开项目,在项目的Target -> Build Phases -> Link Library with Libraries下,将Build文件夹下的所有. framework文件都导入进去。
添加额外的编译脚本:点击Build Phases左上角的加号,选择添加 “New Run Script Phase”,点击后会在该页面的最下方添加一个“Run Script”模块,在黑色背景的文本框内输入:
/usr/local/bin/carthage copy-frameworks
然后在下方的“Input Files”中添加所有导入的frameWork文件的路径,如:
$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
之所以需要做这一步是因为Appstore提交应用的一个BUG: App Store submission bug
导入完成之后就可以在代码中使用添加的类库了。