Carthage 是什么?html
这个问题咱们简单点一句话总结: 你知道什么事CocoaPods吧,我相信只要是作iOS的都知道,Carthage 的属性和做用和咱们经常使用的CocoaPods都是同样的,这样我相信不知道这玩意的同窗也就知道了它是用来干吗的。咱们也就再也不过多的解释。git
Carthage和CocoaPods有什么不一样吗?github
一、使用了CocoaPods的项目是高度集成的,而Carthage更灵活强调尽量将任务委托给Xcode和Git。服务器
"CocoaPods在使用中会自动建立和更新workspace、依赖和Pod项目并进行整合;微信
"Carthage在使用中不须要建立和集成相应的workspace和project,只须要依赖打包好的framework文件便可。架构
"总结一下,CocoaPods的方法更容易使用,而Carthage更灵活且对项目没有侵入性。app
二、CocoaPods相对来讲功能要比Carthage多不少,所以也更复杂,而CocoaPods配置简单项目干净。框架
三、CocoaPods有一个中心仓库,而Carthage是去中心化的,没有中心服务器也就避免了可能因中心节点错误而带来的失败,即Carthage每次配置和更新环境,只会去更新具体的库,时间更快。ide
四、想让本身的第三方库支持Carthage比让其支持CocoaPods更加的简单。函数
Carthage的不足
一、库依然不如 CocoaPods 丰富
二、仅支持iOS8+
三、工具尚且不如CocoaPods(已经发布了app)
四、在使用第三方库的过程当中没法查看源码
Carthage的安装和卸载
安装方式我就建议直接PKG安装,简单粗暴: 下载地址 ----- https://github.com/Carthage/Carthage/releases
固然还有另外的安装方式,具体的你们能够看看 Carthage 具体git上是怎么说的
卸载就比较简单了:终端 $ brew uninstall Carthage
Carthage的使用
它的使用是重点,但我不想直接说它是怎么用的就完事了,我最近有看《APP架构》这本书,关于这本书在咱们微信的小专栏也有王巍的翻译版本,具体的关于这本书的代码内容以及视频都在这里 https://github.com/objcio/app-architecture
在看关于MVVM-C这部分的代码的时候,编译它的项目的时候就接触到了Carthage 。由于它用到了 RxSwift 这个函数式框架,要是细心点的话就会在它的项目代码中看到这份README (read me)哈哈
当你点开真的去read he 以后,就看到如下内容:
其实上面这份文件已经说得差很少了,咱们说一点须要咱们注意的,这点内容送给可能也是在看这本书,可能也是有遇到这点小麻烦的同窗。
关于上面这个你首先把它的 Cartfile 文件和 Cartfile.resolved 删除了,由于咱们要使用更新一点的三方资源
而后按下面步骤走:(用终端)
一、cd 到项目路径下
二、touch Cartfile
三、Cartfile 文件里面添加 RxDataSources 的路径就能够了,不要直接按照下面写
github "ReactiveX/RxSwift" "4.4.0"
github "RxSwiftCommunity/RxDataSources" "3.1.0"
由于不行
正确的作法是:
github "RxSwiftCommunity/RxDataSources" "3.1.0" 就能够了! why?
由于RxDataSources是依赖RxSwift的,座椅他会本身去添加,若是你要是按照上面错误的写法,你会发现RxDataSources的framework你是死活都拉不进去的!
四、终端执行:Carthage update --platform iOS
五、把你须要的framework从下面这个路径当中找到添加到你的 Link Binary With Libraries 中
Carthage -- Build -- iOS -- 须要的 framework
要想更新一下三方库该怎么办?
更新多个框架:修改Cartfile文件,并从新执行 $ Carthage update
更新某个框架:$ Carthage update 具体的框架名称