IOS

Carthage的使用

Posted by steven on April 6, 2015

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

导入完成之后就可以在代码中使用添加的类库了。