9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

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

  • 2015-05-05
  • 本文字数:1228 字

    阅读完需:约 4 分钟

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 的二进制文件,所以额外需要一个剥离体系结构的步骤。
{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(微信同手机号)。

2015-05-05 08:493451
用户头像

发布了 63 篇内容, 共 130.6 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

Android基础系列(3)编译时注解处理器APT,android订餐系统源码

android 程序员 移动开发

学习总结(第二周)

Geek_1d37ea

架构实战营

Android大牛是如何炼成的:郭霖的成长之路专访,flutter游戏引擎

android 程序员 移动开发

Android岗常见40道面试题,面试前必须了解的知识点!,android开发工程师企业所在区域

android 程序员 移动开发

Android刘海屏、水滴屏全面屏适配详解,996页阿里Android面试真题解析火爆全网

android 程序员 移动开发

Android基础进阶 - 消息机制 之Native层分析,统统给你解决

android 程序员 移动开发

Android小白在两年时间成为一个大牛,我究竟做了什么?

android 程序员 移动开发

Android在开发初期之后应该何如学习?怎样才算精通?方向在哪儿

android 程序员 移动开发

Android大牛近期大厂面试详解(附解答),hashmap底层原理

android 程序员 移动开发

Android入门项目(八)Android流式筛选弹框,android应用程序开发的流程

android 程序员 移动开发

Android关于Canvas你所知道的和不知道的一切,银行软件开发面试题

android 程序员 移动开发

Android启动优化、布局优化必经之路—如何精准获取页面绘制时间

android 程序员 移动开发

Android基础之Binder分析,flutter环境变量配置

android 程序员 移动开发

Android复习资料——常见面试算法题汇总,2021年最新Android大厂面试笔试题分享

android 程序员 移动开发

Android学习趋势:讲一下音视频热点知识,移动设备开发图书

android 程序员 移动开发

Android布局优化技巧大盘点,最新BAT大厂面试者整理的Android面试题目

android 程序员 移动开发

Android刘海屏、水滴屏全面屏适配方案,80后程序员感慨中年危机

android 程序员 移动开发

Android动画之属性动画,移动智能终端开发技术题库

android 程序员 移动开发

Android四大组件之一(broadcast receiver)(1),kotlin版权

android 程序员 移动开发

Android屏幕适配前先了解这些,在阿里工作5年了

android 程序员 移动开发

Android中级面筋:开发2年的程序员如何短期突击面试?跟着这几步去准备

android 程序员 移动开发

Android企业级实战-界面篇-3,oppo android面试

android 程序员 移动开发

Android妹子深夜和我视频,哭的像个泪人,我该怎么安慰

android 程序员 移动开发

Android事件分发机制三:事件分发工作流程,开发者必备的顶级Android开发工具

android 程序员 移动开发

Android四大组件之一(broadcast receiver),全网首发

android 程序员 移动开发

Android学习别“走弯路”,django实战项目源码

android 程序员 移动开发

Android全面解析之Handler机制:常见问题汇总,kotlin静态类

android 程序员 移动开发

Android原生系统真的那么好用吗?安卓原生系统吊打其他系统,因为有Google-Play

android 程序员 移动开发

模块二作业

Geek_1d37ea

架构实战营

Android事件分发机制五:面试官你坐啊,android串口开发入门

android 程序员 移动开发

Android事件分发机制,总结到位

android 程序员 移动开发

  • 扫码添加小助手
    领取最新资料包
Carthage:Xcode项目的GitHub依赖管理器_Android/iOS_Sergio De Simone_InfoQ精选文章