如何知道在 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?

你如何知道 Ubuntu 上安装了哪个版本的 GTK+?

使用flutter在ios中购买应用程序时如何知道应用程序环境是沙箱

如何在 Flutter 中构建 apk 创建旧版本应用程序

如何知道spring boot中嵌入了哪个tomcat版本