如何知道在Flutter应用中使用哪个版本的Google Firebase插件?

时间:2019-06-02 19:43:29

标签: firebase gradle flutter flutter-dependencies

我一直受困于Gradle无法构建(可以在iOS上正常工作)。我苦苦挣扎,因为Gradle犯了一个通用错误,今天终于得到了:

  

失败:构建失败,并出现异常。

     
      
  • 出了什么问题:在执行期间无法捕获任务':app:preDebugBuild'属性'compileManifests'的输入文件的指纹   最新检查。

         
        

    在项目“应用”中,已解析的Google Play服务库依赖项依赖于另一个版本(例如“ [18.0。0]”,但不是)     被解析为该版本。图书馆展示的行为将     不为人知。

      
         

    依赖项失败:com.google.firebase:firebase-messaging:18.0.0->   com.google.firebase:firebase-iid @ [18.0.0],但使用fire base-iid版本   是17.1.2。

         

    以下依赖项是直接的项目依赖项   或具有传递依赖性,从而导致与   问题。 -项目'app'取决于项目'firebase_messaging'   取决于com.google.firebase:firebase-messaging@18.0。 0
      -项目“应用程序”取决于项目“ firebase_core”,该项目取决于com.google.firebase:firebase-core@16.0.9 –项目“应用程序”取决于   项目'firebase_analytics'取决于   com.google.firebase:firebase-analytics@16.5。 0-项目“ app”   取决于项目'firebase_remote_config',取决于   com.google.firebase:firebase-config@16.4 .1-项目'app'   取决于com.google.firebase:firebase-core@16.0.9

         

    有关扩展调试信息,请从命令行执行Gradle   使用./gradlew --info:app:assembleDebug来查看dep持久性   工件的路径。此错误消息来自   google-services Gradle插件,在https://
    报告问题   github.com/google/play-services-plugins并通过添加禁用   “ googleServices {disableVersionCheck = false}”添加到您的b
      uild.gradle文件。

  •   
  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的见解。

  •   
  • 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似乎并没有保持一致的版本号,并且通过取出版本号,我认为它至少会采用理论上可行的插件的最新版本。那么,我该如何解决呢?

2 个答案:

答案 0 :(得分:0)

您应该首先将版本号放回此处。

这是Firebase / Play服务版本不匹配的问题,因此您可以确定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

它将为您提供兼容版本。

答案 1 :(得分:0)

您遇到的错误不一定来自pubspec.yaml中列出的软件包。它指的是对build.gradle的依赖。 Google的版本号没有问题。软件包的版本(即您在pubspec.yaml上列出的版本)与对app / build.gradle的依赖项之间存在差异。重新考虑您使用的软件包数量是明智的选择,因为每个软件包都具有依赖性,并且您可能最终陷入多个软件包冲突的棘手情况。另外,您最终得到了一个for肿的解决方案,以实现最小的功能。 删除版本号将无济于事,因为某些软件包不兼容。我建议您从所需的软件包开始,即Firebase,从经验来看没有问题,然后在必要时逐步添加。