添加云Firestore&;Firebase到Flatter项目(Android)

添加云Firestore&;Firebase到Flatter项目(Android),android,android-studio,gradle,dart,flutter,Android,Android Studio,Gradle,Dart,Flutter,这将是一个相当长的问题,所以我将包括一个TL;最后是博士 几天来,我一直在试图找到一种方法,使我的设置工作,但无济于事。现在,为了使其完整并对其他人有所帮助,我将在这里记录我的步骤: 复制步骤 创建一个新的颤振项目(编译并运行时没有任何警告) 创建新的Firebase控制台项目 按照以下步骤将Firebase添加到android(在版本更改的情况下也包括在下面) 将Cloud Firestore添加到pubspec.yaml中的项目 遇到此错误: 出了什么问题: 任务的执行失败:cloud\u

这将是一个相当长的问题,所以我将包括一个TL;最后是博士

几天来,我一直在试图找到一种方法,使我的设置工作,但无济于事。现在,为了使其完整并对其他人有所帮助,我将在这里记录我的步骤:

复制步骤
  • 创建一个新的颤振项目(编译并运行时没有任何警告)
  • 创建新的Firebase控制台项目
  • 按照以下步骤将Firebase添加到android(在版本更改的情况下也包括在下面)
  • 将Cloud Firestore添加到pubspec.yaml中的项目
  • 遇到此错误:

    • 出了什么问题: 任务的执行失败:cloud\u firestore:CompiledBugJavaWithJavaC。
  • Firebase说明(截至目前)
  • 安装Google Repository(当前版本58)(根据,不再需要,但已完成验证)
  • 复制在android/app/src/main/AndroidManifest.xml中找到的包名。在我的例子中,这是
    com.omnisciamus.fire
    。使用它在Firebase项目中创建一个新的android应用程序以及一个调试键
  • 将创建的
    googleservices.json
    放到
    android/app
  • 修改
    android/build.gradle
    android/app/build.gradle
    。我已将此更改为使用最新版本(包括以下修改)
  • 此时,我重新运行编译以查看是否已经出现了任何问题,我们有3个警告,很可能是google services插件,我无法对其进行任何更改:
    registerResGeneratingTask已弃用,请使用registerGeneratedFolders(FileCollection)
  • 现在,我们在pubspec.yaml中添加依赖项,也包括在下面。 现在我们可以使用几个可能的版本,但我首先尝试了最新的版本(通过在版本前面包含一个
    ^
  • 格拉德斯 对android/build.gradle的更改

    buildscript {
            repositories {
                google()
                jcenter()
            }
    
            dependencies {
                classpath 'com.android.tools.build:gradle:3.1.0' // upgraded from 3.0.1
                classpath 'com.google.gms:google-services:3.2.0' // added & upgraded from 3.1.1
            }
        }
    
    //bottom of file
    apply plugin: 'com.google.gms.google-services'
    
    然后我们有了android/app/build.gradle:

    buildscript {
            repositories {
                google()
                jcenter()
            }
    
            dependencies {
                classpath 'com.android.tools.build:gradle:3.1.0' // upgraded from 3.0.1
                classpath 'com.google.gms:google-services:3.2.0' // added & upgraded from 3.1.1
            }
        }
    
    //bottom of file
    apply plugin: 'com.google.gms.google-services'
    
    公共规范 my pubspec的依赖项结构如下所示:

    dependencies:
      flutter:
        sdk: flutter
      cupertino_icons: ^0.1.0
      firebase_analytics: 0.3.0
      cloud_firestore: 0.3.1
    
    设置详细信息 有关更多详细信息,我已将颤振医生-v输出包括在内:

    [√] Flutter (Channel beta, v0.1.5, on Microsoft Windows [Version 10.0.16299.309], locale en-GB)
        • Flutter version 0.1.5 at C:\Developer\Flutter\flutter
        • Framework revision 3ea4d06340 (5 weeks ago), 2018-02-22 11:12:39 -0800
        • Engine revision ead227f118
        • Dart version 2.0.0-dev.28.0.flutter-0b4f01f759
    
    [√] Android toolchain - develop for Android devices (Android SDK 27.0.0)
        • Android SDK at C:\Android
        • Android NDK at C:\Android\ndk-bundle
        • Platform android-P, build-tools 27.0.0
        • ANDROID_HOME = C:\Android
        • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)
    
    [√] Android Studio (version 3.0)
        • Android Studio at C:\Program Files\Android\Android Studio
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)
    
    [√] IntelliJ IDEA Ultimate Edition (version 2017.3)
        • Flutter plugin version 22.2.2
        • Dart plugin version 173.4548.30
    
    [√] VS Code (version 1.21.1)
        • VS Code at C:\Program Files\Microsoft VS Code
        • Dart Code extension version 2.10.0
    
    [√] Connected devices (1 available)
        • Android SDK built for x86 • emulator-5554 • android-x86 • Android 6.0 (API 23) (emulator)
    
    • No issues found!
    
    调试键 由于这可能会成为一个教程,我将包括一个获取调试密钥的简单命令(在Windows上):
    cd%JAVA\u HOME%\bin&keytool-exportcert-list-v-alias androiddebugkey-keystore%USERPROFILE%\.android\debug.keystore

    TL;博士
    Cloud\u firestore在0.3.x版本时崩溃,您如何解决此问题?

    当我与几个共同开发人员讨论此问题时,我发现有人找到了一个工作设置:将
    Cloud\u firestore
    的版本更改为低于
    0.3.0
    ,例如
    0.2.9
    。据介绍,问题在于flutter的“稳定”版本没有cloud_firestore使用的某些功能,这会导致编译时出现错误。如果有人要求,我会在一段时间内更新这个问题,以反映这个答案。

    要让Firebase插件与Swift配合使用,您需要使用更新的版本:但我也有android问题。我还尝试将颤振通道从beta切换到dev

    dependencies:
      flutter:
        sdk: flutter
      cloud_firestore: "^0.4.0"
    
    
      # The following adds the Cupertino Icons font to your application.
      # Use with the CupertinoIcons class for iOS style icons.
      cupertino_icons: ^0.1.0
    
    dev_dependencies:
     flutter_test:
        sdk: flutter
      image_picker: 0.4.1
      #google_sign_in: '>=2.1.0 '
      google_sign_in: '3.0.0'
      #firebase_analytics: '>=0.2.3'
      firebase_auth: '>=0.4.5'
      #firebase_auth: '>=0.5.3'        #not working on android
      #firebase_database: '>=0.3.5'   #works on android
      firebase_database: '0.4.2'      #works on android
      #firebase_storage: '>=0.1.4'    #not Working on android
      #firebase_storage: '0.2.0'       #not working on android
    

    我通过以下方式解决了当前的Cloud\u Firestore问题:

    • 将颤振通道从beta更改为master。只需在终端
      颤振通道主机中运行
      。正如这里提议的那样
    • 处理颤振依赖项:
      cloud\u firestore:“^0.4.0”
      偶数
      cloud\u firestore:“^0.3.2”

    希望这会有所帮助。我花了几个小时试图弄明白为什么我不能用cloud_firestore编译我的Flitter应用程序。我知道问题出在FlitterSDK版本上,但我不想选择alpha。但解决方案却变得和使用主通道一样简单。不过,目前还不确定在不久的将来还会出现哪些其他问题。不过现在,我可以很高兴地开始使用CloudFireStore进行测试了

    在《颤振》中使用firebase时,我也遇到了类似的问题。我通过在我的android/build.gradle文件中使用这个依赖项解决了这个问题,并删除了任何其他现有的依赖项

    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath 'com.google.gms:google-services:3.2.1'  
    
    并在pubspec.yaml中将此版本用于firestore和google

    cloud_firestore: 0.7.3
    

    如果您有任何其他firebase产品的版本相关问题,请参阅此

    ,那么此解决方案有效吗?我之所以这么问,是因为这个解决方案看起来与我在网上看到的说明不完全一样。它确实对我和其他一些开发人员都有效,但也许现在(在说明中)有些事情已经改变了(也许)我现在无法验证(手头没有mac),但如果我明天还记得的话,我会为andoid验证它。另一方面,这个特定的“问题”是关于添加firestore的,你似乎没有包括在内。是的,我在尝试修复这个问题时遇到了相同的解决方案,(我也花了几天时间),但我想首先找到一个解决方案,在这个解决方案中,我不可能通过使用不稳定的版本来破坏flutter的其余部分