Flutter项目Firestore在模拟器运行抛出Google Playstore异常
Firebase Firestore 无Google Play服务模拟器崩溃解决方案
问题根因
该崩溃是23.0.4版本Firestore SDK的已知问题:
- 官方文档提到的Firestore不依赖Google Play服务指核心读写功能,该版本新增了通过GMS更新SSL根证书的可选逻辑,检测不到GMS时未做好异常捕获
- API 30的原生x86镜像默认不带GMS,且对conscrypt库的
getAlpnSelectedProtocol方法做了灰名单限制,SDK降级调用该方法失败直接触发崩溃
可行解决方案
- 方案1:降级Firestore SDK版本
降级到22.1.2及以下版本即可规避该问题,修改app模块build.gradle的依赖配置:implementation "com.google.firebase:firebase-firestore:22.1.2" - 方案2:更换带Google Play服务的模拟器镜像
新建模拟器时,选择目标镜像标签带Google Play的版本(不是仅带Google APIs的版本),该镜像自带最新版GMS和Play Store,可直接兼容当前SDK版本 - 方案3:禁用Firestore的SSL自动更新逻辑
初始化Firestore时添加自定义配置,跳过GMS SSL更新逻辑,使用系统默认SSL上下文:FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .build(); FirebaseFirestore.getInstance().setFirestoreSettings(settings); - 方案4:更换更高版本的模拟器
直接使用API 31及以上版本的模拟器,该版本对conscrypt隐藏API的限制放宽,不会触发反射调用失败的崩溃
内容的提问来源于stack exchange,提问作者Manoj
相关产品推荐
相关产品推荐

