解决重叠的依赖关系比方说 RxSwift

问题描述

我有

  • App 依赖于 Framework A
  • Framework A 依赖于 RxSwift v1.0
  • App 依赖于 RxSwift v2.0

是否可以使用 CocoaPods,Carthage,SwiftPM 解决此问题?怎么样?

或者我应该对齐这些版本的 RxSwift

相关问题:

解决方法

在标题为 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/VersionInformation.html 内运行时兼容性版本号的部分中,上下文和含义非常清楚,Xcode 链接器仅链接一个版本(如果框架是动态链接的,则它必须是旧版本) .即,所有的限定词都是单数:不能将 2 个或更多版本链接到同一个应用程序中。因此,您似乎只有 2 个选择:

  • 升级框架 A 以使用 RxSwift 2.0
  • 放弃在您的应用中使用 RxSwift 1.0,以便在您的应用中使用 RxSwift 1.0(在您的应用中,包括框架 A 和您的应用域)

使用 Xcode 链接器无法在 RxSwift 1.0 标识符和 RxSwift 2.0 标识符中为同一标识符链接所需的选择,所需的选择(将 2 个不同版本的 RxSwift 链接到同一个应用程序可执行文件中)实际上是一个不存在的选择——因此毕竟不是一个选择。