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

通过为API密钥生成SHA1指纹,让Android Google Map v2在发布版本中工作,android,google-api,google-maps-android-api-2,keytool,Android,Google Api,Google Maps Android Api 2,Keytool,今晚我花了很长时间试图弄明白如何让我的谷歌地图在Android应用程序的调试版本中工作,并在发布版本中工作。出现了一些不同的问题。堆栈溢出帖子的一些片段很有帮助,但我认为列出整个过程的更多细节会很有用,包括我遇到的问题,这些问题是: 1) 您如何/在何处为发布版本指定不同的内容 2) 如何运行获取发布版本指纹所需的keytool可执行文件 3) 为什么在运行keytool时会出现“keystore file exists but is empty”(密钥库文件存在但为空)错误?1)正如在其他几个

今晚我花了很长时间试图弄明白如何让我的谷歌地图在Android应用程序的调试版本中工作,并在发布版本中工作。出现了一些不同的问题。堆栈溢出帖子的一些片段很有帮助,但我认为列出整个过程的更多细节会很有用,包括我遇到的问题,这些问题是:

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

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

3) 为什么在运行keytool时会出现“keystore file exists but is empty”(密钥库文件存在但为空)错误?

1)正如在其他几个堆栈溢出帖子中指定的那样,您可以对调试和发布版本使用相同的Google API密钥,但您必须在Google Developers控制台中提供调试和发布密钥的指纹

  • 登录谷歌开发者控制台
  • 选择合适的项目
  • 在左侧,选择“API和身份验证”下的凭据
  • 假设您已经为Android应用程序生成了一个API密钥,您应该已经看到您的应用程序被列为“允许的应用程序”,并带有调试指纹。单击“编辑允许的Android应用程序”
  • 您将希望为应用程序添加另一行,但带有其发布指纹。为了得到那个
2) 谷歌在该对话框中提到,您需要运行

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\U 20\bin

3) 在我打开javabin文件夹中的控制台窗口并如上所述运行keytool之后,我收到一个错误,上面说“keystorefile存在,但为空”。最终我意识到,在指定发布密钥库文件的完整路径时,我只指定了文件夹名,但忘记了包括实际的文件名,即使文件夹中只有一个文件。因此,上面我的密钥库文件的路径应该包括.KEYSTORE文件名


在所有这些之后,您将最终获得几个指纹,包括SHA1。您可以复制它,然后返回并将其作为新行粘贴到允许的Android应用程序中,并在末尾用分号分隔包名,就像调试程序一样。

按照给出的说明操作。在GoogleDevelopers控制台中创建项目后,选择API,系统将提示您使用一部分流行的API,选择GoogleMaps Android API。按下启用API。(下图显示了新版本控制台中的步骤。

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

注意: 您不需要为调试版本启用API

如果地图仍不显示,请尝试重新生成密钥

新版本

旧版本


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

你想要2H:45:ZH:……哦,第一步中的SHA-1类型,关于“允许的应用程序”这一切是什么?我看不到这种情况