Flutter:cloud_firestore的构建错误:版本“ 0.7.4”以上

时间:2018-10-30 12:22:56

标签: firebase flutter cloud google-cloud-firestore

我已经尝试解决了几个小时的构建问题,直到我意识到这是由于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)位置:变量生成器   类型的Builder   /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个错误失败:构建失败,并发生异常。   *出了什么问题:任务':cloud_firestore:compileDebugJavaWithJavac'的执行失败。

     
    

编译失败;有关详细信息,请参见编译器错误输出。     *尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。与--scan一起运行以获取完整的见解。     *在https://help.gradle.org中获得更多帮助,11s Gradle任务失败组装调试失败,退出代码为1

  

由于

的支持,我想在iOS和Android上都使用0.8.2 + 1 cloud_firestore
await db.settings(timestampsInSnapshotsEnabled: true);

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

3 个答案:

答案 0 :(得分:0)

google-services.json存在问题。

就我而言,我在Google Codelabs上对Firebase for Flutter进行编码时处于相同的情况。我将GoogleService-Info.plist放在Xcode的相应文件夹中,并将google-services.json放在Adndroid Studio的相应文件夹中。 iOS模拟器可以运行,但是在Android Studio中会显示以下窗口,然后按“确定”按钮并启动Android模拟器会导致相应的错误。

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

Android Studio Window1 Android Studio Window2

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我觉得你,我也花了很多小时试图弄清楚这一点。

构建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文件(尽管它本身并没有任何作用)。

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