注释:本文来自网络原文地址:[攻城利器 —— Carthage简单介绍
PS:其在开发中选择哪一种方法管理第三方框架依照项目需求以及沟通决定
本文适合小白去了解Carthage,高手请绕行~
说到Carthage,就要先说swift,2014年苹果发布swift初期,用swift编写的第三方库就只能通过拖动源代码到自己的项目中才能被调用, 由于当时只有寥寥无几的开源库,且不能打包,加上swift1.0并不是那么好用,许多人对swift持着观望的态度。随着swift逐步趋于稳定,并且从ios8.0开始支持将自己写的swift打包成framework,越来越多的纯swift编写框架开始出现,就在这时候carthage突然出现在人们的视野中,而且陆陆续续几乎所有的开源框架都开始支持carthage。
什么是Carthage
- 主页:Carthage
- 作者:Justin Spahr-Summers等
- 目标:用最简单的方式来管理Cocoa等第三方框架
- 特点:第三方库框架管理工具(类似于cocoapods)Carthage为用户管理第三方框架和依赖,但不会自动修改项目文件和生成配置,把对项目结构和设置的控制权交给用户
- 原理:自动将第三方框架编程为Dynamic framework(动态库)
- 限制:仅支持iOS8.0+,不能用来针对iOS8以前的系统版本进行开发
Carthage和cocoapods区别
-
1)使用了
cocoapods的项目是高度集中
的,而Carthage更灵活强调尽可能将任务委托给Xcode和Git
- cocoapods在使用中会自动创建和更新workspace、依赖和Pod项目并进行整合;
- Carthage在使用中不需要创建和继承相应的workspace和project,只需要依赖打包好的framework文件即可
- 总结:cocoapods的方法更容易使用,而Carthage更灵活且对项目没有侵入性
2)cocoapods相对来说功能要比Carthage多很多,因此也更复杂,而Cocoapods配置简单项目干净
3)Cocoapods有一个中心仓库,而Carthage是去中心化的,没有中心服务器也就避免了可能因中心节点错误而带来的失败,即Carthage每次配置和更新环境,只会去更新具体的库,时间更快
4)想让自己的第三方库支持Carthage比让其支持cocoapods更加的简单
-
5)Carthage存在的一些缺陷
- 库依然不如CocoaPods丰富
- 仅支持iOS8+
- 在使用第三方库的过程中无法查看源码
Carthage的安装和使用
Carthage安装
- 1)直接下载Carthage.pkg安装包,安装运行
- 2)如果使用的Xcode7.0+版本,那么可以使用下面的方法来安装
- 安装home-brew
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 升级brew
$ brew update
- 使用brew来安装
$ brew install Carthage
- 查看版本
$ Carthage version
- 安装home-brew
Carthage使用
- 1)先进入到项目所在的文件夹
$ cd ~/Path/Project
- 2)创建一个空的Carthage文件
$ touch Cartfile
- 3)编辑cartfile文件,例如要安装AFN框架
- 4)保存并关闭cartfile文件,使用cartfile安装框架
$ Carthage update --platform iOS
- 5)打开Carthage查看生成的文件目录
$ open Carthage
![Carthage生成的文件.png](http://upload-images.jianshu.io/upload_images/3960806-0a3b21733c1986d2.png?
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)- 文件目录说明:
- || Carthage/Checkouts目录:从github获取的源代码
- || Carthage/Build目录:编译出来的Framework二进制代码库
- 文件目录说明:
- 6)配置项目
- 打开项目,点击Target -> Build Phases -> Link Library with Libraries选择Carthage/Build目录中导入的framework
- 7)添加编译的脚本(该脚本文件保证在提交归档时会对相关文件和dSYMs进行复制)
- (1)点击Build Phases,点击“+” -> New Run Script Phase
- (2)添加脚本
/usr/local/bin/Carthage copy-frameworks
- (3)添加“Input Files”
$(SRCROOT)/Carthage/Build/iOS/AFNetworking.framework
- (1)点击Build Phases,点击“+” -> New Run Script Phase
- 8)在项目中使用第三方库
#import <AFNetworking/AFNetworking.h>
其他
- 卸载Carthage:
$ brew uninstall Carthage
- 更新第三方框架:
- 更新多个框架:修改Carfile文件,并从新执行
$ Carthage update
- 更新某个框架:
$ Carthage update 具体的框架名称
- 更新多个框架:修改Carfile文件,并从新执行
- Carthage的工作过程说明
- ① 创建一个Cartfile文件,在该文件中列出您想使用的框架
- ② 运行Carthage,获取并编译Cartfile文件中列出的框架
- ③ 把框架的二进制文件配置到项目中