BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Sergio De Simone 关注 14 他的粉丝 ,译者 刘振涛 关注 22 他的粉丝 发布于 2015年5月6日. 估计阅读时间: 3 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

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账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT