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 origin
Carthage
支持两种类型的源,一个是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
转载于:https://www.cnblogs.com/yujihaia/p/7425688.html
Carthage的安装和使用相关推荐
- Mac中Carthage的安装和使用
Carthage 使用于 Swift 语言编写,只支持动态框架,只支持 iOS8+的Cocoa依赖管理工具. 与现在流行的 CocoaPods 不同,Carthage编译你的依赖,并提供框架的二进制. ...
- Carthage入门篇-安装和使用
在iOS开发过程中,用到最多的三方库管理工具也许是Cocoapods.Cocoapods会自动为你创建一个workspace,然后自动将你要用到的三方库集成到Project中,而整个过程,你只需要对P ...
- Appium安装(Mac版)
一.Appium简介 Appium 是一个开源的.跨平台的测试框架,可以用来测试 Native App.混合应用.移动 Web 应用(H5 应用)等,是当下互联网企业实现移动自动化测试的重要工具. 二 ...
- Carthage简单介绍
01 Carthage简单介绍 主页:https://github.com/Carthage/Carthage.git 作者:Justin Spahr-Summers等 版本:0.18 目标:用最简单 ...
- Carthage 教程:开始
原文:Carthage Tutorial: Getting Started 作者:Lorenzo Boaro 译者:kmyhy 更新说明:本教程由 Lorenzo Boaro 升级至 iOS 11,X ...
- Swift Xcode12.0如何使用Carthage管理iOS依赖库
前言 很多ios开发者大概对CocoaPods并不陌生,我们几乎已经习惯了在pod文件中添加一行即可将一个库导入到自己的工程中,不得不说,在ios开发的历史中CocoaPods功不可没,即便在未来它也 ...
- appium ios 真机自动化环境搭建
近期由于工作需要,本小菜在弄appium+ios+iphone真机的移动自动化,在网上找寻各种资料,发现针对IOS方面的资料少之又少,公司其它部门的弄过的同事也寥寥无几,即使有,也是安卓方面的.本次书 ...
- 开启iOS自动化测试之门
开启iOS appium自动化测试之门 Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持iOS.Android及FirefoxOS平台. ...
- XMNetworking 网络库的设计与使用
2019独角兽企业重金招聘Python工程师标准>>> XMNetwoking 是我们团队开源的一个网络库,详见:GitHub XMNetworking 是一个轻量的.简单易用但功能 ...
- Win + Appium + Android/IOS + Python环境搭建
说明:此文章仅为自己学习时记录,比较乱,不推荐读者查阅. IOS自动化测试: 注意:WebDriverAgent最好下载appium的(而不是facebook下的):GitHub - appium/ ...
最新文章
- AAAI 2020 | 时间可以是二维的吗?基于二维时间图的视频内容片段检测
- 测试数据库sql声明效率
- VTK:vtkAnnotatedCubeActor用法实战
- 2_3 ProxyMode.cpp 代理模式
- 【笔记】spring定时器时间配置实例
- 这四种攻击单片机的主要技术你了解多少?
- 在windows实现和smtp交互发送邮件
- lightGBM用于排序(Learning to Rank )
- windows中的凭据管理
- [软工]可行性分析报告
- CorelDRAWX8试用到期了怎么免费使用?cdrX8
- 苹果4如何添加时间插件_【苹果搞机】苹果设备越狱后的第一步如何添加软件源...
- 网站变更服务器要重新备案吗,网站更换服务器要重新备案吗
- Windows10 关闭传递优化
- Springboot启动提示:com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILAB
- uniCloud学习笔记---uniId
- LeetCode记录总结
- 网易滑块识别-通用滑块识别
- 建模simulink - xpc自定义模块设置
- 海伦公式计算三角形面积 C++
热门文章
- chrome安装测试打包插件
- LINUX加载静态库so,取得函数地址并调用
- OFFICE必学技巧开篇
- ubuntu启动virtualbox出错解决办法:RTR3InitEx failed with rc=-1912 (rc=-1912)
- 正态分布里的西格玛_七大数据陷阱之油腻的统计学:正态分布来了
- gcc/g++使用及gdb调试新手入门
- 用python设计简易计算器代码_Python简易计算器制作方法代码详解
- linux 图形化修改时区,Centos 7图形化与安装中文支持与修改时区方法
- excel单元格内加空格_Excel基础知识,你懂多少?
- python爬虫的国内外现状_Python3.5多线程爬虫越爬越慢的解决方法