iOS - CocoaPods 和 Carthage 的比較


CocoaPods 好處?

  • 開發 iOS 項目不可避免地要使用第三方開源庫,CocoaPods 的出現使得我們可以節省設置和更新第三方開源庫的時間
  • 在引入第三方庫時它可以自動為我們完成各種各樣的配置,包括配置編譯階段、連接器選項、甚至是 ARC環境下的 -fno-objc-arc 配置等

Carthage 好處?

  • 通過Carthage可以將一部分不常變的庫打包成framework,再引如到主工程,這樣可以減少開發過程中的編譯時間。
  • 可以將一些編譯時間很長的庫打包成framework。
  • 國內防火牆的緣故,有些庫的下載慢到一定境界,這個時候,使用Carthage就是福音了。
  • 同時可以優化CI的編譯、打包時間。

三、Carthage 和 CocoaPods 的不同之處:

CocoaPods (默認)自動建立和更新一個 Xcode workspace,用來管理你的項目和所有依賴。Carthage 使用xcodebuild 來編譯出二進制庫,剩下的集成工作完全交給開發人員。
CocoaPods 使用起來方便,Carthage 更加靈活並且對現有項目沒有太多的侵略性。
CocoaPods 希望建立一個生態系統,可以更加方便的發現和集成第三方代碼庫。Carthage 希望變成一個去中心化的依賴管理系統,不提供中心化的項目列表,減少維護成本和單點失敗的概率。不過這樣給開發人員尋找項目帶來不便。
CocoaPods 的項目需要配置 podspec 文件,包含了項目和第三方庫的信息。Carthage 並不使用類似的配置文件,第三方庫的依賴關系是通過 Xcode 項目來配置的。

 

http://kaaaaai.cn/articles/036.html

 

http://www.cocoachina.com/special/20160926/17635.html

CocoaPods是已存在很長時間的Cocoa依賴管理器, 那么為什么要創建Carthage呢?
1) CoaoaPods 是一套整體解決方案,我們在 Podfile 中指定好我們需要的第三方庫。然后 CocoaPods 就會進行下載,集成,然后修改或者創建我們項目的 workspace 文件,這一系列整體操作。
2) 相比之下,Carthage 就要輕量很多,它也會一個叫做 Cartfile 描述文件,但 Carthage 不會對我們的項目結構進行任何修改,更不多創建 workspace。它只是根據我們描述文件中配置的第三方庫,將他們下載到本地,然后用 xcodebuild 構建成 framework 文件。然后由我們自己將這些庫集成到項目中。Carthage 使用的是一種非侵入性的哲學。

 

Carthage or CocoaPods? 3

CocoaPods 有如下優勢: 

① 使用方便, 除編寫 Podfile 以外其他幾乎都是自動完成;
② 軟件包數量多,主流支持;
③ 支持 iOS 8 Framework,當然也支持舊的靜態編譯.

但是 CocoaPods 作為一個有中心倉庫的解決方案,缺點也比較明顯:

1?? 每次更新環境都需要連接到中心倉庫,比較耗時;
2?? 開發者使用比較簡單,但是如果創建兼容 CocoaPods 的庫,就會相對繁瑣一些(盡管有了命令行);
3?? 每次干凈編譯都會把所有第三方庫都重新編譯一次

Carthage 的優勢: 

① 使用 Carthage 的話,所有的第三方庫依賴,除非是更新的需要,不然平常干凈編譯 Project,它是不需要再次編譯的,大大加快平常編譯及 Archive 的時間.
② 它是去中心化的,沒有中心服務器. 這意味着每次配置和更新環境,只會去更新具體的庫,而不會有一個向中心服務器獲取最新庫的索引這么個過程,如此又省了很多時間.
③  CocoaPods 無縫集成!一個項目可同時使用兩套包管理工具, 當前 CocoaPods 管理主要 Framework 的配置下, 將少量其他 Framework 交給了 Carthage 管理, 二者可以和諧地共存.
④ 結構標准的項目天然就是 Carthage 庫.

Carthage 的不足:

1?? 庫依然不如 CocoaPods 豐富:盡管很多庫不需要聲明並改造就直接可以被 Carthage 用,但依然有大量 CocoaPods 能用的庫不支持,我相信時間能解決這個問題;
2?? 只支持 Framework,所以是 iOS 8 Only了,隨着時間推移,這個也不會是問題;
3?? 工具仍不完善:在使用過程中,發現它無法在一個結構復雜的項目中正確發現庫(比如有 iOS, Mac demo + framework 的結構);
4?? 無法在 Xcode 里定位到源碼:如果你在寫代碼過程中,想跳轉到一個第三方庫去看具體的實現,這是無法辦到的,Carthage 的配置只能讓你看到一個庫的頭文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM