我正在使用flutter,在Android Studio.
我在控制台中看到以下内容:
W/Firestore(26053): (24.2.2) [OnlineStateTracker]: Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds
W/Firestore(26053):
W/Firestore(26053): This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.
E/flutter (26053): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: [cloud_firestore/unavailable] The service is currently unavailable. This is a most likely a transient condition and may be corrected by retrying with a backoff.
E/flutter (26053): #0 checkIfDocExists (package:crypto_app/Functions/firestorehelper.dart:29:5)
E/flutter (26053): <asynchronous suspension>
E/flutter (26053): #1 _MainPagesState._checkUsername (package:crypto_app/UI/mainpages.dart:63:21)
E/flutter (26053): <asynchronous suspension>
E/flutter (26053):
W/Firestore(26053): (24.2.2) [WatchStream]: (a4a9ed6) Stream closed with status: Status{code=UNAVAILABLE, description=Channel shutdownNow invoked, cause=null}.
我试过:
1.将<uses-permission android:name="android.permission.INTERNET" />
放入所有3个AndroidManifest.xml文件中
1.将<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
放在主目录下的AndroidManifest.xml中
1.已启用Multidex
1.使用了不同的wifi连接
1.第二天再次检查,发现问题相同
1.我的最低SDK版本为21
1.将我的代码复制到一个全新的项目
下面是我的主要职能:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
name: 'Retrospect',
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(MyApp());
}
我应该正确地初始化应用程序,因为我在我的控制台中得到他的:
I/FirebaseApp(26053): Device unlocked: initializing all Firebase APIs for app Retrospect
I/flutter (26053): Refreshing
W/DynamiteModule(26053): Local module descriptor class for com.google.android.gms.providerinstaller.dynamite not found.
I/DynamiteModule(26053): Considering local module com.google.android.gms.providerinstaller.dynamite:0 and remote module com.google.android.gms.providerinstaller.dynamite:0
W/ProviderInstaller(26053): Failed to load providerinstaller module: No acceptable module com.google.android.gms.providerinstaller.dynamite found. Local version is 0 and remote version is 0.
问题可能是由W/DynamiteModule(26053): Local module descriptor class for com.google.android.gms.providerinstaller.dynamite not found.
行引起的,我也无法解决。
下面是我的pubspec.yaml文件依赖项:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
firebase_core: ^1.20.1
cloud_firestore: ^3.4.4
http: ^0.13.4
path_provider: ^2.0.11
get_storage: ^2.0.3
我相信我使用的是最新版本的firebase_core和cloud_firestore。
我的app/build.gradle文件依赖项和插件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.android.support:multidex:1.0.3"
implementation 'com.google.android.material:material:1.6.1'
implementation 'com.google.android.gms:play-services-ads:21.1.0'
implementation platform('com.google.firebase:firebase-bom:30.3.2')
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.firebase:firebase-storage-ktx'
}
我的build.gradle文件:
buildscript {
ext.kotlin_version = '1.6.10'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.13'
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
google-services.json文件位置:
这里是我在Firestore中的规则(规则不应该是问题,因为我能够使用python成功地读取数据。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if
request.time < timestamp.date(2022, 12, 12);
}
}
}
最后,下面是我调用的函数:
import 'package:cloud_firestore/cloud_firestore.dart';
Future<bool> checkIfDocExists(String docId) async {
try {
// Get reference to Firestore collection
var collectionRef = FirebaseFirestore.instance.collection('accounts');
var doc = await collectionRef.doc(docId).get();
return doc.exists;
} catch (e) {
throw e;
}
}
是什么导致了这个错误?(我无法通过flutter访问Cloud Firestore)。我没有看到我的防病毒软件(Windows Defender)或防火墙阻止任何东西,但如果需要,我可以提供日志。
2条答案
按热度按时间rn0zuynd1#
在应用程序上启用appcheck有助于解决我这边的问题
rqdpfwrv2#
感谢@Damian提供的解决方案!
问题出在仿真器上,而不是程式码本身
点击此处阅读更多信息:Firebase无法在Android Studio模拟器上运行
如何继续处理此问题:
http
调用访问数据。