2016-06-10 73 views
3

我有一個迦太基和Cocoapods的項目。它們都有一個共同的依賴關係(準確地說是PureLayout)。奇怪的是,但項目編譯罰款沒有任何有關類重新聲明的錯誤等。 所以問題是:爲什麼它的工作和實際使用哪個版本的依賴項時,我打電話給PureLayout的方法 - 迦太基或Cocoapods'?可可豆和迦太基

+1

這裏是關於https://medium.com/ios-os-x-development/cocoapods-vs-carthage-675633e89c3e –

回答

2

CarthageCocoaPods在構建依賴項和將它們整合到項目中有很大不同。

CocoaPods是集中式的依賴管理器,它將構建您的依賴關係並通過創建新的.xcworkspace工作空間將它們直接集成到項目中。這意味着您可以在構建之後立即訪問構建依賴關係。

另一方面,迦太基是分散的依賴管理器,它使您將依賴項集成到項目中。 Carthage構建了Cartfile中指定的框架並將它們移動到Carthage/Builds文件夾中。構建過程之後,由您來集成和管理依賴關係。

在你的情況下,當你建立你的PureLayout依存性的CocoaPods和迦太基的CocoaPods它集成項目和迦太基離開你建立在Carthage/Builds這意味着你只使用的CocoaPods構建PureLayout版本。

此外,使用多個程序包/依賴項管理器是一種不好的做法。你應該堅持這一點,並對此感到滿意。

+0

的很好的解釋是的,如果我沒有鏈接項目與迦太基構建的框架,將會有毫無疑問,Cocoapods版本的作品。但我做到了。它現在位於鏈接框架和庫部分。這就是我很驚訝的原因。 –

1

的CocoaPods與迦太基

CocoaPods(默認)自動創建並更新的Xcode工作空間爲您的應用程序和所有的依賴。

Carthage使用Xcode構建構建框架二進制文件,但留下了將它們集成到用戶的責任。

CocoaPods方法更易於使用,而Carthage’s是靈活且不干擾的。

Carthage已被創建爲分散依賴管理器。沒有中央項目清單,這減少了維護工作,避免了任何中心點的故障。但是,項目發現更加困難 - 用戶必須訴諸GitHub的Trending頁面或類似頁面。

CocoaPods項目還必須具有所謂的podspec文件,該文件包含有關項目的元數據並指定應該如何構建它。

Carthage使用Xcode構建來構建依賴關係,而不是將它們集成到一個工作區中,它沒有類似的規範文件,但您的依賴項必須包含自己的Xcode項目,該項目描述瞭如何構建其產品。

最終,我們創建了Carthage,因爲我們需要最簡單的工具 - 一個dependency manager,它可以在不接管Xcode的責任的情況下完成工作,也不需要爲框架作者創建額外的工作。

CocoaPods提供了許多令人驚訝的功能,Carthage永遠不會有,在犧牲額外的複雜性。