Flutter应用Google Play预启动报告TikTok Tracing异常求助
我开发的一款Flutter应用上传至Google Play Console后,预启动报告在Google Pixel 5(Android 11,SDK 30)设备上触发如下错误,本地同参数模拟器无法复现,且是更新依赖包后首次出现:
Logical.txt:
at tk_trace.Broadcast to com.google.android.apps.search.googleapp.permissions.udcdataservice.facs.FacsBroadcastReceiver_Receiver com.google.android.gms.udc.action.FACS_CACHE_UPDATED_EXPLICIT(Unknown Source:0)
Exception com.google.apps.tiktok.tracing.ct: at tk_trace.Broadcast to com.google.android.apps.search.googleapp.permissions.udcdataservice.facs.FacsBroadcastReceiver_Receiver com.google.android.gms.udc.action.FACS_CACHE_UPDATED_EXPLICIT(Unknown Source:0)
Caused by: com.google.android.gms.common.api.m: 20: The connection to Google Play services was lost due to service disconnection.
at com.google.android.gms.common.api.internal.ad.a (SourceFile:16)
at com.google.android.gms.common.api.internal.bk.b (SourceFile:179)
at com.google.android.gms.common.api.internal.bk.a (SourceFile:167)
at com.google.android.gms.common.internal.aa.a (SourceFile:2)
at com.google.android.gms.common.internal.f.handleMessage (SourceFile:38)
at android.os.Handler.dispatchMessage (Handler.java:106)
at com.google.android.gms.j.c.b.c.a (SourceFile:5)
at com.google.android.gms.j.c.b.c.dispatchMessage (SourceFile:4)
at android.os.Looper.loop (Looper.java:223)
at android.os.HandlerThread.run (HandlerThread.java:67)
1. Google Play Services 依赖版本不兼容
更新Flutter依赖时,可能引入了与目标设备(Android 11)预装的Google Play Services版本不匹配的组件:
- 若项目中
google_maps_flutter、firebase_core等依赖的Play Services版本过高,而预启动设备上的Play Services未同步更新,会直接导致连接断开。 - 可在
android/build.gradle中统一指定适配Android 11的稳定版本来规避冲突:ext { playServicesVersion = "20.1.0" }
2. 后台逻辑的权限限制触发异常
Android 11对后台操作权限限制更严格,更新依赖后可能新增了后台访问Play Services的逻辑:
- 预启动测试中,应用可能被系统触发
FACS_CACHE_UPDATED_EXPLICIT这类广播,此时后台状态下访问Play Services会因权限不足或系统限制导致连接中断。 - 检查新增依赖是否添加了后台广播接收器或定时任务,确保访问Play Services前先检查连接状态,并处理断开异常。
3. 依赖包的隐性交互逻辑变更
部分依赖包更新后,底层与Google Play Services的交互逻辑被修改:
- 比如同步调用改异步、调整连接超时时间等,在预启动测试的特定环境下触发了连接断开。
- 用
flutter pub outdated对比更新前后的依赖列表,重点排查Google服务、权限相关的包,逐步回退测试定位具体问题依赖。
4. 预启动测试环境的特殊性
Google Play Console的预启动设备与本地模拟器存在环境差异:
- 预启动设备可能运行特定系统补丁、限制策略或Google服务的测试版本,导致与应用交互时出现特有异常。
- 这种情况下该错误可能不影响实际用户,但仍需确保应用对Play Services连接断开有容错处理,比如重试机制或友好提示。
5. Android 11 权限适配缺失
更新依赖后,可能未适配Android 11的隐私规则:
- 涉及位置、账号等需要Play Services的功能,在Android 11中需要更明确的权限声明或动态请求,若依赖包未处理会导致连接失败。
- 检查
AndroidManifest.xml是否添加了必要权限(如ACCESS_FINE_LOCATION),并确认动态权限请求逻辑正确。
内容的提问来源于stack exchange,提问作者Anette

