Flutter Android端使用Firebase服务(OTP/动态链接)报错求助
Flutter Android端Firebase服务报错(DeadObjectException)排查方案
报错信息
W/GmsClient(29923): IGmsServiceBroker.getService failed W/GmsClient(29923): android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died, but this could also be caused by running out of binder buffe W/GmsClient(29923): at android.os.BinderProxy.transactNative(Native Method) W/GmsClient(29923): at android.os.BinderProxy.transact(BinderProxy.java:584) W/GmsClient(29923): at com.google.android.gms.common.internal.zzac.getService(com.google.android.gms:play-services-basement@@18.0.0:8) W/GmsClient(29923): at com.google.android.gms.common.internal.BaseGmsClient.getRemoteService(com.google.android.gms:play-services-basement@@18.0.0:14) W/GmsClient(29923): at com.google.android.gms.common.api.internal.zabt.run(com.google.android.gms:play-services-base@@18.0.1:7) W/GmsClient(29923): at android.os.Handler.handleCallback(Handler.java:942) W/GmsClient(29923): at android.os.Handler.dispatchMessage(Handler.java:99) W/GmsClient(29923): at android.os.Looper.loopOnce(Looper.java:201) W/GmsClient(29923): at android.os.Looper.loop(Looper.java:288) W/GmsClient(29923): at android.os.HandlerThread.run(HandlerThread.java:67)
排查方案
检查设备Google Play服务状态
报错核心是GMS服务进程异常,先确认设备上的Google Play服务状态:- 打开设备「设置」-「应用」-「Google Play服务」
- 点击「检查更新」,安装最新版本
- 若更新后仍报错,尝试清除Google Play服务的缓存和数据,重启设备后再测试
核对Firebase依赖版本兼容性
Flutter Firebase插件与Android端GMS依赖版本不匹配也会触发这类问题:- 确保
pubspec.yaml中所有Firebase相关插件(如firebase_core、firebase_auth、firebase_dynamic_links)使用兼容版本,参考官方插件文档确认版本组合 - 打开Android项目级
build.gradle,检查com.google.gms:google-services版本与插件依赖的GMS版本是否一致,避免版本冲突
- 确保
重新校验签名信息
即使已配置SHA1/SHA256,也可能存在环境或配置遗漏:- 用Android Studio生成签名报告:执行「Gradle」面板→项目名→android→app→Tasks→android→signingReport,查看debug和release环境的SHA1/SHA256值
- 登录Firebase控制台,确认对应Android应用的签名证书指纹包含上述所有值,无debug或release环境的指纹遗漏
- 重新下载最新的
google-services.json,替换到Android项目的app目录下
清理项目缓存并重建
缓存残留可能导致配置未生效:- 执行终端命令:
flutter clean - 删除Android项目下的
.build文件夹 - 执行
flutter pub get,重新运行项目
- 执行终端命令:
排查Binder缓冲区溢出问题
报错提示可能是Binder缓冲区不足,可尝试:- 检查Firebase动态链接、OTP请求中是否携带过大参数,尽量精简传递的数据量
- 临时在
AndroidManifest.xml的<application>标签中添加android:largeHeap="true",增大应用堆内存验证是否解决(优先优化数据传递,此为临时方案)
更换测试设备/模拟器
如果仅在特定设备出现问题,大概率是该设备的GMS服务异常:- 换一台真机测试,或使用Android Studio创建带Google Play服务的新模拟器,验证报错是否复现
内容的提问来源于stack exchange,提问作者Shivam Kajaria
相关产品推荐
相关产品推荐

