【问题标题】:Regenerate a new keyhash and key cert after release? [duplicate]发布后重新生成新的密钥哈希和密钥证书? [复制]
【发布时间】:2014-07-11 10:21:48
【问题描述】:

我计划在 PlayStore 上上传我的第一个应用程序,它使用 Google Maps V2 和 Facebook SDK。到目前为止,我已经使用了AndroidHive 上的教程,并且大多是盲目地遵循这些步骤。

Google Maps 和 Faceboook 都要求我生成 keyhash 和 keycert。我将密钥证书生成为:

keytool -exportcert -alias androiddebugkey -keystore "%USERPROFILE%\.android\debug.keystore" | openssl sha1 -binary | openssl base64 > Desktop/SSL.txt  

现在,为了发布一个应用程序,我将使用 Eclipse 的 EXPORT 向导创建一个新的密钥库。

创建新的密钥库后,我是否必须通过指向新生成的密钥库来为 Google 地图和 Facebook 生成新的密钥?

Facebook SDK 教程:http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/
谷歌地图V2教程:http://www.androidhive.info/2013/08/android-working-with-google-maps-v2/

【问题讨论】:

  • Facebook keyhash 不会改变,您需要更改标记的答案,以便其他人获得帮助。
  • @David 怎么样?当我从 debug.keystore 更改为 release.keystore 时,哈希值会改变,是吗? :)
  • 更新的答案,试试那里写的代码,它会被证明。 Facebook keyhash 不会改变,因为你的包是一样的。
  • 使用相同的签名密钥库和不同的机器尝试此代码,您会注意到不同之处。 Facevbook 的 keyhash 将会改变。
  • @David 我说过的话,如果你用 debug.keystore 处理的话,如果改变的话。如果您使用从 eclipse 导出向导或 keytool 创建的 release.keystore 在不同的机器上进行测试,那么我相信它在所有 PC 上都将保持不变。 HashKey 依赖于与 keystore 文件关联的 SHA1,因此 release keystore 始终具有相同的签名,因此 hashkey 在 release.keystore 中也保持相同

标签: android facebook


【解决方案1】:

创建新的密钥库后,我是否必须通过指向新生成的密钥库来为 Google Maps 和 Facebook 生成新的密钥?

案例一

如果您使用 debug.keystore 并从 debug.keystore 签署构建,那么如果您从另一个系统签署相同的应用程序,您将看到 hashkey 会发生变化,因为 debug.keystore 对于两台机器都是不同的。但是在使用 debug.keystore 对构建进行签名后,您无法将应用上传到Google Play Store,因此您需要一个自己的密钥库。

案例 2

所以当您在这里创建一个新的密钥库时,您需要为此创建一个新的哈希键。如果您将此密钥库复制并粘贴到另一个系统,然后生成一个 facebook hashkey,那么它将保持不变,因为两个系统的密钥库与您创建的相同。

在第二种情况下,您从代码或 keytool 生成哈希键都没有关系,因为您使用的是相同的自己的密钥库。

希望您现在了解这次重大修改的所有内容。

【讨论】:

  • facebook hash 不会改变
  • @IllegalArgument 你知道你不能使用 debug.keystore 在 Google Play 上发布应用程序。你读过问题"%USERPROFILE%\.android\debug.keystore"
  • 所以@Little Child 你必须创建一个不同的密钥库才能在 Google Play 上发布应用程序,然后当然你必须创建不同的 keyhash 和不同的 Google Map 密钥。
  • 简单回答:不,很高兴为您提供帮助:)
  • @Williams 我相信你是对的。但是,OP 有更大的问题,因为他并没有真正使用调试密钥库。
【解决方案2】:

facebook 的密钥库将与您的调试版本相同。至于 Google Maps,您需要提供 release-keystore。成功签名后,导出小部件的最后一页将为您提供新的 Sha1-hash 和 md5。

【讨论】:

  • 好吧,想通了一点。现在,在发布之后,我也会编写代码并添加新功能。每次我决定上传较新版本时,我都必须从开发者控制台更改 Google Maps 密钥,因为 SHA1 已更改? :)
  • @LittleChild 如果您的开发机器没有改变,那么 sha1 也不会改变。所以你不必担心sha1。我在 Playstore 中有一个类似的应用程序,我没有从 1.1 版更改为 1.4 版play.google.com/store/apps/details?id=com.proshore.rwd
  • @IllegalArgument 这是正确的,Facebook keyhash 不会改变,只是尝试使用签名和未签名的 apk。
  • @David 我知道它不会改变。 Facebook 哈希只是基于我们的包名称,这就是它不会改变的原因。 facebook 提供了一个 sn-p 代码来记录密钥哈希。当我们使用我们的包名通过意图启动它时,本机 facebook 应用程序也会找到 keyhash
猜你喜欢
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
相关资源
最近更新 更多