CocoaPods 找不到 pod "Firebase/CoreOnly" 的兼容版本

CocoaPods could not find compatible versions for pod "Firebase/CoreOnly"

我已经将我的 flutter 包更新到最新版本,现在 IOS 不再工作了。

当我尝试更新 pods 时显示此错误:

    [!] CocoaPods could not find compatible versions for pod "Firebase/CoreOnly":
    In Podfile:
    cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) was resolved to 0.0.1, which depends on
    Firebase/Firestore (~> 6.0) was resolved to 6.0.0, which depends on
    Firebase/CoreOnly (= 6.0.0)

    cloud_functions (from `.symlinks/plugins/cloud_functions/ios`) was resolved to 0.0.1, which depends on
    Firebase/Functions (~> 5.18) was resolved to 5.18.0, which depends on
    Firebase/CoreOnly (= 5.18.0)

这是我的 pubspec.yaml(Firebase 相关):

firebase_core: "^0.4.0"
firebase_auth: "^0.11.0"
firebase_analytics: "^3.0.0"  
cloud_firestore: "^0.11.0+1"
cloud_functions: "^0.3.0"
firebase_storage: "^3.0.0"
firebase_messaging: "^5.0.1"

我已采取各种步骤来尝试修复:

flutter clean
flutter build ios

pod install
pod update
pod repo update
pod install --repo-update

我已将 Podfile 和 Xcode 中的平台 :ios、'12.1' 设置为构建目标,但没有恢复正常。

这是我的播客文件:

# Uncomment this line to define a global platform for your project
platform :ios, '12.1'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def parse_KV_file(file, separator='=')
  file_abs_path = File.expand_path(file)
  if !File.exists? file_abs_path
    return [];
  end
  pods_ary = []
  skip_line_start_symbols = ["#", "/"]
  File.foreach(file_abs_path) { |line|
      next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
      plugin = line.split(pattern=separator)
      if plugin.length == 2
        podname = plugin[0].strip()
        path = plugin[1].strip()
        podpath = File.expand_path("#{path}", file_abs_path)
        pods_ary.push({:name => podname, :path => podpath});
      else
        puts "Invalid plugin specification: #{line}"
      end
  }
  return pods_ary
end

target 'Runner' do
  use_frameworks!

  # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
  # referring to absolute paths on developers' machines.
  system('rm -rf .symlinks')
  system('mkdir -p .symlinks/plugins')

  # Flutter Pods
  generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
  if generated_xcode_build_settings.empty?
    puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
  end
  generated_xcode_build_settings.map { |p|
    if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
      symlink = File.join('.symlinks', 'flutter')
      File.symlink(File.dirname(p[:path]), symlink)
      pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
    end
  }

  # Plugin Pods
  plugin_pods = parse_KV_file('../.flutter-plugins')
  plugin_pods.map { |p|
    symlink = File.join('.symlinks', 'plugins', p[:name])
    File.symlink(p[:path], symlink)
    pod p[:name], :path => File.join(symlink, 'ios')
  }
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

我在尝试将 Firebase Analytics 添加到我的项目时 运行 遇到了同样的问题。我在终端中保持 运行ning pod update,但我无法成功访问 FirebaseCore (6.0.0),直到我确保 pubspec.yaml 文件中的所有 flutter 包都是最新版本。

1) 我删除了导致错误的包。对我来说,它是 Firebase Analytics,因为我刚刚将它添加到我的项目中。

2) 我检查了所有的 firebase 包并确保我的 pubspec.yaml 中有最新版本。他们在这里:

firebase_core: ^0.4.0
firebase_database: ^3.0.0
firebase_auth: ^0.11.0
firebase_storage: ^3.0.0

3) 导航到 ios 文件夹和 运行 pod 更新

4) 将 Firebase Analytics 包(或您有兴趣添加的任何内容)添加到 pubspec.yaml。

5) 运行 包得到

6) 运行 在终端中安装 pod

问题出在 cloud_functions 插件中。 他们有 5.18 版本的 Firebase。 要修复它,您必须手动更改插件 ios 文件夹中的文件 cloud_functions.podspec,而它们并没有最终修复。

改变它

s.dependency 'Firebase/Firestore', '~> 5.18'

s.dependency 'Firebase/Firestore', '~> 6.0'

在那之后仍然存在关于 Firebase 函数文件的某些缺失依赖项的错误。

我直接在pod中添加这一行:

pod 'Firebase/Functions'

我知道所有这些都是一种解决方法,但对我来说是这样工作的。

尝试调用 pod repo update

如果问题未解决

删除根目录下的Podfile.lock,之后运行pod install

只需执行 pod update 然后 pod install。这对我有用。

这份 react-native-firebase 迁移指南可能对您的情况有用:

https://rnfirebase.io/migrating-to-v6#removing-v5-from-javascript

我卸载了版本 5 并安装了版本 6,但似乎需要做一些额外的工作才能摆脱旧版本的 firebase。

当我在 Podfile 平台中添加来自 symlinks/plugins 的最高 ios 版本依赖时为我工作:ios, '11.0'

  1. 执行flutter clean

  2. 进入ios/文件夹,编辑Podfile并选择你想要启动的平台和版本。例如平台 ios 和版本 12.0 :

播客文件

# Uncomment this line to define a global platform for your project
platform :ios, '12.0'
  1. 执行pod update

  2. 执行pod install(下载依赖项可能需要几分钟时间)

  3. 执行flutter run

编辑 pod 文件中的最低 ios 版本,然后 运行 pod 安装。

platform :ios, '9.0' 更改为 platform :ios, '10.0',然后 运行ning pod install 为我修复了它。

2021 年 3 月

cloud_firestore: ^1.0.0

cd ios
rm Podfile.lock
pod repo update

要使用版本 ^1.0.3 的“firebase_core”依赖项,“iOS 部署目标”必须不低于“10.0”

截至 2021 年 4 月 28 日,对我有用的方法(经过几天的努力):

在 AppDelegate.swift (flutter-project/ios/Runner) 中,添加这两行:

FirebaseApp.configure()
GeneratedPluginRegistrant.register(with: self)

在终端中:

pod repo update 

flutter build ios

然后运行你的项目在Xcode。

这个简单的解决方案对我有用(由 IDE 本身建议)

pod install --repo-update

运行终端IOs文件夹中的命令

  1. 删除 Pod 文件
  2. pod 初始化
  3. 吊舱安装

为我工作

如果您使用的是 M1 mac。

删除 podfile.lock 运行

arch -x86_64 rm -rf Podfile.lock

然后通过 运行

更新 pods
arch -x86_64 pod install --repo-update

我必须遵循这个 answer 并做 2 件事

1- 在我的 Podfile 中有 platform :ios, '13.0',我不得不将其切换为 platform :ios, '10.0'

2- 我不得不删除我的整个 podfile 并重新安装它,但这次我使用 pod 'Firebase/Database', '~> 7.0.0'

Firebase/Database pod

我的播客文件现在看起来像这样:

platform :ios, '10.0'
install! 'cocoapods', :deterministic_uuids => false

target 'MyApp' do
use_frameworks!

# Pods for MyApp

pod 'Firebase/Database', '~> 7.0.0'

// other pods ...

在 React Native 中

cd ios

rm -rf Podfile.lock

pod install

对于 M1 Mac 用户

  1. 转到项目中的 ios/Pods/Local Podspecs 目录
  2. 检查每个 json 文件以找到所需的最高 iOS 版本。我的 "ios": "10.0" 其中一些
  3. 返回ios/ directory
  4. 打开Podfile文件
  5. 取消注释 # platform :ios, '9.0' 并将 9.0 替换为步骤 2 中的版本。- 例如 10.0.

然后是M1的具体部分

  1. 运行 sudo arch -x86_64 gem install ffi

  2. 运行 arch -x86_64 pod repo update

  3. 运行 arch -x86_64 pod install 错误应该消失了



  1. 如果使用 Flutter cd - 回到你的根目录 - 打开 iOS Simulator & 运行 flutter run



10. 享受吧! 



如果不起作用,您可能需要 运行 flutter pub add firebase_core将 firebase_core 添加到您的 pubspec.yaml 文件中,然后再执行第 1 步




如果仍然无效,请尝试此奖励步骤:

  • 试图从 Xcode 直接 运行?首先 运行 flutter build iOS 在你的 Flutter 项目中 -> 然后 运行 在 Xcode

  • 还是不行 cd iOS 运行 rm -rf Pods/ Podfile.lock ; pod install

  • 还是不行?在 Spotlight 中搜索 Keychain Access -> 打开 -> 右键单击​​登录 -> 解锁(构建成功后将锁定)

  • 还是不行? 确保你的 运行ner 信息配置看起来像这样



希望对您有所帮助!如果仍然遇到问题,请在下方评论!

我解决了那个问题。

  1. 我猜你添加了新的 firebase 包然后问题出现了。
  2. 删除最后添加的包
  3. 运行扑干净
  4. 删除podfile.lock
  5. 确保所有 firebase 包都使用更新版本
  6. 运行 flutter pub get
  7. 转到 cd ios/
  8. 运行 pod 安装 然后固定。

对于 M1 Mac,移动到文件夹 ios:

cd ios

Method 1:

打开终端并运行

sudo gem uninstall cocoapods
sudo gem install cocoapods

重启IDE或编辑器

Method 2:

注意:只有在方法 1 不起作用时才尝试

现在是时候为 M1 安装 pod Mac:

 sudo arch -x86_64 gem install ffi
 arch -x86_64 pod repo update
 arch -x86_64 pod install

现在 99% 更改安装错误应该消失了

现在只有 1% 的机会仍然出现错误:

打开您的 ios Runner XCode 项目并按照图像说明进行操作。

从目标架构中更改排除的架构

form i386 to arm64 i386 (Note: space is important)

现在回到你的根目录然后运行

 flutter run

Also, Restart your editor.

pod update 然后 pod install。这对我有用

返回 ios 文件夹并打开 Podfile,然后如下更改平台 platform :ios, '10.0'。然后点击编辑器中的 run 按钮。

这是对我有用的。

  1. 删除ios目录下的Podfile.lock
  2. 在 运行 arch -x86_64 pod 安装之后

对我来说这很有效

# Uncomment this line to define a global platform for your project
 platform :ios, '12.0'