pod 安装时出现 Flutter 错误:CocoaPods 找不到 pod“Firebase/CoreOnly”的兼容版本
Posted
技术标签:
【中文标题】pod 安装时出现 Flutter 错误:CocoaPods 找不到 pod“Firebase/CoreOnly”的兼容版本【英文标题】:Flutter error on pod install: CocoaPods could not find compatible versions for pod "Firebase/CoreOnly" 【发布时间】:2019-09-28 21:26:31 【问题描述】:我的 Flutter 应用无法在我的 ios 设备上运行,但它在 android 上运行良好。我在pod install
上遇到错误
这是pod install --verbose
的输出
alyzing dependencies
Inspecting targets to integrate
Using `ARCHS` setting to build architectures of target `Pods-Runner`: (``)
Using `ARCHS` setting to build architectures of target `Pods-OneSignalNotificationServiceExtension`: (``)
Finding Podfile changes
A contacts_service
A firebase_auth
A flutter_crashlytics
A local_auth
A onesignalflutter
A path_provider
A permission
A sqflite
A url_launcher
- Flutter
- OneSignal
- cloud_functions
- firebase_core
Fetching external sources
-> Fetching podspec for `Flutter` from `.symlinks/flutter/ios`
-> Fetching podspec for `cloud_functions` from `.symlinks/plugins/cloud_functions/ios`
-> Fetching podspec for `contacts_service` from `.symlinks/plugins/contacts_service/ios`
-> Fetching podspec for `firebase_auth` from `.symlinks/plugins/firebase_auth/ios`
-> Fetching podspec for `firebase_core` from `.symlinks/plugins/firebase_core/ios`
-> Fetching podspec for `flutter_crashlytics` from `.symlinks/plugins/flutter_crashlytics/ios`
-> Fetching podspec for `local_auth` from `.symlinks/plugins/local_auth/ios`
-> Fetching podspec for `onesignalflutter` from `.symlinks/plugins/onesignalflutter/ios`
-> Fetching podspec for `path_provider` from `.symlinks/plugins/path_provider/ios`
-> Fetching podspec for `permission` from `.symlinks/plugins/permission/ios`
-> Fetching podspec for `sqflite` from `.symlinks/plugins/sqflite/ios`
-> Fetching podspec for `url_launcher` from `.symlinks/plugins/url_launcher/ios`
Resolving dependencies of `Podfile`
[!] CocoaPods could not find compatible versions for pod "Firebase/CoreOnly":
In snapshot (Podfile.lock):
Firebase/CoreOnly (= 5.20.2)
In Podfile:
firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) was resolved to 0.0.1, which depends on
Firebase/Auth (~> 6.0) was resolved to 6.0.0, which depends on
Firebase/CoreOnly (= 6.0.0)
It seems like you've changed the constraints of dependency `Firebase/CoreOnly` inside your development pod `firebase_auth`.
You should run `pod update Firebase/CoreOnly` to apply changes you've made.
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:328:in `raise_error_unless_state'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:310:in `block in unwind_for_conflict'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:308:in `tap'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:308:in `unwind_for_conflict'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:257:in `process_topmost_state'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:182:in `resolve'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/molinillo-0.6.6/lib/molinillo/resolver.rb:43:in `resolve'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/resolver.rb:91:in `resolve'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer/analyzer.rb:909:in `block in resolve_dependencies'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/user_interface.rb:64:in `section'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer/analyzer.rb:907:in `resolve_dependencies'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer/analyzer.rb:114:in `analyze'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:266:in `analyze'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:174:in `block in resolve_dependencies'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/user_interface.rb:64:in `section'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:173:in `resolve_dependencies'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:136:in `install!'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/command/install.rb:48:in `run'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/command.rb:52:in `run'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/bin/pod:55:in `<top (required)>'
/usr/local/Cellar/cocoapods/1.6.1/libexec/bin/pod:22:in `load'
/usr/local/Cellar/cocoapods/1.6.1/libexec/bin/pod:22:in `<main>'
[!] Automatically assigning platform `ios` with version `8.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
[!] Automatically assigning platform `ios` with version `10.0` on target `OneSignalNotificationServiceExtension` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
这是我的 Podfile:
# 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
target 'OneSignalNotificationServiceExtension' do
use_frameworks!
pod 'OneSignal', '>= 2.9.3', '< 3.0'
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
这是我的 pubspec.yaml:
name: kvote_app
description: A new Flutter application.
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# Read more about versioning at semver.org.
version: 1.0.0+1
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_bloc: any
color: any
http: any
equatable: any
# permission_handler: ^2.1.2
cloud_functions: ^0.3.0
firebase_auth: ^0.11.0
font_awesome_flutter: any
fancy_bottom_navigation: any
permission: any
contacts_service: any
local_auth: any
sqflite: any
path_provider: any
auto_size_text: any
flutter_crashlytics: any
url_launcher: any
rflutter_alert: any
onesignalflutter:
git: git://github.com/jmrobles/OneSignal-Flutter-SDK.git
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- assets/avatar.png
- assets/logo.png
- assets/img/login_logo.png
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.io/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.io/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.io/custom-fonts/#from-packages
fonts:
- family: WorkSansSemiBold
fonts:
- asset: assets/fonts/Work_Sans/WorkSans-SemiBold.ttf
- family: WorkSansBold
fonts:
- asset: assets/fonts/Work_Sans/WorkSans-Bold.ttf
- family: WorkSansMedium
fonts:
- asset: assets/fonts/Work_Sans/WorkSans-Medium.ttf
发生该错误的主要原因是云函数和身份验证 Firebase 库之间存在冲突。
我对 pod 完全陌生,似乎无法在网上找到我的案例的解决方案。我尝试了https://***.com/a/40102370 的答案,但没有奏效。
关于如何解决此问题的任何建议?
【问题讨论】:
重复***.com/questions/56055142/… 这能回答你的问题吗? CocoaPods could not find compatible versions for pod "Firebase/CoreOnly" 【参考方案1】:删除 Podfile.lock 文件和 Pod 目录后它对我有用,然后再次使用 pod install
命令手动安装 pod。
【讨论】:
【参考方案2】:尝试在终端中使用这些命令:
rm -rf ~/.cocoapods/repos
pod setup
【讨论】:
【参考方案3】:我也有同样的问题。
您不应将 pubspec.yaml 版本设置为“任何”。解决版本后,您应该修复它以使其稳定。
【讨论】:
【参考方案4】:转到您的颤振项目。导航到 ios 并打开 Podfile 将该文件的第二行替换为:
platform :ios, '10.0'
simple_permissions 不适用于 10.0 以下的 iOS 版本
【讨论】:
请更具体地了解该线路,并确保您回答完整。我们将不得不投反对票,除非你要纠正这个......祝你好运@Pierre 这里是解释github.com/FirebaseExtended/flutterfire/issues/… 谢谢它救了我的命【参考方案5】:从 podfile 中取消注释 ios 版本
platform :ios, '9.0' // ios/Pods/podfile
然后使用
安装 podpod install
然后尝试运行应用程序
【讨论】:
【参考方案6】:从平台更改为 :ios, '9.0' // ios/Pods/podfile
到平台 :ios, '10.0' // ios/Pods/podfile
它对我有用。谢谢,伙计们。
【讨论】:
请不要添加 "thanks" 作为答案。它们实际上并没有提供问题的答案,并且可能被未来的访问者视为噪音。一旦你earn足够reputation,你将获得upvote answers你喜欢的特权。这样,问题的未来访问者将看到对该答案的更高投票数,并且回答者也将获得声誉积分奖励。见Why is voting important。【参考方案7】:取消注释 Podfile 的第 2 行对我有用。
【讨论】:
最好与您分享 Podfile 的第 2 行,因为对于现在或以后查看此内容的人来说可能会有所不同【参考方案8】:问题似乎是 cocoapods 修复更新现有 pod 的问题
更新以下命令
rm Podfile.lock
删除 ios/Podfile.lock
运行pod install --repo-update
【讨论】:
【参考方案9】:之后它对我有用 step 1. 删除 Podfile.lock 文件和 Pod 目录 步骤 2.pod install --repo-update 第三步。 pod 更新 Firebase/CoreOnly
【讨论】:
【参考方案10】:对我来说,我只是运行这个命令,它的固定:pod install --repo-update
【讨论】:
以上是关于pod 安装时出现 Flutter 错误:CocoaPods 找不到 pod“Firebase/CoreOnly”的兼容版本的主要内容,如果未能解决你的问题,请参考以下文章
如何解决mac上flutter中的“error running pod install”?
在 MacOS 上为 Flutter 安装 cocoapods 时出现问题