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 需要完成以下几个步骤:
- 第一步,你需要安装 Carthage ,可以下载预打包的二进制安装程序,或使用 Homebrew 直接安装。当然你只需要安装一次。
- 然后,你需要在 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 的二进制文件,所以额外需要一个剥离体系结构的步骤。 {1} Carthage 确实有一个限制,它只支持框架,所以不能用来针对 iOS 8 以前的系统版本进行开发。 {1} ** 查看英文原文:**[Carthage: GitHub's Dependency Manager for Xcode Projects](http://www.infoq.com/news/2015/04/carthage-dependency-manager) {1} - - - - - - {1} 感谢 [邵思华](http://www.infoq.com/cn/author/%E9%82%B5%E6%80%9D%E5%8D%8E) 对本文的审校。 {1} 给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 [editors@cn.infoq.com](mailto:editors@cn.infoq.com)。也欢迎大家通过新浪微博([@InfoQ](http://www.weibo.com/infoqchina),[@丁晓昀](http://weibo.com/u/1451714913)),微信(微信号:[InfoQChina](http://weixin.sogou.com/gzh?openid=oIWsFt0HnZ93MfLi3pW2ggVJFRxY))关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群 [![InfoQ 好读者](http://pub.idqqimg.com/wpa/images/group.png "InfoQ 好读者 ")](http://shang.qq.com/wpa/qunwpa?idkey=cc82a73d7522f0090aa3cbb6a8f4bdafa8b82177f481014c976a8740d927997a))。
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论