Flutter:cloud_firestore 的构建错误:高于版本“0.7.4”

Posted

技术标签:

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

几个小时以来,我一直在尝试解决构建问题,直到我意识到这是由于 Flutter 插件 cloud_firestore 造成的。 0.7.4 版适用于 androidios,但任何高于 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里了吗?这似乎与我的情况不同。 【参考方案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 文件(尽管它本身没有任何效果)。

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

【讨论】:

以上是关于Flutter:cloud_firestore 的构建错误:高于版本“0.7.4”的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:cloud_firestore 的构建错误:高于版本“0.7.4”

Flutter (iOS) - 在 GeneratedPluginRegistrant.m 中找不到模块“cloud_firestore”

I/flutter (22027):MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentRefer

Flutter cloud_firestore 系统日期对象的设置/警告

Flutter 中的 cloud_firestore 和 firebase_auth 兼容性问题

添加依赖项 cloud_firestore 时,新的 Flutter 应用程序失败:^1.0.7