Android应用Firebase Firestore数据无法保存问题求助
以下是针对该报错的逐一排查和解决方案:
统一Firebase依赖版本
确保Module级别build.gradle中所有Firebase组件版本同步,推荐使用Firebase BOM管理版本,避免版本冲突:// 引入Firebase BOM统一管控版本 implementation platform('com.google.firebase:firebase-bom:32.7.0') implementation 'com.google.firebase:firebase-firestore' implementation 'com.google.firebase:firebase-core'不要单独指定Firestore的版本,依赖BOM自动同步所有Firebase组件的兼容版本。
规范Firestore初始化逻辑
检查MainActivity中Firestore实例的初始化时机,必须在主线程执行,且避免在组件生命周期末期(如onDestroy后)调用:// 正确初始化方式,建议在Activity的onCreate中执行 FirebaseFirestore db = FirebaseFirestore.getInstance();禁止在非主线程初始化Firestore,或提前销毁Firebase实例。
排查网络环境稳定性
该报错常与网络连接异常相关:- 切换网络环境(WiFi/移动数据),关闭代理工具后重试
- 模拟器用户可重启模拟器,或检查模拟器的网络连接状态是否正常
验证Firebase配置文件与权限
- 确认
google-services.json是从对应Firebase项目控制台下载的原始文件,包名与项目applicationId完全匹配 - 检查
AndroidManifest.xml中是否添加了必要权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 确认
检查数据写入代码逻辑
确保写入操作未被异常中断,或提前关闭了Firestore连接:// 标准数据写入示例 Map<String, Object> userData = new HashMap<>(); userData.put("name", "Test User"); userData.put("age", 25); db.collection("users") .add(userData) .addOnSuccessListener(docRef -> Log.d(TAG, "数据写入成功,ID:" + docRef.getId())) .addOnFailureListener(e -> Log.w(TAG, "写入失败", e));避免在写入过程中调用
FirebaseApp.deleteApp()等销毁实例的方法。临时测试安全规则(仅限排查)
虽然你已检查过规则,可临时设置测试规则排除权限问题:rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if true; } } }测试完成后务必恢复原有安全规则,避免数据泄露风险。
清理缓存并重新构建
- 执行Android Studio的
File > Invalidate Caches... > Invalidate and Restart清理缓存 - 终端执行
./gradlew clean清理构建缓存,再重新编译项目
- 执行Android Studio的
内容的提问来源于stack exchange,提问作者Yadigar Yusifov
相关产品推荐
相关产品推荐

