iOS依赖库管理工具之Carthage
在iOS开发中,我们常会用CocoaPods来进行依赖库的管理。CoaoaPods 是一套整体解决方案,我们在 Podfile
中指定好我们需要的第三方库,然后 CocoaPods 就会进行下载,集成,然后修改或者创建我们项目的 workspace
文件。
相比之下,Carthage
就要轻量很多,它也需要一个叫做 Cartfile
的描述文件,但 Carthage
不会对我们的项目结构进行任何修改,更不多创建 workspace
。它只是根据我们描述文件中配置的第三方库,将它们下载到本地,然后使用 xcodebuild
构建成 framework
文件。然后由我们自己将这些库集成到项目中。Carthage
使用的是一种非侵入性的哲学。作为开发者,必须在 Carthage
将第三方库构建完成后,手动的关联到项目中。
另外 Carthage
除了非侵入性,它还是去中心化的,它的包管理不像 CocoaPods
那样,有一个中心服务器(cocoapods.org),来管理各个包的元信息,而是依赖于每个第三方库自己的源地址,比如 Github
。这样也是有利有弊,好处就是我们对包管理不再依赖中心服务器,不会受中心服务器信息量和稳定性的限制(尤其是在我们这里的网络访问状况问题),弊端嘛,就是我们想查找第三方库的时候,也没有一个中心服务器来帮助我们进行索引,而是必须从网络上自行查找。
1.安装Carthage
- 方法一:打开终端,输入如下指令。
$ brew update
$ brew install carthage
- 方法二:在Github 主页上,找到下载地址:https://github.com/Carthage/Carthage/releases,找到Carthage.pkg,下载安装即可。
安装完成后,在终端执行如下指令,可以查看当前carthage的版本:
$ carthage version
2.使用Carthage
- 第一步:通过终端进入你的项目文件夹,示例如下:
$ cd /Users/GofLee/Desktop/Source/SwiftDemo/SwiftDemo/ThirdLibrary
- 第二步:创建一个空的carthage文件,指令如下:
$ touch Cartfile
此时项目文件夹里会创建一个名为Cartfile的文件。
- 第三步:使用xcode打开Cartfile文件:
$ open -a Xcode Cartfile
在打开的文件中输入你所要导入的第三方库,示例所示:
github "Alamofire/Alamofire"
github "SwiftyJSON/SwiftyJSON"
当然也可以指定版本号,没有指明版本号的时候,则会自动使用最新的版本。指定版本号示例:
github "Alamofire/Alamofire" ~> 3.4.0
- 第四步:保存并关闭Cartfile文件,在终端执行如下命令:
$ carthage update --platform iOS
carthage会为你下载和编译所需要的第三方库,当命令执行完毕,在你的项目文件夹中会创建一个名为Carthage的文件夹。在 ~/Carthage/Build/iOS里会出现framework和dSYM文件,如下所示:
【说明】:
- 由于此处只需要导入iOS平台下的库,所以指定了平台,如果需要全部库,那么去掉后面的"--platform iOS"即可。
- Build 中存放的是构建好的 framework 包;
- Checkouts 中存放的是第三方库项目源文件。
- 第五步:回到项目设置,进入 General 选项卡,在最下方的 Linked Frameworks and Libraries 中,将Carthage/Build/iOS 中的 framework 文件添加到项目中,如下图所示:
- 第六步:在 Build Phrases 中,点击左上角的 + 号,添加一个 New Run Script Phrase,在脚本区域输入:
/usr/local/bin/carthage copy-frameworks
最后将 Alamofire 和 SwiftyJSON 的路径添加到 Input Files 中,如下图所示:
添加这个 Run Script 的作用是为了让运行时能够找到这个动态库。这点 Carthage 官方文档中没有太明确的说明。我实际的实验过,如果不添加这个 copy-frameworks
脚本,那么项目在运行的时候会因为找不到这个动态库而在启动的时候崩溃。
3.使用导入库
生成和配置好第三方库之后,我们可以很简单的来使用,直接在要使用的文件中导入,示例如下:
import Alamofire
import SwiftyJSON
4.附录
如果需要在调试时进入第三方库内部的代码,那么可以参看下面部分的内容。
进入 Build Phrases ,然后在右上角点击 New Copy Files Phrase,然后将Carthage/Build/iOS 目录中的 dSYM 符号文件拖动进来,如下图所示:
这样项目在运行后,就可以在断点中步入 第三方库 内部的代码进行调试。
如果在导入dSYM文件遇到编译错误,那么检查一下如下配置项,确保其值为NO:
iOS依赖库管理工具之Carthage的更多相关文章
- iOS依赖库管理工具之CocoaPods
CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具.利用 CocoaPods,可以定义自己的依赖关系库 (称作 pods),并且随着时间的变化,在整个开发环境中对第 ...
- iOS第三方库管理工具
作者:彷徨iOS 原文地址1:http://iostree.sinaapp.com/?p=78 原文地址2:http://blog.csdn.net/wzzvictory/article/detail ...
- Cocoa 新的依赖管理工具:Carthage
昨天搞了一下pod的安装 因为之前我都是在使用pod来进行第三方库的管理 但是拿到项目之后 竟发现这个前辈是用Carthage 说真的在这之前我从来没有用过这个玩意因为我感觉用POD已经很好了啊 很方 ...
- 一、初识CocoaPods——XCode的依赖库管理工具
概述 任意一款功能完整的APP,其中所涉及的内容都将是来自各个领域各个方面的.如果每个领域的每个方面都要重新开发并给予充分测试,那么1个APP的开发周期将会变得非常漫长,长到足以让房价再涨一倍,长到足 ...
- XCode的依赖库管理工具——CocoaPods
安装CocoaPods 首先,在启动台里打开终端(terminal),并在终端里输入“sudo gem install cocoapods”,按回车后输入电脑用户密码(注意:输入期间不会显示“***” ...
- 安装Cocoa 新的依赖管理工具Carthage
Cocoa的依赖管理器,我们已经有了CocoaPods,非常好用,那么为什么还要创建这样一个项目呢?本文翻译自Carthage的Github的README.md,带大家来了解一下这个工具有何不同之处. ...
- iOS开发之CocoaPods(objective-c第三方库管理工具)
介绍: iOS开发中,大多数情况下,我们都须要集成一些第三方依赖库.对于一个稍大的项目,用到的第三方依赖库的数量也很可观.CocoaPods是objective-c第三方库管理工具,方便第三方库的管理 ...
- IOS开发依赖管理工具CocoaPods
CocoaPods IOS开发依赖管理工具 CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It ...
- iOS 中的第三方库管理工具
xcode没有android studio中的gradle进行第三方库管理,但是有第三方的库管理工具CocoaPods,https://github.com/CocoaPods/CocoaPods/w ...
随机推荐
- Razor Page 文件
Razor Pages 所有的Razor文件都以 .cshtml 结尾.大部分Razor文件都是可浏览的,包含客户端代码和服务器端代码的混合,处理后会将HTML发送到浏览器.这些页面通常被称为“内容页 ...
- 2、阿里云ECS发送邮件到腾讯企业邮箱(ECS默认不开启25端口)
阿里云ECS默认禁用25端口导致发邮件失败. 方法一: 使用shell脚本发送邮件,需要配置mailx 1.安装软件 yum install mailx 2.配置 vim /etc/mail.rc在文 ...
- PHP批量更新数据
/** * 批量更新函数 * @param $data array 待更新的数据,二维数组格式 * @param array $params array 值相同的条件,键值对应的一维数组 * @par ...
- Topologies on product spaces of $\mathbb{R}$ and their relationships
In this post, I will summarise several topologies established on the product spaces of \(\mathbb{R}\ ...
- hdfs api
经常用到,做个眼 如果是单机版 centos(参照给力星 Hadoop配置),要在 core-site.xml 里面配置 ip:9000 别 localhost:9000 windows ...
- Anaconda的安装与使用
1. 安装Anaconda(Command Line) 1.1 下载 首先去Anaconda官网查看下载链接,然后通过命令行下载: $ wget https://repo.anaconda.com/a ...
- 【Java并发编程一】线程安全问题
1.多线程的实现 多线程有两种实现方式: 1.1.继承Thread类 =>示例:A a=new A(); a.start(); 1.2.实现Runnable接口 =>示例:A a=ne ...
- C语言第零次作业
Q1.你对网络专业或者计算机专业了解是怎样? 说实话不了解网络专业,在甚至在填志愿之前我都不曾听说过.但经过一番的查阅资料.现在,首先我了解到我们主要学习计算机.通信以及网络方面的基础理论.设计原理, ...
- angularjs和ajax的结合使用 (三)
转眼九月份了,忙忙碌碌 发现今年还没开过张,写一篇吧. 15年在空闲时就倒腾过angularjs那玩意儿 ,觉得还是挺好的,李金龙那厚厚的一本书,只不过没有系统化应用.最主要的是原来有一个东西没有用到 ...
- C++第一课:基本语法for Visual Studio 2015[个人见解]
在学习C++时,或许不了解情况的人会问:到底先学习C语言还是C++,哪个更好? 那么小编的个人见解是:你在学习时别管哪个语言好与不好,是个语言它都是好语言,关键在于你会挖掘其中存在的价值,C++可以说 ...