You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Cloud Firestore反复报“无法绑定服务”错误求助

解决Flutter Firestore应用中“Unable to bind to service”日志刷屏问题

问题描述

我正在开发一款基于Flutter的地理问答App,使用Cloud Firestore存储用户答题分数。当App处于主界面(及所有使用Firebase的界面)时,会每秒反复打印“Unable to bind to service”错误,尽管App的网络功能正常(Firestore数据可正常更新)。想了解这些错误是否有影响,以及如何停止日志刷屏。

错误日志

E/AndroidRuntime(13222): FATAL EXCEPTION: main
E/AndroidRuntime(13222): Process: com.google.android.gms.persistent, PID: 13222
E/AndroidRuntime(13222): java.lang.RuntimeException: Unable to bind to service com.google.android.gms.gcm.PushMessagingRegistrarProxy@6771f8e with Intent { act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gms }: java.lang.IllegalArgumentException: NetworkCapability 37 out of range
E/AndroidRuntime(13222):    at android.app.ActivityThread.handleBindService(ActivityThread.java:5021)
E/AndroidRuntime(13222):    at android.app.ActivityThread.-$$Nest$mhandleBindService(Unknown Source:0)
E/AndroidRuntime(13222):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2451)
E/AndroidRuntime(13222):    at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime(13222):    at android.os.Looper.loopOnce(Looper.java:232)
E/AndroidRuntime(13222):    at android.os.Looper.loop(Looper.java:317)
E/AndroidRuntime(13222):    at android.app.ActivityThread.main(ActivityThread.java:8699)
E/AndroidRuntime(13222):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(13222):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
E/AndroidRuntime(13222):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
E/AndroidRuntime(13222): Caused by: java.lang.IllegalArgumentException: NetworkCapability 37 out of range
E/AndroidRuntime(13222):    at android.net.NetworkCapabilities.checkValidCapability(NetworkCapabilities.java:2637)
E/AndroidRuntime(13222):    at android.net.NetworkCapabilities.removeCapability(NetworkCapabilities.java:881)
E/AndroidRuntime(13222):    at android.net.NetworkRequest$Builder.removeCapability(NetworkRequest.java:360)
E/AndroidRuntime(13222):    at bjni.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):96)
E/AndroidRuntime(13222):    at dagger.internal.DoubleCheck.c(:com.google.android.gms@250832038@25.08.32 (260800-731361394):10)
E/AndroidRuntime(13222):    at dagger.internal.DoubleCheck.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):7)
E/AndroidRuntime(13222):    at bjgg.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):11)
E/AndroidRuntime(13222):    at dagger.internal.DoubleCheck.c(:com.google.android.gms@250832038@25.08.32 (260800-731361394):10)
E/AndroidRuntime(13222):    at dagger.internal.DoubleCheck.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):7)
E/AndroidRuntime(13222):    at bjii.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):35)
E/AndroidRuntime(13222):    at dagger.internal.DoubleCheck.c(:com.google.android.gms@250832038@25.08.32 (260800-731361394):10)
E/AndroidRuntime(13222):    at dagger.internal.DoubleCheck.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):7)
E/AndroidRuntime(13222):    at dagger.internal.DelegateFactory.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):5)
E/AndroidRuntime(13222):    at bjbr.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):41)
E/AndroidRuntime(13222):    at dagger.internal.DoubleCheck.c(:com.google.android.gms@250832038@25.08.32 (260800-731361394):10)
E/AndroidRuntime(13222):    at dagger.internal.DoubleCheck.get(:com.google.android.gms@250832038@25.08.32 (260800-731361394):7)
E/AndroidRuntime(13222):    at bjbp.b(:com.google.android.gms@250832038@25.08.32 (260800-731361394):70)
E/AndroidRuntime(13222):    at com.google.android.gms.gcm.registration.PushMessagingRegistrarChimeraProxy.onBind(:com.google.android.gms@250832038@25.08.32 (260800-731361394):13)
E/AndroidRuntime(13222):    at aolo.onBind(:com.google.android.gms@250832038@25.08.32 (260800-731361394):39)
E/AndroidRuntime(13222):    at android.app.ActivityThread.handleBindService(ActivityThread.java:5006)
E/AndroidRuntime(13222):    ... 9 more

错误影响分析

  • 该错误来自com.google.android.gms.persistent进程,属于Google Play服务的GCM/FCM推送模块,并非你的App进程直接抛出
  • 当前Firestore功能正常,说明核心数据交互不受影响,但持续报错可能带来以下问题:
    • 日志刷屏干扰调试工作
    • 后台重复尝试绑定服务会造成轻微资源消耗
    • 若后续需要集成FCM推送功能,会直接出现功能异常

解决方法

1. 移除未使用的FCM依赖

如果你的App不需要推送功能,检查pubspec.yaml是否引入了firebase_messaging,若有则移除该依赖,执行flutter pub get更新依赖。

2. 禁用FCM自动初始化

即使未直接引入FCM,Firebase核心可能默认初始化推送服务,可在android/app/src/main/AndroidManifest.xml的<application>标签内添加配置禁用:

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

3. 更新Google Play服务

该错误可能是设备上Google Play服务版本与Firebase SDK版本不兼容导致,在测试设备上把Google Play服务更新到最新版本。

4. 临时过滤日志(调试阶段)

若暂时无法彻底解决,可在Android Studio的Logcat中添加过滤规则屏蔽该错误:

  • 搜索框输入:-tag:AndroidRuntime -process:com.google.android.gms.persistent
  • 或直接过滤你的App进程:package:com.your.app.package(替换为实际包名)

5. 统一Firebase SDK版本

确保pubspec.yaml中所有Firebase相关依赖版本一致,示例:

firebase_core: ^2.24.2
cloud_firestore: ^4.13.6
# 其他Firebase依赖保持相同大版本

内容的提问来源于stack exchange,提问作者Glad1atoR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:34:53