Ale*_*loz 11 cocoapods swift carthage
我和Carthage以及Cocoapods都有过一个项目.它们都有一个共同的依赖(PureLayout,确切地说).奇怪,但项目编译好,没有任何关于类重新声明等的错误.所以问题是:当我调用PureLayout的方法 - 迦太基或Cocoapods的方法时,它为什么工作以及实际使用了哪个版本的依赖?
Carthage并CocoaPods在建设的依赖关系和他们在项目集成方面有很大不同。
CocoaPods是集中式依赖性管理器,它将建立您的依赖性并将其通过创建新的.xcworkspace工作区直接集成到项目中。这意味着您可以在构建后立即访问构建依赖关系。
另一方面,Carthage是分散的依赖项管理器,它使您可以将依赖项集成到项目中。迦太基构建其中指定的框架Cartfile并将其移至Carthage/Builds文件夹。构建过程完成后,您将可以集成和管理依赖项。
在您的情况下,当您PureLayout使用CocoaPods和Carthage 构建依赖项时,CocoaPods将其集成到项目中,而Carthage留下了构建版本,Carthage/Builds这意味着您仅使用了CocoaPods构建版本PureLayout。
另外,使用多个程序包/依赖项管理器也是一个坏习惯。您应该坚持使用它并对此感到满意。
iOS 依赖管理器
当您不使用 aDependency manager作为开发人员时,您有责任:
当您决定升级依赖项时,您应该从头开始这个过程
Dependency manager 是一种工具,可帮助用户以最少的代价将依赖项添加到项目中
CocoaPods[关于]是一个开源的,集中了斯威夫特以及正在上红宝石写Objective-C的可可项目依赖管理。它支持Dynamic Frameworks和Static 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 Frameworks和Static Libraries
笔记:
Swift Package Manager(SPM)[About]是一个开源的、分散的 依赖管理器,正在用 Swift 编写。它支持动态和静态库。.xcodeproj未使用。如果你想分发闭源(二进制框架),你应该使用XCFramework[About]
*CocoaPods默认情况下,每次(在清理或任何未知原因之后)都会构建开源 pod,这会增加构建时间(但您可以使用cocoapods-binary),Carthage并且SPM默认情况下会预构建框架。
*closed-source 允许您关闭源代码并节省构建时间,但[About]可能存在问题ABI stability
| 归档时间: |
|
| 查看次数: |
4022 次 |
| 最近记录: |