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

Xamarin.Forms应用上传AAB至Google Play后Firebase登录失败求助

Xamarin.Forms AAB上传Google Play后Firebase登录失效(仅Google Play签名Release版本)

问题描述

将Xamarin.Forms应用的AAB包上传至Google Play后,Firebase登录流程突然失效(此前运行正常),选择Google账号登录后设备日志抛出以下错误:

com.google.firebase.FirebaseException: An internal error has occurred. [ Instantiation of JsonResponse failed! class com.google.android.gms.internal.firebase-auth-api.zzaac ]
    at com.google.android.gms.internal.firebase-auth-api.zzwe.zza(com.google.firebase:firebase-auth@@21.0.8:4)
    at com.google.android.gms.internal.firebase-auth-api.zzxc.zza(com.google.firebase:firebase-auth@@21.0.8:9)
    at com.google.android.gms.internal.firebase-auth-api.zzxd.zzl(com.google.firebase:firebase-auth@@21.0.8:1)
    at com.google.android.gms.internal.firebase-auth-api.zzxa.zzh(com.google.firebase:firebase-auth@@21.0.8:25)
    at com.google.android.gms.internal.firebase-auth-api.zzwc.zzh(com.google.firebase:firebase-auth@@21.0.8:1)
    at com.google.android.gms.internal.firebase-auth-api.zzua.zza(com.google.firebase:firebase-auth@@21.0.8:2)
    at com.google.android.gms.internal.firebase-auth-api.zzxl.zzb(com.google.firebase:firebase-auth@@21.0.8:13)
    at com.google.android.gms.internal.firebase-auth-api.zzxl.zza(com.google.firebase:firebase-auth@@21.0.8:14)
    at com.google.android.gms.internal.firebase-auth-api.zzwr.zzq(com.google.firebase:firebase-auth@@21.0.8:4)
    at com.google.android.gms.internal.firebase-auth-api.zzuh.zzA(com.google.firebase:firebase-auth@@21.0.8:4)
    at com.google.android.gms.internal.firebase-auth-api.zzwd.zzu(com.google.firebase:firebase-auth@@21.0.8:5)
    at com.google.android.gms.internal.firebase-auth-api.zzvj.zzc(com.google.firebase:firebase-auth@@21.0.8:1)
    at com.google.android.gms.internal.firebase-auth-api.zzxe.run(com.google.firebase:firebase-auth@@21.0.8:1)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

该问题仅出现在Google Play签名的Release版本中,Debug版本运行正常,无法通过调试复现。

环境信息

  • Android版本:13.0
  • 目标API:33
  • 相关NuGet包:
    • Xamarin.Forms 5.0.0.2515
    • Google.Apis 1.57.0
    • Google.Apis.Auth 1.57.0
    • Xamarin.Firebase.Auth 121.0.8
    • Xamarin.Firebase.Common 120.1.2
    • Xamarin.GooglePlayServices.Auth 120.3.0
  • 发布方式:Android App Bundles(.aab),使用Google登录按钮(未用Web Authenticator)

已尝试操作

  • 核对Debug、Release版本及Google Play签名证书的SHA指纹,确保与Firebase控制台、google-services.json、Google Cloud控制台及API密钥应用限制一致
  • 升级相关Google和Firebase Auth NuGet包至最新版本

解决建议

  • 添加Firebase Auth混淆规则:Release版本的R8/ProGuard混淆可能破坏Firebase内部类,在项目的ProGuard.cfg文件中添加以下规则:

    -keep class com.google.android.gms.internal.firebase-auth-api.** { *; }
    -keep class com.google.firebase.auth.** { *; }
    -keepnames class com.google.firebase.auth.** { *; }
    -keepnames class com.google.android.gms.internal.firebase-auth-api.** { *; }
    

    确保Xamarin Android项目的Release构建已启用ProGuard并正确引用该配置文件。

  • 重新验证Google Play应用签名密钥的SHA指纹:

    1. 登录Google Play控制台,进入应用的应用签名页面,复制应用签名密钥证书的SHA-256指纹
    2. 将该指纹添加到Firebase控制台的项目设置->应用->SHA证书指纹中
    3. 重新下载更新后的google-services.json文件,替换到Xamarin Android项目的Resources目录下,确保构建时正确嵌入
  • 检查Google Cloud OAuth客户端ID配置:
    在Google Cloud控制台的API和服务->凭据页面,确认存在基于Google Play应用签名密钥SHA生成的Android客户端ID,且该ID已关联到Firebase项目。若不存在,需手动创建对应客户端ID。

  • 测试本地签名的Release版本:
    使用自己的上传密钥签名生成Release版本的AAB/APK,安装到设备测试。若登录正常,说明问题集中在Google Play签名的配置环节;若仍异常,需排查本地Release构建的依赖打包或混淆问题。

  • 强制包含Firebase Auth依赖:
    在Xamarin Android项目的build.gradle文件中,确保Firebase Auth相关依赖被强制打包,避免AAB按需特性遗漏必要组件:

    implementation 'com.google.firebase:firebase-auth:21.0.8'
    implementation 'com.google.android.gms:play-services-auth:20.4.1'
    

内容的提问来源于stack exchange,提问作者Julian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:21:31