开发Flutter电商应用未改代码出现GMS的FATAL EXCEPTION错误该如何解决
报错确认
你遇到的核心报错如下,首先可以直接判断错误归属:
E/AndroidRuntime(30409): FATAL EXCEPTION: [com.google.android.gms.chimera.GmsIntentOperationService$ChimeraService-Executor] idle E/AndroidRuntime(30409): Process: com.google.android.gms, PID: 30409 E/AndroidRuntime(30409): java.lang.SecurityException: isIccLockEnabled: Neither user 10531 nor current process has android.permission.READ_PRIVILEGED_PHONE_STATE.
该崩溃不属于你的Flutter电商应用,崩溃进程为谷歌移动服务(GMS)的系统进程,和你的业务代码修改无直接关联
排查步骤
- 首先验证你的应用是否实际受影响:触发报错时如果你的应用没有闪退、功能正常,可直接忽略该日志,这是设备侧GMS服务自身的问题
- 排查测试设备环境:确认是否使用了刷入非官方GMS包的国产定制ROM、测试版GMS服务、root过的设备,这类环境下GMS的权限配置经常会出现异常
- 检查你的应用权限配置:打开
android/app/src/main/AndroidManifest.xml,确认你是否主动申请了READ_PHONE_STATE等电话相关权限,非必要可直接移除 - 排查第三方插件依赖:检查你引入的Flutter插件是否包含广告、统计、推送类服务,这类服务通常会调用GMS接口,可临时逐个禁用插件定位触发源
对应解决方案
- 仅GMS自身崩溃、应用正常运行:
- 清除设备上GMS服务的缓存和数据,将GMS服务降级到官方稳定版即可
- 若使用模拟器测试,更换无预装GMS的原生模拟器,或改用面向国内环境的测试设备
- 应用被连带崩溃、或上架Google Play时被拦截:
- 在
AndroidManifest.xml的权限声明区添加如下配置,拦截隐式申请的特权权限:
<!-- 移除GMS隐含申请的特权权限 --> <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" tools:node="remove" />- 升级所有依赖的第三方插件到最新正式版,或替换为无GMS依赖的同类插件
- 在
- 应用仅面向国内用户、无需上架Google Play:
- 打包时配置排除所有GMS相关组件,彻底避免GMS服务异常对应用的影响
内容的提问来源于stack exchange,提问作者Mohamad Jabaly
相关产品推荐
相关产品推荐

