第三方管理工具
Carthage
安装
brew update
brew install carthage
简介
- 查看版本
carthage version
替代Cocoapods在项目中使用Carthage
- 在项目中创建
Carthage文件Cartfile
vim Cartfile
- 添加需使用的库
github "Alamofire/Alamofire" ~> 3.0
github "SwiftyJSON/SwiftyJSON"
- 版本定义(同
Cocoapods)
~> 3.0 表示使用版本3.0以上但是低于4.0的最新版本,如3.5, 3.9
== 3.0 表示使用3.0版本
>= 3.0表示使用3.0或更高的版本
// 不写明版本号则使用最新版
- 保存并更新 - 下载所需要的第三方库
carthage update --platform iOS
// 此时会在项目目录下新建文件夹Carthage
// Carthage/Build/iOS里自动生成xxx.framework
Xcode使用
-
由上获得
xxx.framework导入项目中 -
project-target-General-Linked frameworks and Binaries添加文件 -
选择
Build Phrase添加相应的run script
// shell中填写脚本
// carthage <= 0.11版本:
/usr/local/bin/carthage copy-frameworks
// carthage > 0.11版本(新版本可以省略设置脚本及以下步骤)
/bin/sh
-
勾选第一个选项
-
导入
framework文件路径即可
与Cocoapods不同点
-
Carthage只支持iOS 8及以上版本使用 -
编译方式不同
CocoaPods默认会自动创建并更新你的应用程序和所有依赖的Xcode workspace。Carthage使用xcodebuild来编译框架的二进制文件。CocoaPods的方法更易于集成,但Carthage更灵活并且是非侵入性的。
Carthage创建的是去中心化的依赖管理器
它没有总项目的列表,这能够减少维护工作并且避免任何中心化带来的问题(如中央服务器宕机)。不过,这样也有一些缺点,就是项目的发现将更困难,用户将依赖于Github的趋势页面或者类似的代码库来寻找项目。
- 依赖与耦合
CocoaPods项目同时还必须包含一个podspec文件,里面是项目的配置及编译方式。Carthage使用xcodebuild来编译依赖,而不是将他们集成进一个workspace,因此无需类似的设定文件,不会使项目在文件框架上进行调整,不过依赖需要包含自己的Xcode工程文件来描述如何编译。
- 总结
创建Carthage的原因是想要一种尽可能简单的工具:一个只关心本职工作的依赖管理器,而不是取代部分Xcode的功能,或者需要让框架作者做一些额外的工作。CocoaPods提供的一些特性很棒,但由于附加的复杂性,它们将不会被包含在Carthage当中。