【问题标题】:Flutter: Build errors for cloud_firestore: above version "0.7.4"Flutter:cloud_firestore 的构建错误:高于版本“0.7.4”
【发布时间】:2019-04-03 11:46:16
【问题描述】:

几个小时以来,我一直在尝试解决构建问题,直到我意识到这是由于 Flutter 插件 cloud_firestore 造成的。 0.7.4 版适用于 Android 和 iOS,但任何高于 0.7.4 的版本(例如 0.8.2+1)都会出现以下错误:

CloudFirestorePlugin.java:160:错误:找不到符号 查询 = query.whereArrayContains(fieldName, value); ^ 符号:方法 whereArrayContains(String,Object) 位置:类型的变量查询 询问 /dev/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.8.2+1/android/src/main/java/io/flutter/plugins/firebase/cloudfirestore/CloudFirestorePlugin.java:598: 错误:找不到符号 builder.setTimestampsInSnapshotsEnabled( ^ 符号:方法 setTimestampsInSnapshotsEnabled(Boolean) 位置:变量生成器 建造者类型 /dev/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.8.2+1/android/src/main/java/io/flutter/plugins/firebase/cloudfirestore/CloudFirestorePlugin.java:678: 错误:找不到符号 返回 FieldValue.arrayUnion(toArray(readValue(buffer))); ^ 符号:方法 arrayUnion(Object[]) 位置:类 FieldValue /dev/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.8.2+1/android/src/main/java/io/flutter/plugins/firebase/cloudfirestore/CloudFirestorePlugin.java:680: 错误:找不到符号 返回 FieldValue.arrayRemove(toArray(readValue(buffer))); ^ 符号:方法 arrayRemove(Object[]) 位置:类 FieldValue 注意: /Users/peterlumdev/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.8.2+1/android/src/main/java/io/flutter/plugins/firebase/cloudfirestore/CloudFirestorePlugin.java 使用未经检查或不安全的操作。注意:重新编译 -Xlint:详细信息未选中。 4 个错误 FAILURE:构建失败并出现异常。 * 出了什么问题:任务 ':cloud_firestore:compileDebugJavaWithJavac' 执行失败。

编译失败;有关详细信息,请参阅编译器错误输出。 * 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。 * 在 https://help.gradle.orgBUILD FAILED 获得更多帮助 Gradle 任务 assembleDebug failed with exit code 1

由于得到了

await db.settings(timestampsInSnapshotsEnabled: true);

在这里感谢一些帮助。非常感谢!

【问题讨论】:

  • 您在 Android 和 iOS 上都遇到错误吗?
  • 我只收到 Android 错误。
  • 我也遇到了同样的错误,仅适用于 Android。但是,当我通过 Finder 重新插入 google-services.json 时,错误消失了。
  • 我替换了 google-services.json 文件,但仍然无法为 Android 构建:FAILURE: Build failed with an exception。 * 出了什么问题:任务 ':cloud_firestore:compileDebugJavaWithJavac' 执行失败。 > 编译失败;有关详细信息,请参阅编译器错误输出
  • 你不是把文件放到Android Studio里了吗?这似乎与我的情况不同。

标签: firebase flutter cloud google-cloud-firestore


【解决方案1】:

google-services.json 有问题。

就我而言,我在 Google Codelabs 上编写 Firebase for Flutter 时遇到了同样的情况。我将 GoogleService-Info.plist 放在 Xcode 中的相应文件夹中,并将 google-services.json 放在 Adndroid Studio 中的相应文件夹中。 iOS Simulator 工作正常,但在 Android Studio 中显示如下窗口,然后按 OK 按钮并启动 Android Emulator 导致相应的错误。

从头开始编码并从 Finder 而不是 Android Studio 插入 google-services.json 文件时,未发生错误。

【讨论】:

    【解决方案2】:

    它不起作用,因为它正在创建 gradle 冲突。 firestore 0.7.3 版正在运行,因为 gradle 工具已在该版本更新。请参考 changelog 并参考此 answer 了解任何其他工作版本的 firebase 产品。

    【讨论】:

      【解决方案3】:

      我感觉到你了,我也花了好几个小时试图弄清楚这一点。

      在构建 SSCCE,然后将该项目的设置应用到我的项目,然后进行一些调整后,我的项目开始工作了。

      虽然我调整的设置比我想记住的要多,但这些似乎影响最大:

      pubspec.yaml:

      # included two other common libraries others might use
      cloud_firestore: 0.8.2+1
      firebase_auth: 0.7.0
      google_sign_in: 3.2.4
      

      android/gradle.properties 中明确禁用这两个功能:

      android.useAndroidX=false
      android.enableJetifier=false
      

      android/build.grade 中使用这些版本的依赖项:

      dependencies {
          classpath 'com.android.tools.build:gradle:3.2.1'
          classpath 'com.google.gms:google-services:4.2.0'
      }
      

      最后,在android/app/build.gradle 中使用这些设置:

      android {
          compileSdkVersion 27
          ...
          defaultConfig {
              ...
              minSdkVersion 21
              targetSdkVersion 28
              multiDexEnabled true
              ...
          }
          ...
      }
      ...
      dependencies {
          implementation 'com.google.firebase:firebase-core:16.0.1'
          testImplementation 'junit:junit:4.12'
          androidTestImplementation 'com.android.support.test:runner:1.0.2'
          androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
          compile 'com.android.support:multidex:1.0.3'
      }
      

      还值得注意的是,我再次下载了google-services.json 文件(尽管它本身没有任何效果)。

      这些设置的任意组合都可能对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-03
        • 1970-01-01
        • 1970-01-01
        • 2011-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多