Flutter Release模式Google登录失败:PlatformException问题求助
Flutter Release模式下Google登录失败(Error code 10)问题排查与解决
问题描述
Debug模式下Google登录功能正常,但执行flutter run --release后点击登录按钮抛出以下异常:
[+24158 ms] E/flutter ( 1858): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(sign_in_failed, m3.b: 10: , null, null) [ +1 ms] E/flutter ( 1858): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:653) [ ] E/flutter ( 1858): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:296) [ +1 ms] E/flutter ( 1858): <asynchronous suspension> [ +1 ms] E/flutter ( 1858): #2 MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:499) [ +1 ms] E/flutter ( 1858): <asynchronous suspension> [ +1 ms] E/flutter ( 1858): #3 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:273) [ +1 ms] E/flutter ( 1858): <asynchronous suspension> [ ] E/flutter ( 1858): #4 GoogleSignIn.signIn.isCanceled (package:google_sign_in/google_sign_in.dart:407) [ ] E/flutter ( 1858): <asynchronous suspension> [ ] E/flutter ( 1858):
已生成签名密钥(SHA1 & SHA256)并添加至Firebase,也下载了google-services.json,但问题仍未解决。
环境信息
$ flutter doctor -v [√] Flutter (Channel stable, 3.3.4, on Microsoft Windows [Version 6.3.9600], locale en-US) • Flutter version 3.3.4 on channel stable at D:\flutter\Sdk\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision eb6d86ee27 (9 weeks ago), 2022-10-04 22:31:45 -0700 • Engine revision c08d7d5efc • Dart version 2.18.2 • DevTools version 2.15.0 [√] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1) • Android SDK at C:\Users\bright\AppData\Local\Android\sdk • Platform android-33, build-tools 32.1.0-rc1 • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03) • All Android licenses accepted. [√] Chrome - develop for the web • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe [X] Visual Studio - develop for Windows X Visual Studio not installed; this is necessary for Windows development. Download at https://visualstudio.microsoft.com/downloads/. Please install the "Desktop development with C++" workload, including all of its default components [√] Android Studio (version 3.5) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin version 44.0.1 • Dart plugin version 191.8593 • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03) [√] VS Code (version 1.73.1) • VS Code at C:\Users\bright\AppData\Local\Programs\Microsoft VS Code • Flutter extension version 3.54.0 [√] Connected device (4 available) • Infinix X652A (mobile) • 0494625032002068 • android-arm64 • Android 9 (API 28) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 6.3.9600] • Chrome (web) • chrome • web-javascript • Google Chrome 101.0.4951.54 • Edge (web) • edge • web-javascript • Microsoft Edge 107.0.1418.62 [√] HTTP Host Availability • All required HTTP hosts are available ! Doctor found issues in 1 category.
使用的依赖版本
google_sign_in: ^5.4.2 firebase_auth: ^3.11.1 firebase_core: ^1.24.0
解决方案
1. 确认Release签名密钥与Firebase配置一致
Release包使用的签名密钥必须和生成SHA值的密钥完全匹配。检查android/app/build.gradle中的签名配置:
signingConfigs { release { keyAlias 'your-key-alias' keyPassword 'your-key-password' storeFile file('your-keystore-file.jks') storePassword 'your-store-password' } } buildTypes { release { signingConfig signingConfigs.release // 其他配置 } }
用该密钥重新生成SHA1和SHA256,添加到Firebase项目的项目设置 -> 应用 -> 应用签名中,然后重新下载google-services.json替换到android/app/目录。
2. 检查Google Cloud Console的OAuth 2.0客户端ID
登录Google Cloud Console,进入目标项目的API和服务 -> 凭据页面,确认存在对应Release签名的Android客户端ID,且包名与应用一致。若不存在,手动创建或刷新Firebase配置重新生成。
3. 禁用R8混淆对Google登录类的影响
在android/app/proguard-rules.pro中添加以下混淆规则:
-keep class com.google.android.gms.auth.api.signin.** { *; } -keep class com.google.firebase.auth.** { *; }
确保android/app/build.gradle的release构建类型中混淆配置正确:
release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' }
4. 清除缓存并重新构建
卸载设备上的应用,执行以下命令清理缓存后重新构建Release包:
flutter clean flutter run --release
5. 验证Firebase Google登录启用状态
进入Firebase控制台的Authentication -> 登录方法,确认Google登录已启用,且未限制邮箱域名。
内容的提问来源于stack exchange,提问作者Brightcode
相关产品推荐
相关产品推荐

