Flutter开启minifyEnabled的release模式下出现Firestore不可用错误
解决方案
问题根因
该报错不是Firebase服务真的不可用,是开启混淆后,Cloud Firestore依赖的protobuf序列化类、Flutter插件桥接类被误裁剪导致的调用失败,debug模式默认关闭混淆所以不会触发问题。
修复步骤
- 第一步:修改
proguard-rules.pro文件,在原有规则基础上追加以下配置:
# 保留Cloud Firestore核心服务类 -keep class com.google.cloud.firestore.** { *; } -keep class com.google.firestore.v1.** { *; } # 保留protobuf序列化类,避免数据解析异常 -keep class * extends com.google.protobuf.GeneratedMessageLite { *; } -keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite { <fields>; <methods>; } # 保留Flutter Firestore插件桥接类 -keep class io.flutter.plugins.firebase.firestore.** { *; }
- 第二步:升级依赖版本避免兼容问题
将android/build.gradle中com.google.gms:google-services版本从4.3.8升级到4.3.15,同时将pubspec.yaml中的cloud_firestore插件升级到3.5.1及以上的稳定空安全版本。 - 第三步:重新构建release包
保持minifyEnabled true、shrinkResources true配置不变,重新编译测试即可,该配置仅保留必要的未混淆类,整体包体积增量不到1%。
内容的提问来源于stack exchange,提问作者DAVID TEC
相关产品推荐
相关产品推荐

