【问题标题】:Getting Android Google Map v2 working in release version by generating SHA1 fingerprint for API key通过为 API 密钥生成 SHA1 指纹使 Android Google Map v2 在发布版本中工作
【发布时间】:2014-12-08 04:18:31
【问题描述】:

今晚我花了很长时间试图弄清楚如何让在我的 Android 应用程序的调试版本中运行的 Google 地图在发布版本中运行。出现了一些不同的问题。 Stack Overflow 帖子的一些片段有所帮助,但我认为列出整个过程的更多细节会很有用,包括我遇到的问题,它们是:

1) 您如何/在哪里为您的发布版本指定不同的内容?

2) 如何运行 keytool 可执行文件以获取发布版本指纹?

3) 为什么我在运行 keytool 时收到“keystore file exists but is empty”错误?

【问题讨论】:

  • 你想要 2H:45:ZH: .......:OH 那种类型的 SHA-1

标签: android google-api google-maps-android-api-2 keytool


【解决方案1】:

1) 正如其他几篇 Stack Overflow 帖子中所述,您可以为调试和发布版本使用相同的 Google API 密钥,但您必须在 Google Developers Console 中提供调试和发布密钥的指纹。

  • 登录谷歌开发者控制台https://console.developers.google.com
  • 选择合适的项目
  • 在左侧,选择“APIs & auth”下的凭据
  • 假设您已经为 Android 应用程序生成了 API 密钥,您应该已经看到您的应用程序被列为“允许的应用程序”及其调试指纹。点击“编辑允许的 Android 应用程序”。
  • 您需要为您的应用程序添加另一行,但要使用其发布指纹。要做到这一点...

2) Google 在该对话框中提到您需要运行

keytool -list -v -keystore mystore.keystore

但是通过点击“了解更多”并走得更远,你真正想要运行的是

keytool -exportcert -alias MY_RELEASE_KEY_ALIAS -keystore MY_FULL_PATH_TO_RELEASE_KEYSTORE_FILE -list -v

然后您将被要求输入您的密钥库密码。文档中未提及的一件是 keytool 程序所在的位置。它在您的 JDK bin 文件夹中。所以在 Windows 上,类似 C:\Program Files\Java\jdk1.8.0_20\bin

3) 在我打开 Java bin 文件夹中的控制台窗口并如上所述运行 keytool 后,我收到一条错误消息,提示“密钥库文件存在但为空”。最终我意识到,在指定发布密钥库文件的完整路径时,我只指定了文件夹名称,但忘记包含实际文件名,即使文件夹中只有一个文件。所以上面的 MY_FULL_PATH_TO_RELEASE_KEYSTORE_FILE 应该包含 .keystore 文件名

毕竟,您最终会获得多个指纹,包括 SHA1。您可以复制它,然后返回并将其作为新行粘贴到允许的 Android 应用程序中,最后用分号分隔您的包名称,就像调试的一样。

【讨论】:

  • 在第一步中,“允许的应用程序”是什么意思?我什么也没看到
【解决方案2】:

按照here 给出的说明进行操作。在 Google Developers Console 中创建您的项目后,选择 APIs,您将被提示一个热门 API 部分,选择 Google Maps Android API。按启用 API。(下图显示了新版控制台中的步骤

如果您仍在使用旧控制台,请通过选择服务启用 API,然后打开按钮:

注意: 您无需启用调试版本的 API!

如果您的地图仍未显示,请尝试重新生成密钥!

新版本

旧版本

输入新的 API 密钥,然后将项目与 Gradle 文件同步

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多