我已经尝试解决了几个小时的构建问题,直到我意识到这是由于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_firestoreawait db.settings(timestampsInSnapshotsEnabled: true);
在这里感谢一些帮助。非常感谢!
答案 0 :(得分:0)
就我而言,我在Google Codelabs上对Firebase for Flutter进行编码时处于相同的情况。我将GoogleService-Info.plist放在Xcode的相应文件夹中,并将google-services.json放在Adndroid Studio的相应文件夹中。 iOS模拟器可以运行,但是在Android Studio中会显示以下窗口,然后按“确定”按钮并启动Android模拟器会导致相应的错误。
答案 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
文件(尽管它本身并没有任何作用)。
这些设置的任何组合都可能对您有所帮助。