解决 Firebase 子规范 pod 依赖冲突的问题

Posted

技术标签:

【中文标题】解决 Firebase 子规范 pod 依赖冲突的问题【英文标题】:Trouble in resolving dependencies conflict for Firebase subspecs pod 【发布时间】:2020-05-01 05:58:54 【问题描述】:

我正在尝试修复我的 firebase subspec pod 的版本,以使 Podfile.lock 在整个团队中保持不变,但是在使用 pod install 安装 pod 时会弹出一些错误。我已经使用pod outdated 命令检查了所有子规范的最新版本,然后将所需的版本放在子规范前面。

我尝试过运行pod repo update,但即使这样也没有用

Podfile

pod 'Firebase','6.23.0'
pod 'Firebase/Analytics'
pod 'Firebase/Messaging'
pod 'Firebase/DynamicLinks'
pod 'FirebaseRemoteConfig','4.4.9'

运行 pod install 时的错误日志

[!] CocoaPods could not find compatible versions for pod 
"FirebaseAnalytics":
In snapshot (Podfile.lock):
FirebaseAnalytics (= 6.3.0, ~> 6.0)

In Podfile:
  Firebase/Analytics was resolved to 6.23.0, which depends on
    Firebase/Core (= 6.23.0) was resolved to 6.23.0, which depends on
      FirebaseAnalytics (= 6.4.2)

Specs satisfying the `FirebaseAnalytics (= 6.3.0, ~> 6.0), 
FirebaseAnalytics (= 6.4.2)` dependency were found, but they required 
a higher minimum deployment target.

当我运行 pod outdated 时,我得到了所有子规范的以下版本,因此我在 Podfile 中给出了相应的版本。

- Firebase 6.18.0 -> 6.23.0 (latest version 6.23.0)
- FirebaseABTesting 3.1.2 -> 3.2.0 (latest version 3.2.0)
- FirebaseAnalytics 6.3.0 -> 6.4.2 (latest version 6.4.2)
- FirebaseCore 6.6.3 -> 6.6.7 (latest version 6.6.7)
- FirebaseCoreDiagnostics 1.2.1 -> 1.2.4 (latest version 1.2.4)
- FirebaseDynamicLinks 4.0.7 -> 4.0.8 (latest version 4.0.8)
- FirebaseInstallations 1.1.0 -> 1.2.0 (latest version 1.2.0)
- FirebaseInstanceID 4.3.2 -> 4.3.4 (latest version 4.3.4)
- FirebaseMessaging 4.3.0 -> 4.3.1 (latest version 4.3.1)
- FirebaseRemoteConfig 4.4.8 -> 4.4.9 (latest version 4.4.9)

【问题讨论】:

在 Stack Overflow 上,请勿分享文字图片。将文本复制到问题本身并设置格式,以便于阅读、复制和搜索。 @DougStevenson 我会编辑相同的,谢谢 【参考方案1】:

我认为您混淆了 pod 和子规范。

Firebase 的版本为 6.23.0(请参阅 its podspec)。这个 Pod 有一个名为“Firebase/RemoteConfig”的子规范,它引入了另一个名为 FirebaseRemoteConfig 的 Pod,而后者又具有版本 4.4.9

所以,pod 'Firebase/RemoteConfig','4.4.9' 的规范没有意义,因为 pod 的子规范没有自己的单独版本号。这是什么

您的所有规范来源都不包含满足依赖关系的规范:Firebase/RemoteConfig (= 4.4.9)

想告诉你。

请改用pod 'FirebaseRemoteConfig','4.4.9'

【讨论】:

感谢您的澄清,现在我用所需的更改更新了我的问题,现在出现了一个新错误,它与项目的最小部署目标有关,我应该升级部署版本吗? 听起来确实像,是的。您当前的部署目标是什么?确保在应用的 Xcode 项目和 Podfile 中指定相同的版本。 嗯,它是 11.0,我想将最小部署目标保持为 11.0。并且我检查了 podfile 和 Xcode 项目是否具有相同的目标 Podfile是否指定除了ios之外的其他平台?【参考方案2】:

我安装了如下的吊舱,

pod 'Firebase','6.23.0'
pod 'Firebase/Analytics','6.23.0'
pod 'Firebase/Messaging','6.23.0'
pod 'Firebase/DynamicLinks','6.23.0'
pod 'FirebaseRemoteConfig','4.4.9'

这很好用,没有任何问题。

【讨论】:

以上是关于解决 Firebase 子规范 pod 依赖冲突的问题的主要内容,如果未能解决你的问题,请参考以下文章

Cocoapods:找不到“Firebase/Core”的规范

如何使用可可豆荚在终端中安装 Firebase 身份验证?

如何将 Firebase Analytics 添加为 pod 的依赖项?

在我自己创建的 pod 中添加 Firebase 作为依赖项

无法找到由 [PRIVATE POD] 依赖的 [PUBLIC POD] 的规范

如何解决颤振上的 pod install 错误?