我与迦太基和Cocoapods共同开展了一个项目。它们都有一个共同的依赖(PureLayout,确切地说)。很奇怪,但项目编译很好,没有任何关于类重新声明等的错误。 所以问题是:当我调用PureLayout的方法 - Carthage或Cocoapods的方法时,为什么它可以工作以及实际使用了哪个版本的依赖?
答案 0 :(得分:5)
Carthage
和CocoaPods
在构建依赖项并将它们集成到项目中方面非常不同。
CocoaPods是集中式依赖管理器,它将构建您的依赖项,并通过创建新的.xcworkspace
工作区将它们直接集成到项目中。这意味着您可以在构建之后立即访问构建依赖项。
Cartfile
中指定的框架并将它们移动到Carthage/Builds
文件夹。在构建过程之后,由您来集成和管理依赖项。
在你的情况下,当你使用CocoaPods和Carthage构建你的PureLayout
依赖项时,CocoaPods将它集成到项目中,而Carthage在Carthage/Builds
中留下了构建,这意味着你只使用了CocoaPods构建版本的{ {1}}。
此外,使用多个包/依赖项管理器是一种不好的做法。你应该坚持下去,并对它感到舒服。
答案 1 :(得分:0)
package manager
是一种工具,它可以自动完成软件的安装,升级,配置和删除过程,在这种情况下,还可以在我们的应用程序内部进行安装。
CocoaPods
是centralized dependency manager
(基于名为Specs的主存储库,该主存储库承载所有框架规范),用于Swift和Objective-C Cocoa项目。它是开源的,许多volunteers and the open-source community都是使用Ruby构建的。
✓优势
Dynamic Frameworks
和Static Libraries
(从1.5.0版开始)。pod outdated
,很容易检查是否有新版本的依赖项。pod try <name>
将其集成到项目中之前先尝试依赖项。✕缺点
Carthage
是decentralized dependency manager
(与CocoaPods
不同,您没有主要的Specs存储库,检查过时的依赖关系意味着检查每个依赖关系存储库,而不是检查单个集中存储库) Swift和Objective-C可可项目。它是开源的,由open-source community使用Swift构建。
✓优势
carthage outdated
命令很容易检查是否有新版本的依赖项。CocoaPods
相比,您的项目的构建速度更快,因为迦太基仅一次构建了框架(调用carthage update
或carthage bootstrap
命令时)。✕缺点
答案 2 :(得分:0)
当您不使用Dependency manager
作为开发人员时,您将负责:
当您决定升级依赖项时,应从头开始
Dependency manager
是一个工具,可帮助用户以最小的负担将依赖项添加到项目中
CocoaPods
[About]是open-source,集中式的依赖项管理器,用于在Ruby上编写的Swift和Objective-C Cocoa项目。它支持Dynamic Frameworks
和Static Libraries
[timeline]
注意:
Carthage
是open-source,去中心化的依赖项管理器,用于在Swift上编写的Swift和Objective-C Cocoa项目。它支持Dynamic Frameworks
和Static Libraries
注意: