Flutter应用上架Play Store遇非自身功能相关ANR如何排查
Flutter应用Google Play内测单设备ANR排查方案
问题本质判定
首先从给出的日志可以直接确定,这个ANR和你开发的Flutter应用没有直接关系:
- 发生ANR的进程是
com.google.android.googlequicksearchbox,即设备预装的Google搜索App(系统全局Google搜索组件),不是你的应用进程 - 触发ANR的组件是Google搜索内部的
DeviceAccountsChangedReceiver_Receiver,日志里的tiktok是Google内部自研依赖库的命名,和字节跳动旗下的TikTok应用完全无关,属于常见的命名误解 - 触发ANR的广播是系统全局广播
android.accounts.LOGIN_ACCOUNTS_CHANGED,当设备上的系统账号状态变动(比如登录态过期、同步异常、测试流程触发账号校验)时,系统会向所有注册了该广播的App发送这个广播,Google搜索自身处理这个广播超时才导致ANR - 出问题的设备是2018年发布的日版运营商定制机AQUOS sense2 SH-01L,系统为Android 9(SDK28),这类老定制机普遍存在预装GMS组件版本过旧、运营商修改系统逻辑导致的固有bug,且问题仅在单台设备复现、录屏中你的应用全程运行正常,完全不符合自有代码故障的特征。
排查步骤
按以下顺序验证即可,不需要做无意义的代码修改:
- 登录Google Play Console的ANR详情页,核对崩溃进程包名字段,确认崩溃进程不属于你的应用包名
- 全局检查项目的
AndroidManifest.xml文件以及所有接入插件的Manifest配置,搜索LOGIN_ACCOUNTS_CHANGED字段,确认你的应用没有注册监听这个系统广播——你没有做账号相关功能的话,正常不会有这个配置 - 如有条件找同型号同系统版本的测试机,安装你提交的正式发布包,跑完所有核心业务路径,同时手动触发账号变更操作(添加/删除测试Google账号、触发账号同步),观察10分钟以上,确认你的应用不会出现无响应、崩溃、交互异常即可。
对应处理方式
- 这类不属于自身应用进程触发的、仅在单台老定制设备上出现的系统组件ANR,不会被Google Play判定为应用质量问题,不影响正常上架审核
- 如果担心审核误判,可以在提交审核的备注栏补充说明:该ANR为测试设备预装Google搜索组件的固有故障,发生在系统后台进程,测试全程应用运行正常,无交互异常
- 不需要针对这个问题修改应用业务代码,做无效适配。
内容的提问来源于stack exchange,提问作者under
相关产品推荐
相关产品推荐

