如何修复Android开发中出现的“Could not reach Cloud Firestore Backend”错误?
问题排查与解决方案
- 第一步:排查安卓虚拟设备(AVD)网络可用性
先打开AVD内置浏览器,访问任意公网网站验证网络是否真的可用。AVD显示Wifi满格不代表实际能连通公网,多数是宿主设备开启了VPN、全局代理导致AVD网络异常,关闭宿主的VPN/代理后重启AVD重试即可。 - 第二步:检查应用网络权限配置
确认AndroidManifest.xml中已添加必要的网络权限,缺少权限会导致无法连接后端:<!-- 必须的网络访问权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 可选,用于检测网络状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 第三步:核对Firebase项目配置
- 确认
google-services.json文件是从Firebase控制台对应项目下载的最新版本,且已放在app模块的根目录下 - 检查Firestore安全规则,默认新建的Firestore仅允许已认证用户访问,若你未实现用户认证逻辑,测试阶段可临时将规则调整为允许公开访问(正式上线前务必修改为符合业务的安全规则):
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if true; } } } - 确认
- 第四步:补充代码异常监听定位具体错误
你当前仅添加了成功回调,缺少失败回调无法拿到具体错误信息,建议补充OnFailureListener打印异常详情,同时可指定强制从服务端拉取数据,避免本地缓存干扰,示例修改后代码如下:DocumentReference mDocRef = FirebaseFirestore.getInstance().document(document_path); // 强制从服务端获取数据 mDocRef.get(Source.SERVER) .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() { @Override public void onSuccess(DocumentSnapshot documentSnapshot){ if(documentSnapshot.exists()){ int Rent_amount = (int) documentSnapshot.get(Rent); int Food_amount = (int) documentSnapshot.get(Food); int Bills_amount = (int) documentSnapshot.get(Bills); TextView Rent_test = (TextView) findViewById(R.id.rent_view); Rent_test.setText(String.valueOf(Rent_amount)); TextView Food_test = (TextView) findViewById(R.id.Food_view); Food_test.setText(String.valueOf(Food_amount)); TextView Bills_test = (TextView) findViewById(R.id.Bills_view); Bills_test.setText(String.valueOf(Bills_amount)); } } }) // 补充失败回调打印异常详情 .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.e("FirestoreError", "获取数据失败", e); } });
内容的提问来源于stack exchange,提问作者GitHub CSC3
相关产品推荐
相关产品推荐

