【问题标题】:Xamarin Debug Keystore Seems to have ChangedXamarin 调试密钥库似乎已更改
【发布时间】:2015-03-17 05:30:32
【问题描述】:

我正在 Xamarin Studio 中使用 Xamarin.Android 开发一个 Android 应用程序。它使用 Google Play 游戏服务。

到目前为止,该项目已经运行并测试了 find。昨天我将我的开发 PC 从 Windows 7 升级到了 Windows 8.1。在此过程中,我还必须重新安装 Xamarin Studio。

现在,当我的应用程序尝试连接到 Google Play 时,它会失败并出现错误“RESULT_APP_MISCONFIGURED”,据我所知,这意味着我的应用程序没有被正确授权访问 Google Play API。然而,实际上并没有改变。

我测试了旧版本的应用程序,它仍然能够连接到 Google Play API。代码本身没有任何变化,所以我认为这一定与我最近升级 Windows 或最近重新安装 Xamarin Studio 有关。

有什么想法可以帮助缩小问题范围吗?调试密钥库是否可能发生了某种变化?

另一个线索:当我尝试将部署构建到具有较旧的工作版本应用程序的设备时,我收到以下错误:

由于内部错误,部署失败:失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

然后我必须手动卸载旧版本才能部署新版本。

【问题讨论】:

  • 不使用调试密钥库?
  • 据我所知,Xamarin 自动使用调试密钥库进行调试构建。
  • 如果您告诉它使用另一个密钥库,则不会。
  • 但是我每次构建时都需要退出应用程序(输入密码),不是吗?

标签: android xamarin xamarin.android xamarin-studio


【解决方案1】:

正如已经指出的那样,调试密钥库在 Xamarin.Android 的所有安装上都不相同。这是预期的行为。

使用 Play 服务时,您希望创建一个密钥库,最好是一个用于调试,一个用于发布,或者作为同一密钥库中的不同别名(您自己想办法)。

然后,您可以通过向您的 .csproj 文件中添加一些内容来使构建过程自动为您的应用程序签名。您可以在docs 中阅读更多相关信息。

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <AndroidKeyStore>True</AndroidKeyStore>
    <AndroidSigningKeyStore>public.keystore</AndroidSigningKeyStore>
    <AndroidSigningStorePass>MyKeystorePassword</AndroidSigningStorePass>
    <AndroidSigningKeyAlias>MyKey</AndroidSigningKeyAlias>
    <AndroidSigningKeyPass>MyKeyPassword</AndroidSigningKeyPass>
</PropertyGroup>

您可以为Debug 创建一个类似的块,也可以选择另一个别名或另一个密钥库。

【讨论】:

  • 感谢您解释 cheesebaron。今晚我会试一试!
  • 成功了!谢谢@cheesebaron!我无法弄清楚如何在 Google 开发者控制台中更改我的旧 SHA1,所以我只是在开发者控制台的“游戏服务”部分创建了一个新的“链接应用程序”,并将其指向同一个包。
【解决方案2】:

是的,调试密钥库是 Xamarin 安装的一部分,如果重新安装 Xamarin,它会发生变化。您需要在 Google 控制台上更新密钥签名,这次创建一个密钥库并将其隐藏,保持安全(可以这么说)。

【讨论】:

  • 我认为调试密钥库是一个公开的密钥库,使调试更简单(不需要输入密码)。我如何/为什么要保密?我在发布时使用了一个私有密钥库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 2012-08-14
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
  • 2013-05-13
  • 2019-10-21
相关资源
最近更新 更多