Cocoapods
cocoapoda 是ios最早。
优点:Carthage为用户管理第三方框架和依赖,但不会自动修改项目文件或构建设置,开发者可以完全控制项目结构和设置。
缺点:只支持iOS 8.0+,不能用来开发iOS 8.0以前的项目。
Carthage的安装
安装Carthage有多种选择:
pkg文件:下载并运行Carthage.pkg最新版本的文件,然后按照屏幕上的说明进行操作。
Homebrew:可以使用Homebrew安装Carthage
1、安装Homebrew,在终端运行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)",这条指令运行结束后,Homebrew就安装完成了,具体可以查看官网(https://brew.sh);
2、安装Carthage,在终端运行:brew update,等待运行结束后,接着运行:brew install carthage,这样Carthage就安装完成了。
注意:如果以前安装过Carthage,则应先删除/Library/Frameworks/CarthageKit.framework
源代码:只需要克隆master存储库的分支,然后在终端进入到项目目录下运行make install即可,这需要Xcode 8.3(Swift 3.1)支持。
Carthage的使用
新建一个项目(已经使用pod)

2、使用Carthage安装第三方库:
1、先进入到项目所在的文件夹
1
$ cd ~/Path/CartHageDemo
2、创建一个空的Cartfile文件(两种方式)
(1)使用终端创建:
1
$ touch Cartfile
(2)使用文本文件创建:
创建一个名为Cartfile的文件,并保存到项目目录下
3、编辑Cartfile文件,例如要安装MBProgressHUD框架
1
github "jdg/MBProgressHUD" ~> 1.0.0
4、保存并关闭Cartfile文件,使用Carthage安装框架
1
$ carthage update
执行完后目录文件只这样的

carthage会clone文件中对应的git第三方库,把每一个第三方库编译成二进制文件的framework文件。
其中--platform iOS命令是可选的,作用是保证只为iOS编译framework,如果不指定平台,会为全平台编译framework文件。如果想要了解更多的命令,可以运行carthage help update查看。

当指定平台后只会下载iOS平台
当命令执行完毕,在Cartfile文件同级别的文件夹中生成一个名为“Carthage”文件夹和“Cartfile.resolved”文件。打开Carthage文件夹,可以看到两个文件夹Build和Checkouts。
Cartfile.resolved:这个文件是辅助Cartfile的,需要被提交到版本库中,它有助于其他开发者使用和你相同版本的第三方库。
Build:包含每一个第三方库创建生成的framework,可以被集成到项目中,每一个framework都是依赖于源文件或者GitHub上的Releases版本。
Checkouts:这里包含的是转换成framework之前的源文件,Carthage有自己的缓存机制,所以不需要在不同的项目中对同一个的第三方库clone多次。
对于是否把Build和Checkouts文件夹提交到版本库取决于你,这不是必须的。如果提交的话,其他人clone了你的资料库就可以使用这两个文件中的内容。
不要改变Checkouts文件夹中的内容,因为如果使用carthage update 或者 carthage checkout命令的话,这个文件夹中的内容可以随时被复写,那么改动工作就白费了。如果一定要改动的话,在使用carthage update命令时,可以使用--use-submodules选项。如果加上这个选项的话,Carthage在添加每个依赖库的时候就会作为一个字模块。
如果其他人想要使用你的工程,你不需要在你的代码中提交已经编译好的framework,他们需要在check out你的工程之后执行carthage bootstrap命令。
bootstrap命令会根据Cartfile.resolved文件下载和编译依赖库的精确版本。另一方面,carthage update命令会更新项目中的第三方库的最新的编译版本,这是不可取的。
在"Carthage/Build/iOS"文件夹中会生成.framework文件。
####配置项目
导入framework


添加编译脚本
点击Target -> Build Phases -> “+” -> New Run Script Phase

展开Run Script,
1、在shell下面输入:/usr/local/bin/Carthage copy-frameworks;
2、在Input Files中加入:$(SRCROOT)/Carthage/Build/iOS/MBProgressHUD.framework;
3、在Output Files中加入:\((BUILT_PRODUCTS_DIR)/\)(FRAMEWORKS_FOLDER_PATH)/MBProgressHUD.framework

Carthage与CocoaPods的区别
1、Cocoapods通过创建一个更集中的生态系统来提高第三方开源库的可维护性和参与度,而Carthage强调尽可能灵活的将任务委托给Xcode和Git;
2、Cocoapods在使用中会自动创建和更新workspace、依赖和Pod项目并进行整合;
3、Carthage在使用中不需要创建和继承相应的workspace和project,只需要依赖打包好的framework文件即可。
总结:
Cocoapods的方法更加简单粗暴容易使用,而Carthage则更灵活且对项目没有侵入性。
CocoaPods项目还必须具有Podspec文件,其中包括有关该项目的元数据,并指出如何构建它。Carthage用于Xcode构建依赖关系,而不是将它们集成到单个工作空间中,它没有类似的规范文件。
Cocoapods有一个中心仓库,而Carthage是去中心化的,没有中心服务器也就避免了可能因中心节点错误而带来的失败,也减少了维护,即Carthage每次配置和更新环境,只会去更新具体的库,所需时间更短。
Carthage存在的一些缺陷:
1、支持Carthage的第三方库依然不如CocoaPods丰富;
2、仅支持iOS 8.0+;
3、在使用的过程中无法查看第三方库源码。