如何知道在 Flutter 应用中使用哪个版本的 Google Firebase 插件?
Posted
技术标签:
【中文标题】如何知道在 Flutter 应用中使用哪个版本的 Google Firebase 插件?【英文标题】:How to know which version of Google Firebase plugin to use in Flutter app? 【发布时间】:2019-10-18 11:31:13 【问题描述】:我一直卡在 Gradle 没有构建(在 ios 上工作正常)。我很挣扎,因为 Gradle 给出了一个通用错误,今天终于得到了这个:
FAILURE: Build failed with an exception.
* What went wrong: Failed to capture fingerprint of input files for task ':app:preDebugBuild' property 'compileManifests' during up-to-date check.
> In project 'app' a resolved Google Play services library dependency depends on another at an exact version (e.g. "[18.0. 0]", but isn't being resolved to that version. Behavior exhibited by the library will be unknown.
Dependency failing: com.google.firebase:firebase-messaging:18.0.0 -> com.google.firebase:firebase-iid@[18.0.0], but fire base-iid version was 17.1.2.
The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art ifact with the issue. -- Project 'app' depends on project 'firebase_messaging' which depends onto com.google.firebase:firebase-messaging@18.0. 0
-- Project 'app' depends on project 'firebase_core' which depends onto com.google.firebase:firebase-core@16.0.9 -- Project 'app' depends on project 'firebase_analytics' which depends onto com.google.firebase:firebase-analytics@16.5. 0 -- Project 'app' depends on project 'firebase_remote_config' which depends onto com.google.firebase:firebase-config@16.4 .1 -- Project 'app' depends onto com.google.firebase:firebase-core@16.0.9
For extended debugging info execute Gradle from the command line with ./gradlew --info :app:assembleDebug to see the dep endency paths to the artifact. This error message came from the google-services Gradle plugin, report issues at https:// github.com/google/play-services-plugins and disable by adding "googleServices disableVersionCheck = false " to your b uild.gradle file.
* Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
这是在我从 pubspec 中取出版本号以查看是否有帮助之后。我不了解 Google 的版本编号,也不确定我应该安装哪些版本的插件,因为它过去曾导致冲突:
dependencies:
flutter:
sdk: flutter
http:
cached_network_image:
flutter_cache_manager:
carousel_pro:
cloud_firestore:
firebase_core:
firebase_remote_config:
dynamic_theme:
flutter_signin_button:
shared_preferences:
share:
flutter_search_bar:
google_sign_in:
#flutter_facebook_login:
flutter_html:
requests:
webview_flutter:
flutter_webview_plugin:
firebase_analytics:
flutter_app_badger: #for launcher badge icon (notifications)
uuid:
font_awesome_flutter:
device_info:
carousel_slider:
flutter_spinkit:
flutter_typeahead:
firebase_messaging:
html_unescape:
flutter_masked_text:
configurable_expansion_tile:
stripe_payment:
square_in_app_payments:
Google 似乎没有保持一致的版本编号,并且通过取出版本编号,我认为它至少会采用理论上应该可以工作的最新版本的插件。那么,我该如何解决呢?
【问题讨论】:
我也有同样的问题 同样的问题,仍然没有任何解决方案...你找到什么了吗? 【参考方案1】:您应该首先将版本号放回那里。
这是 firebase / play services 版本不匹配的问题,因此您可以确定 pubspec.yaml 中的其他插件正常。
失败的依赖是firebase消息传递。
它用很多话告诉你
com.google.firebase:firebase-messaging:18.0.0 package depends on com.google.firebase:firebase-iid@[18.0.0]
但它只找到 17.1.2。
你需要
com.google.firebase:firebase-core@16.0.9
com.google.firebase:firebase-analytics@16.5.0
com.google.firebase:firebase-config@16.4.1
将来,如果您遇到版本问题,请检查 GitHub 问题的特定软件包,看看您当前使用的版本是否有任何问题。这将为您节省大量时间。
我不建议从您的 pubsepc.yaml 中删除版本号,但如果您键入
firebase_messaging: any
它将为您提供兼容的版本。
【讨论】:
【参考方案2】:您遇到的错误不一定来自您在 pubspec.yaml 中列出的包。它指的是对 build.gradle 的依赖。 谷歌对版本号没有问题。软件包版本之间存在差异,即您在 pubspec.yaml 上列出的内容与 app/build.gradle 上的依赖项。明智的做法是重新考虑您使用的包的数量,因为每个包都具有依赖关系,并且您最终可能会陷入多个包冲突的棘手情况。此外,您最终会得到一个臃肿的解决方案,以实现最少的功能。 删除版本号将无济于事,因为某些软件包不兼容。我建议您从您需要的软件包开始,即从经验来看没有问题的 firebase,然后在必要时逐步添加。
【讨论】:
以上是关于如何知道在 Flutter 应用中使用哪个版本的 Google Firebase 插件?的主要内容,如果未能解决你的问题,请参考以下文章
如何知道在 django 中使用了哪个版本的应用程序 [重复]
我如何知道哪个版本的 Xcode/哪个 SDK 构建了 xcarchive?