上篇博客详细的聊了CocoaPods的相关内容,今天我们就来介绍另一个Cocoa的包管理器Carthage。在上家公司用Swift开发工程时,用的就是Carthage。Carthage诞生于14年11月份,是用Swift语言开发的,相对于CocoaPods来说是一个新生事物。本篇博客主要介绍一下Carthage的使用姿势,接下来几篇博客会介绍一下Carthage的源代码,看一下其工作原理。本篇博客我们会先介绍Carthage的按照和使用,然后再看一下Carthage额工作原理,然后再将自己的库关联到Carthage,最后来对比一下CocoaPods。
首先我们来看一下Carthage的官方介绍:Carthage的初衷是以最简单的方式来为你的Cocoa应用添加framework。Carthage将你依赖的三方库编译成二进制的framework,然后再提供给你使用。但是对你的工程结构有着完整的控制权。Carthage不会自动的修改你的工程文件或者编译设置。
Carthage is intended to be the simplest way to add frameworks to your Cocoa application.Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup. Carthage does not automatically modify your project files or your build settings.
一、Carthage的安装和使用
1、Carthage的安装
Carthage的安装是比较简单的,通过brew就可以直接安装,命令如下:
brew install carthage
2、Carthage的使用-carthage update
Carthage中管理依赖的文件为Carfile,我们可以创建一个名为Cartfile的文件来容纳我们工程中所依赖的三方库。如下所示下方的Cartfile中依赖了一个AFNetWorking库和一个并没有支持Carthage的私有库。在Cartfile文件中,我们以github来直接指定该库在github上的域名path。添加完Cartfile文件后,接下来我们通过下方的命令进行安装即可。
carthage update
在执行上述命令时我们看到,对于“MyCocoaPodsTestProject”这个依赖仓库提示“该仓库没有被分享的framework schemes”, 稍后我们将会对“MyCocoaPodsTestProject”这个仓库添加shared framerwork schemes。
执行完carthage update命令后,会生成一个Cartfile.resoved的文件和一个Carthage的文件夹。这个.resolved的文件与CocoaPods中的lock文件功能一致,都是用来锁版本的。而这个Carthage文件夹下存放的就是Carthage为我们提供的动态库framework。
3、工程中引入framework
接下来要做的就是把Carthage生成的相应依赖库的framework引入到我们的工程中。首先找到我们工程对应的Targets, 然后找到Build Phases下方的 ➕号下方的New Run Script Phase, 来添加引入framework的相关脚本。
下方是刚刚添加的Run Script,稍后会进行配置。
在Shell下方配置上carthage的命令路径以及相关的运行命令的参数,如下所示:
/usr/local/bin/carthage copy-frameworks
配置完相关的运行脚本后,在Link Binary With Libraries中添加或者拖入生成的三方库即可。
拖入完毕后,接下来我们就可以直接使用了。