Carthage的安装和使用
为什么要使用Carthage
CocoaPods是已存在很长时间的Cocoa依赖管理器, 那么为什么要创建Carthage呢?
CoaoaPods是一套整体解决方案,我们在Podfile中指定好我们需要的第三方库。然后CocoaPods就会进行下载,集成,然后修改或者创建我们项目的workspace文件,这一系列整体操作。- 相比之下,
Carthage就要轻量很多,它也会有一个叫做Cartfile描述文件,但Carthage不会对我们的项目结构进行任何修改,更不多创建workspace。它只是根据我们描述文件中配置的第三方库,将他们下载到本地,然后用xcodebuild构建成framework文件。然后由我们自己将这些库集成到项目中。
Carthage和Cocoapods比较
Cocoapods有如下优点:
① 使用方便,除编写
Podfile以外,其他几乎都是自动完成;
② 软件包数量多,主流支持;
③ 支持 iOS 8 Framework,当然也支持旧的静态编译;
但是 CocoaPods 作为一个有中心仓库的解决方案,缺点也比较明显:
① 每次更新环境都需要连接到中心仓库,比较耗时;
② 开发者使用比较简单,但是如果创建兼容 CocoaPods 的库,就会相对繁琐一些(尽管有了命令行);
③ 每次干净编译都会把所有第三方库都重新编译一次;
Carthage的优点:
① 使用
Carthage的话,所有的第三方库依赖,除非是更新的需要,不然平常干净编译Project,它是不需要再次编译的,大大加快平常编译及Archive的时间;
② 它是去中心化的,没有中心服务器. 这意味着每次配置和更新环境,只会去更新具体的库,而不会有一个向中心服务器获取最新库的索引这么个过程,如此又省了很多时间;
③CocoaPods无缝集成!一个项目可同时使用两套包管理工具, 当前CocoaPods管理主要Framework的配置下, 将少量其他Framework交给了Carthage管理, 二者可以和谐地共存;
Carthage的不足:
① 库不如
CocoaPods丰富:尽管很多库不需要声明并改造就直接可以被Carthage用,但依然有大量CocoaPods能用的库不支持;
② 只支持Framework,所以是 iOS 8 Only了,随着时间推移,这个也不会是问题;
③ 无法在Xcode里定位到源码:如果你在写代码过程中,想跳转到一个第三方库去看具体的实现,这是无法办到的,Carthage的配置只能让你看到一个库的头文件
Carthage的安装
安装
brew
安装Carthage之前,需要安装brew,进入官网有详细安装步骤。获取
Homebrew打开终端,输入以下命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
获取最新版本
在终端输入命令:
brew update。注意:如果遇到
Error: The /usr/local directory is not writable.错误,就执行以下命令sudo chown -R $(whoami):admin /usr/local,再更新。其他
brew命令brew install git // 使用brew安装软件
brew uninstall wget // 使用brew卸载软件
brew search /wge*/ // 使用brew查询软件,其中/wge*/是个正则表达式,需要包含在/中
brew list // 列出已安装的软件
brew home // 用浏览器打开brew的官方网站
brew info // 显示软件信息
brew deps // 显示包依赖
安装
Carthage安装
brew之后,就可以安装Carthage了。
在终端运行brew install carthage
安装之后,查看版本
carthage version
Carthage的使用
- 进入项目所在文件夹
cd ~/路径/项目文件夹
- 创建一个空的
Cartfile文件
touch Cartfile
- 使用
Xcode打开该文件
open -a Xcode Cartfile
- 编辑
Cartfile(ps:本篇以导入RxSwift3.0为例子)
github "ReactiveX/RxSwift" ~> 3.0
Cartfile格式说明依赖源
Dependency originCarthage支持两种类型的源,一个是github,另一个是git。github表示依赖源,告诉Carthage去哪里下载文件。依赖源之后
跟上要下载的库,格式为Username/ProjectName``git关键字
后面跟的是资料库的地址,可以是远程的URL地址,使用git://,
http://,ssh://,或者是本地资料库地址。依赖版本号
Dependency Version告诉Carthage使用哪个版本,这是可选的,不写默认使用最新版本
- == 1.0 表示使用1.0版本
= 1.0 表示使用1.0或更高的版本
- ~> 1.0 表示使用版本1.0以上但是低于2.0的最新版本,如1.1,1.7
运行
Carthage保存并关闭
Carfile文件,回到终端,执行以下命令:carthage update
当命令执行完毕,在
Cartfile文件同级别的文件夹中生成一个名为
Carthage文件夹和Cartfile.resolved文件。打开Carthage
文件夹,可以看到一个文件夹Build。
注意:此处如果失败,可以查找相关解决办法。
添加
Frameworks到项目中点击
项目名称->target->General,在最底部找到Linked Frameworks and Libraries。将上一步运行完之后的framework添加进来。

目的是告诉
Xcode链接这个framework到项目中,允许你在代码中使用。下一步选择菜单上的
Build Phases,并添加一个新的Run Script,并添加以下命令:
/usr/local/bin/carthage copy-frameworks
点击Input Files下面的 + 号为每一个framework添加条目。
$(SRCROOT)/Carthage/Build/iOS/RxSwift.framework
$(SRCROOT)/Carthage/Build/iOS/RxBlocking.framework
$(SRCROOT)/Carthage/Build/iOS/RxCocoa.framework
$(SRCROOT)/Carthage/Build/iOS/RxTest.framework
严格来讲,build phase对项目运行来说不是必须的,但是,这巧妙的解决了APP因为使用的frameworks包含二进制图像的iOS模拟器在提交APP Store时会被自动拒绝的问题。
carthage copy-frameworks命令剔除了额外的框架。

command + B编译项目,编译成功之后就可以愉快地使用了。
import RxSwift
import RxCocoa
致谢
如果发现有错误的地方,欢迎评论,谢谢!
参考链接:Carthage
Carthage的安装和使用的更多相关文章
- Carthage入门篇-安装和使用
在iOS开发过程中,用到最多的三方库管理工具也许是Cocoapods.Cocoapods会自动为你创建一个workspace,然后自动将你要用到的三方库集成到Project中,而整个过程,你只需要对P ...
- IOS Carthage安装、使用
一.Carthage的安装和使用1.安装homebrew后输入如下命令 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercont ...
- 攻城利器 —— Carthage简单介绍
01 Carthage简单介绍 主页:https://github.com/Carthage/Carthage.git 作者:Justin Spahr-Summers等 版本:0.18 目标:用最简单 ...
- carthage 简单使用步骤
brew install carthage切至项目目录:cd xxx创建Cartfile文件vi Cartfile填写依赖git "https://xxxxx" "mas ...
- Cocoa包管理器之Carthage详解及CocoaPods中心化+Carthage的二进制化
上篇博客详细的聊了CocoaPods的相关内容,今天我们就来介绍另一个Cocoa的包管理器Carthage.在上家公司用Swift开发工程时,用的就是Carthage.Carthage诞生于14年11 ...
- Carthage 不知不觉用到了
Carthage 是什么? 这个问题我们简单点一句话总结: 你知道什么事CocoaPods吧,我相信只要是做iOS的都知道,Carthage 的属性和作用和我们常用的CocoaPods都是一样的,这样 ...
- cocoapods 安装使用详解
http://blog.csdn.net/showhilllee/article/details/38398119 http://www.jianshu.com/p/1222dd6c4271 删除 ...
- Mac&Appium&Python自动化测试-Appium安装
基础配置 1.JAVA和Git就不用多说了 2.Brew,也就是homebrew,它是MacOSX上的软件包管理工具,它就等同于linux上的apt-get.yum,如果没有安装,可以通过如下命令安装 ...
- Swift开发iOS应用过程中的问题和解决记录
虚拟机里安装OSX+XCode开发环境 用真机的请直接跳过这个部分. 主要是在VitrualBox里安装mac系统和xcode,参考这篇教程,VirtualBox的版本是4.3.18 r96156,O ...
随机推荐
- {新人笔记 勿看} spring mvc第一步
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- vue 高德地图之玩转周边
前言:在之前的博客中,有成功引入高德地图,这是以前的地址 vue 调用高德地图. 因为一些需求,需要使用到地图的周边功能. 完整的项目代码请查看 我的github 一 .先看要实现的结果,参考了链 ...
- PHP面向对象笔记解析
PHP的面向对象是很重要的内容,也是很常用的内容.所以现在就把PHP面向对象进行整理了一下. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百 ...
- schema 对象的简单介绍
官方文档链接地址 http://docs.oracle.com/cd/E11882_01/server.112/e40540/tablecls.htm#CNCPT010 Introduction to ...
- iOS 转场动画探究(二)
这篇文章是接着第一篇写的,要是有同行刚看到的话建议从前面第一篇看,这是第一篇的地址:iOS 转场动画探究(一) 接着上一篇写的内容: 上一篇iOS 转场动画探究(一)我们说到了转场要素的第四点,把那个 ...
- 在CentOS7上使用systemctl配置tomcat
最近买了一台阿里云,现在阿里云CentOS都已经支持7了(前面都是使用CentOS6),索性直接使用CentOS7,7上面目前最大区别就是service变成了现在的systemctl,简单的查了一下并 ...
- OpenCV学习2-----使用inpaint函数进行图像修复
安装opencv时,在opencv的安装路径下, sources\samples\cpp\ 路径里面提供了好多经典的例子,很值得学习. 这次的例子是利用inpaint函数进行图像修复. CV_EXP ...
- 【Android Developers Training】 34. 添加一个简单的分享行为(Action)
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Binder的工作原理浅析
在Android开发中,Binder主要用于Service中,包括AIDL和Messenger,其中Messenger的底层实现就是AIDL,所以我们这里通过AIDL来分析一下Binder的工作机制. ...
- CUDA零内存拷贝 疑问考证
今天思考了一下CUDA零内存拷贝的问题,感觉在即将设计的程序中会派上用场,于是就查了一下相关信息. 以下是一些有帮助的链接: cuda中的零拷贝用法--针对二维指针 cuda中的零拷贝用法--针对一维 ...