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 具體的框架名稱