Flutter应用release模式出现cloud_firestore/unavailable服务不可用错误
解决方案
- 配置混淆规则
release模式默认开启R8混淆,未添加Firestore相关混淆规则会导致类被误删引发异常:
- 打开
android/app/proguard-rules.pro文件,添加如下规则:
-keep class com.google.firebase.firestore.** { *; } -keep class io.grpc.** { *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); }
- 确认
android/app/build.gradle中release构建配置已关联混淆规则文件:
android { ... buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' ... } } }
- 检查签名指纹配置
debug模式默认使用debug签名,若未将release签名对应的指纹添加到Firebase控制台,会触发权限拦截:
- 导出release签名的SHA1、SHA256指纹,添加到Firebase控制台对应安卓应用的配置页
- 重新下载
google-services.json文件,替换android/app/目录下的旧文件,重新打包
- 修正Firebase初始化逻辑
release模式冷启动执行逻辑更严格,未等待Firebase初始化完成就调用接口会触发异常:
void main() async { WidgetsFlutterBinding.ensureInitialized(); // 必须等待初始化完成再启动应用 await Firebase.initializeApp(); runApp(const MyApp()); }
- 调整依赖版本适配
当前使用的cloud_firestore版本和Flutter 2.2.3存在兼容性瑕疵,可升级到适配版本:
firebase_core: 1.10.0 firebase_auth: 2.5.0 cloud_firestore: 1.17.1
执行flutter clean后重新打包测试即可。
内容的提问来源于stack exchange,提问作者Fathah Cr
相关产品推荐
相关产品推荐

