发布应用到Play Store后Firestore文档无法正常读写问题求助
问题解决指南
这个问题是Android应用上架Google Play后Firestore无法正常工作的典型场景,可按照以下优先级排查修复:
1. 优先排查混淆配置问题
你在Firestore控制台看不到原有字段名,说明实体类字段被混淆重命名了,你之前添加的Proguard规则大概率未生效或者配置不全,按照如下步骤修正:
- 首先将以下Firebase官方通用混淆规则添加到你项目的
proguard-rules.pro文件中:
# 保留Firestore相关类及注解不被混淆 -keep class com.google.firebase.firestore.** { *; } -keepattributes Signature -keepattributes *Annotation*
- 其次保留你自己定义的、用于Firestore数据映射的实体类不被混淆,二选一即可:
- 方式1:给所有实体类添加
@Keep注解(需导入androidx.annotation.Keep包) - 方式2:在混淆规则中添加实体类所在包的保留规则,示例如下(替换成你自己的实体类包路径):
- 方式1:给所有实体类添加
-keep class 你的应用实体类所在包名.** { *; }
- 最后检查
app/build.gradle中release构建配置是否正确引用了混淆规则文件:
android { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
2. 排查Firebase签名指纹配置问题
如果你开启了Google Play应用签名功能,上架后的应用签名会被Google替换为官方生成的签名,你本地打包用的签名指纹和上架后的签名指纹不一致,会导致Firebase权限校验失败,无法读写数据:
- 打开Google Play控制台 → 你的应用 → 应用完整性 → 复制应用签名密钥下的SHA-1、SHA-256值
- 打开Firebase控制台 → 项目设置 → 你的Android应用 → 添加指纹,粘贴刚才复制的两个SHA值保存
- 重新下载
google-services.json替换到项目的app目录下,重新打包即可
3. 排查Firestore安全规则
确认你上线前调整的Firestore安全规则没有限制正常业务的读写权限,可先临时将规则改为测试模式验证是否恢复正常,再调整为符合业务要求的正式规则。
内容的提问来源于stack exchange,提问作者siddharth sharma
相关产品推荐
相关产品推荐

