问题描述
我有:
-
App
依赖于Framework A
-
Framework A
依赖于RxSwift v1.0
-
App
依赖于RxSwift v2.0
是否可以使用 CocoaPods,Carthage,SwiftPM
解决此问题?怎么样?
或者我应该对齐这些版本的 RxSwift
?
相关问题:
- Using two versions of a Cocoapod dependency(过时)
- https://forums.raywenderlich.com/t/best-practice-on-handling-multiple-versions-of-nested-rxswift-community-dependencies-cocoapods/119252
解决方法
在标题为 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 链接到同一个应用程序可执行文件中)实际上是一个不存在的选择——因此毕竟不是一个选择。