You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:01:02