通过为API密钥生成SHA1指纹,让Android Google Map v2在发布版本中运行

Eri*_*arr 6 android google-api keytool google-maps-android-api-2

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

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

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

3)运行keytool时,为什么我得到"密钥库文件存在但是为空"错误?

Eri*_*arr 15

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

  • 登录Google Developers Console https://console.developers.google.com
  • 选择合适的项目
  • 在左侧,选择"API&auth"下的凭据
  • 假设您已经为Android应用程序生成了API密钥,您应该已经将应用程序列为具有调试指纹的"允许的应用程序".点击"编辑允许的Android应用程序".
  • 您需要为应用程序添加另一行,但需要添加其发布指纹.为了那个......

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

keytool -list -v -keystore mystore.keystore
Run Code Online (Sandbox Code Playgroud)

但是点击"了解更多"并再往前走一点,你真正想要的就是

keytool -exportcert -alias MY_RELEASE_KEY_ALIAS -keystore MY_FULL_PATH_TO_RELEASE_KEYSTORE_FILE -list -v
Run Code Online (Sandbox Code Playgroud)

然后,系统会要求您输入密钥库密码.文档中未提及的一件是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应用程序中的新行,最后用分号分隔您的包名称,就像调试一样.