问题描述
我正在重构一个单体代码库,想把它拆分成框架,我目前的情况如下:
- 应用项目,取决于 A、B 和 C
- 框架 A
- 框架 B,依赖于 A
- 框架 C,依赖于 A 和 B
以上所有都在同一个工作区中,每个都有自己的 Pod:
- 应用使用 Firebase、Cryptoswift 和 RxSwift
- 框架 A 使用 Firebase 和 RxSwift
- 框架 B 和 C 使用 RxSwift
一切正常,但在应用启动时,我在日志中看到每个框架有多个(两个)定义,例如:
RxSwift is implemented in both 'app' and 'frameworka',which implementation will be used is undefined
(尝试了“不嵌入”和“嵌入并签名”)
有什么想法吗? 如果它有助于解决问题,我也可以切换到其他一些包管理器...
提前致谢!
我的 Podfile 看起来像这样:
platform :ios,'11.0'
use_frameworks!
workspace 'App'
project 'App/App'
project 'FrameworkA/FrameworkA'
project 'FrameworkB/FrameworkB'
project 'FrameworkC/FrameworkC'
target 'Appp' do
project 'App/App'
pod 'Firebase'
pod 'Firebase/Core'
pod 'Firebase/Crashlytics'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
pod 'CryptoSwift'
pod 'RxSwift'
pod 'RxCocoa'
end
target 'FrameworkA' do
project 'FrameworkA/FrameworkA'
pod 'Firebase'
pod 'Firebase/Core'
pod 'Firebase/Analytics'
pod 'Firebase/RemoteConfig'
pod 'RxSwift'
pod 'RxCocoa'
end
target 'FrameworkB' do
project 'FrameworkB/FrameworkB'
pod 'RxSwift'
pod 'RxCocoa'
end
target 'FrameworkC' do
project 'FrameworkC/FrameworkC'
pod 'RxSwift'
pod 'RxCocoa'
end
解决方法
经过反复试验,我没有找到解决方案。 我最终转向了 Swift 包管理器,当发现重复的依赖项时,它会抛出编译器错误(而不是控制台日志中的一行)。 然后我意识到我可以删除依赖项,仅此而已。