CocoaPods和Carthage

Ale*_*loz 11 cocoapods swift carthage

我和Carthage以及Cocoapods都有过一个项目.它们都有一个共同的依赖(PureLayout,确切地说).奇怪,但项目编译好,没有任何关于类重新声明等的错误.所以问题是:当我调用PureLayout的方法 - 迦太基或Cocoapods的方法时,它为什么工作以及实际使用了哪个版本的依赖?

Sai*_*ira 8

CarthageCocoaPods在建设的依赖关系和他们在项目集成方面有很大不同。

CocoaPods是集中式依赖性管理器,它将建立您的依赖性并将其通过创建新的.xcworkspace工作区直接集成到项目中。这意味着您可以在构建后立即访问构建依赖关系。

另一方面,Carthage是分散的依赖项管理器,它使您可以将依赖项集成到项目中。迦太基构建其中指定的框架Cartfile并将其移至Carthage/Builds文件夹。构建过程完成后,您将可以集成和管理依赖项。

在您的情况下,当您PureLayout使用CocoaPods和Carthage 构建依赖项时,CocoaPods将其集成到项目中,而Carthage留下了构建版本,Carthage/Builds这意味着您仅使用了CocoaPods构建版本PureLayout

另外,使用多个程序包/依赖项管理器也是一个坏习惯。您应该坚持使用它并对此感到满意。


yoA*_*ex5 5

iOS 依赖管理器

当您不使用 aDependency manager作为开发人员时,您有责任:

  • 寻找依赖
  • 解决依赖图和版本控制
  • 下载资源
  • 将依赖项添加到 Xcode

当您决定升级依赖项时,您应该从头开始这个过程

Dependency manager 是一种工具,可帮助用户以最少的代价将依赖项添加到项目中

CocoaPods[关于]是一个开源的集中了斯威夫特以及正在上红宝石写Objective-C的可可项目依赖管理。它支持Dynamic FrameworksStatic Libraries[时间线]

笔记:

  • CocoaPods 需要有一个工作区

  • 消费者项目没有清晰的依赖关系视图 <Pods_target-name.framework>

  • 每次构建项目时都会重新构建所有依赖项。

  • 不能在同一个工作区中使用不同的 pod 版本

    CocoaPods could not find compatible versions for pod
    
    Run Code Online (Sandbox Code Playgroud)

Carthage[About]是一个用于 Swift 和 Objective-C Cocoa 项目的开源分散的依赖管理器,该项目是在 Swift 上编写的。它支持Dynamic FrameworksStatic Libraries

笔记:

  • 作为消费者项目开发人员,您负责使用依赖项设置 Xcode。它在 IDE 中创建了一些额外的步骤
  • 作为一个依赖开发者,你没有一些工具(例如 subspecs)

Swift Package Manager(SPM)[About]是一个开源的分散的 依赖管理器,正在用 Swift 编写。它支持动态和静态库。.xcodeproj未使用。如果你想分发闭源(二进制框架),你应该使用XCFramework[About]

*CocoaPods默认情况下,每次(在清理或任何未知原因之后)都会构建开源 pod,这会增加构建时间(但您可以使用cocoapods-binary),Carthage并且SPM默认情况下会预构建框架。

*closed-source 允许您关闭源代码并节省构建时间,但[About]可能存在问题ABI stability


归档时间:

查看次数:

4022 次

最近记录:

6 年,1 月 前