Flutter运行出现PlatformException(ApiException:7)报错如何修复?
问题定位
从报错堆栈可直接明确核心问题:
- 报错触发在调用
google_sign_in插件的signIn()方法阶段,属于未被捕获的平台层异常 - 附带的
com.google.android.gms.common.api.ApiException: 7是Google Play服务的标准错误码,对应网络错误,本质是当前运行设备无法正常连通Google服务 - 应用抛出未捕获异常的直接原因是调用登录方法时未做异常捕获处理
修复方案
1. 先补全异常捕获逻辑,避免应用直接闪退
调用Google登录方法时必须捕获平台异常,针对不同错误码做对应处理,参考代码如下:
import 'package:flutter/services.dart'; import 'package:google_sign_in/google_sign_in.dart'; Future<void> handleGoogleSignIn() async { final GoogleSignIn googleSignInInstance = GoogleSignIn(); try { final GoogleSignInAccount? signedAccount = await googleSignInInstance.signIn(); // 此处补充登录成功后的业务逻辑 } on PlatformException catch (err) { switch(err.code) { case 'network_error': // 对应本次报错的处理:给用户弹出网络异常提示,引导检查网络环境 break; case 'sign_in_canceled': // 用户手动取消登录的处理逻辑 break; default: // 其他未知平台异常兜底处理 } } catch (err) { // 其他非平台类异常兜底处理 } }
2. 排查解决网络错误根源
针对错误码7的场景,按运行环境分别排查:
- 安卓模拟器运行场景:确认模拟器预装了Google Play服务、已经登录了有效Google账号、当前模拟器网络可正常访问Google服务,国内环境需要配置对应的网络代理
- 真机运行场景:确认设备安装了Google Play服务套件、当前网络可正常访问Google服务
- 配置排查:确认Google Cloud后台已经配置了和你应用包名、签名SHA1值匹配的OAuth安卓客户端ID,配置错误也会触发类网络错误提示
3. 非相关提示处理
报错中附带的splash screen废弃警告不影响本次登录功能,属于过时API提醒,可后续再做适配即可。
内容的提问来源于stack exchange,提问作者My Car
相关产品推荐
相关产品推荐

