Android Credential Manager的 Google Sign-In因开发者错误而失败,错误信息为“Unknown calling package name 'com.google.android.gms'”

移动开发 2026-07-09

我已经使用Credential Manager几个月了,但最近在三月,我应用中的登录功能停止工作。应用冻结,无法完成登录过程。

环境:

  • Android 16
  • Samsung Galaxy S25 Edge
  • Kotlin
  • Jetpack Compose
  • Firebase Authentication
  • Credential Manager API
  • Google Play Services 26.18.33

包名:

com.nordisapps.nordisradiojournal

我开始进行登录时使用:

val googleIdOption = GetGoogleIdOption.Builder()
    .setFilterByAuthorizedAccounts(false)
    .setServerClientId(BuildConfig.GOOGLE_CLIENT_ID)
    .setNonce(generateSecureRandomNonce())
    .build()

请求正确开始,但随后Google Play Services抛出:

java.lang.SecurityException: Unknown calling package name 'com.google.android.gms'

并且:

ConnectionResult{statusCode=DEVELOPER_ERROR, resolution=null, message=null}

随后Credential Manager返回:

androidx.credentials.exceptions.NoCredentialException: No credentials available

相关日志(logcat):

GoogleApiManager  Failed to get service from broker.
java.lang.SecurityException: Unknown calling package name 'com.google.android.gms'

我已经检查的事项:

  • SHA-1已添加到Firebase
  • SHA-256已添加到Firebase
  • 已下载最新版google-services.json
  • Firebase中已启用Google Sign-In提供商
  • 使用WEB客户端ID(而非Android客户端ID)
  • 已添加:

<queries> <package android:name="com.google.android.gms" /> </queries> * implementation("com.google.android.gms:play-services-base") * 尝试删除Firebase Authentication用户 * 尝试 .setFilterByAuthorizedAccounts(false)

问题仍然存在。

这是一个已知的Android 16 / Credential Manager / Google Play Services问题,还是我遗漏了某些必需的配置?

更新:我在Android 11和 13上测试应用。底部弹出层显示,登录成功。就我而言,这个Bug仅在Android 16上发生。

附加信息:

  • Android 11:Google Sign-In正常工作。
  • Android 13:Google Sign-In正常工作。
  • Android 16:点击登录按钮后应用会立即冻结。
  • Android 16上从不显示Google账号选择器 / 底部弹出层。
  • 调试版和发布版都受影响。
  • 应用的较旧版本在Android 16上也失败。
  • 在同一台Android 16设备上,其他使用Google Sign-In的应用工作正常。

更新:已向Google Issue Tracker报告: https://issuetracker.google.com/issues/521434895 如果你也受影响,请为该问题打星以帮助优先修复。

解决方案

这似乎是Android 16 + Google Play Services的问题,而不是配置问题。

我也能复现相同的行为:

  • Android 11 / 13上工作正常
  • Android 16上失败,原因: DEVELOPER_ERROR与 "Unknown calling package name 'com.google.android.gms'"

  • 未显示账户选择器(Credential Manager静默失败)

我核对的内容(同OP):

  • 配置了SHA-1 / SHA-256
  • 使用Web Client ID
  • 最新的google-services.json
  • 启用了Google Sign-In提供商

解决方法(可用修复):

使用较旧的Google Sign-In API取代Credential Manager即可解决问题:

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
    .requestEmail()
    .requestIdToken(WEB_CLIENT_ID)
    .build()

val client = GoogleSignIn.getClient(context, gso)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章