Carthage:Xcode 项目的 GitHub 依赖管理器

阅读数:2875 2015 年 5 月 5 日 08:49

Justin Spahr-Summers 为 Objective-C 和 Swift 项目开发了一款简单易用的开源依赖管理器—— Carthage 。Carthage 被放在 GitHub 上由众多贡献者共同开发,它秉承着“尽可能将任务委托给 Xcode 和 Git”的哲学,从而让开发者使用他们“早已熟悉”的工具来开发项目。

想要重用库或框架的代码,依赖管理是重中之重。据 Spahr-Summers 说,尚未开发 Carthage 的时候,通常有这样几种方式分发用于 Cocoa/CocoaTouch 项目的库:

  • 手动复制源代码。不支持所有类型的版本控制,易导致冲突。
  • SVN 外部定义,Git 子模块或 Git subtree。Spahr-Summers 认为三种方法都有各自的缺陷,尤其时当你用 Git 子模块管理依赖时,虽然它表现得很出色,但在多个项目中存在相同的依赖时会产生问题。
  • CocoaPods 是 Cocoa 依赖管理的真正的标准。不幸的是,Spahr-Summers 认为 CocoaPods 有一些缺陷,例如,所有项目都需要添加一个 Pod 说明文件并上传到中央仓库。CocoaPods 最大的问题是,它为你创建一个 Xcode 工作空间,向内添加它的 Pod 项目,以此来实现“对项目设置过程的掌控”。

所以,Carthage 诞生了!它可以帮助我们协调 Git 和 Xcode 间的操作,为所有依赖选取兼容版本,检查 Git 依赖,最后用 Xcode 构建框架。

开发者使用 Carthage 需要完成以下几个步骤:

  1. 第一步,你需要安装 Carthage ,可以下载预打包的二进制安装程序,或使用 Homebrew 直接安装。当然你只需要安装一次。
  2. 然后,你需要在 Cartfile 中指定所有 GitHub 依赖,例如:
    github "Mantle/Mantle" ~> 1.5
    github "ReactiveCocoa/ReactiveCocoa" >= 2.4.7
    github "ReactiveCocoa/ReactiveCocoaLayout" == 0.5.2
  3. Cart 文件创建完成后,执行 carthage update 递归下载并构建所有依赖。
  4. 最后,Carthage 构建的所有框架可以被添加到 Xcode 项目中。对于 iOS 来说,由于 App Store 不允许框架二进制文件包含 X86_64 的二进制文件,所以额外需要一个剥离体系结构的步骤。

Carthage 确实有一个限制,它只支持框架,所以不能用来针对 iOS 8 以前的系统版本进行开发。

查看英文原文: Carthage: GitHub's Dependency Manager for Xcode Projects


感谢邵思华对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

收藏

评论

微博

用户头像
发表评论

注册/登录 InfoQ 发表评论