无法使用 App Signing 为开发者版本授权 Google Play 游戏服务

Can't auth Google Play Games Services with developer build using App Signing

我最近改用 Google 通过开发者控制台使用应用签名和应用程序包。因为我让 Google 管理密钥,这意味着我实际上有 2 个 SHA1:

  1. GSHA1 - 应用签名证书 SHA1 Google 用于签署 APK 以进行分发
  2. USHA1 - 上传证书 SHA1 用于签署我在 Unity 中制作的包,该包被上传到 Google

这是有道理的,只要手机从 Google 获得安装就可以了。但是,我还有一个内部流程,可以独立于 Google 构建软件包以提供给我的团队。在开发过程中,这是我们在设备上获取应用程序的主要方式,我们不想更改该过程。

问题是,如果我使用 USHA1 对这些内部构建进行签名,它们将无法通过 Google Play 游戏服务进行身份验证,因为控制台希望应用程序使用 GSHA1 进行签名。如果我更改控制台客户端凭据中的配置以期望使用 USHA1,我已经确认他们可以突然进行身份验证,但这意味着任何人从 Google 获取应用程序都将无法进行身份验证。

**** APP NOT CORRECTLY CONFIGURED TO USE GOOGLE PLAY GAME SERVICES
**** This is usually caused by one of these reasons:
**** (1) Your package name and certificate fingerprint do not match
****     the client ID you registered in Developer Console.
**** (2) Your App ID was incorrectly entered.
**** (3) Your game settings have not been published and you are 
****     trying to log in with an account that is not listed as
****     a test account.

我也尝试过使用 Unsigned (debug) 别名构建,但这只会生成第三个同样错误的 SHA1,它也失败了。由于它们的安全性,我无法从 Google 获取私钥。那么我应该如何在不上传到 Google 的情况下签署我的应用程序并使用 GPG 身份验证进行测试?即使我没有自己的内部构建分发系统,我也不想在本地测试所有功能之前将新包上传到 Google。我一定遗漏了一些明显的东西,有人可以帮我吗?

确保您的每个 Android 客户端 ID(每个 SHA1 一个)都在游戏服务中的 Play 控制台(不仅是云控制台)中注册为 linked 应用部分。

Play 控制台中的每个 linked 应用对应一对 (PackageName + Signature),因此如果 link 有两个签名,则应该有两个 linked应用程序。