Google 地图未显示在已签名的 apk 中

Google Maps are not showing up in a signed apk

我知道这是一个常见问题,通常解决方案是生成一个单独的密钥用于发布。我已经这样做了好几次,我在开发人员控制台中的 API 密钥包含两种不同的 SHA1 指纹:一种用于从 AndroidStudio 进行调试,另一种用于从我自己的密钥库中发布。我已经使用相同的密钥库对应用程序进行了签名,并在控制台中启用了 Google Maps Android API v2。但是地图 activity 仍然只显示左下角带有 'Google' 的白屏。

有什么解决问题的建议吗?

听起来您在调试 google_maps_api.xml 中只输入了 API 键。此外,听起来您在调试和发布时使用相同的 API 键,但您仍然需要在发布文件夹和调试文件夹下的 google_maps_api.xml 中输入它。

有点混乱,因为当项目在 Android 视图中时,您只能看到调试文件(尽管在那个视图中它旁边的括号中应该有 (debug))。

要修改发布版本,请使用项目资源管理器左上角的下拉菜单切换到项目视图。然后,展开 app/src/,您将看到子文件夹 debugrelease。在那里,您应该在 debug/res/valuesrelease/res/values 下看到两个单独的 google_maps_api.xml 文件。

确保 API 密钥填充在 release/res/values 文件夹下的 google_maps_api.xml 文件中,因为这是将用于签名版本 apk 的密钥。

如果您选择 Google Play App Signing 那么您的应用 SHA-1 将在发布时有所不同。

因为Google删除了您上传的证书,然后用新的证书对应用程序进行签名,

所以你必须知道新的 SHA-1 密钥。

(发布时不必关注日志,跟踪新生成的SHA-1)


您可以比较 2 个 SHA-1 键。

您使用的是 sha1 版本。在对 apk 进行签名后,您需要使用命令提示符再次生成 SHA1。

重新生成 SHA1 的步骤是转到 cmd 并给出如下命令:

C:\Program Files\Java\jre1.8.0_91\bin>keytool -list -v -keystore 

"C:\Your key store path\keystores\android.jks"

1) 转到程序文件中的 java 打开 java 版本,如 jre1.8.0

2) 打开 bin 文件夹和 运行 类似上面的命令,然后是您在生成签名的 apk 时生成的密钥存储路径 运行在 cmd 上执行此命令后,您需要提供已签名应用程序的密码,您的 SHA1 将被生成。

3) 复制 sha1 并粘贴到 console.developer 中,并在 api 密钥中使用您的包名称。

我做了很多事情来解决这些问题,但任何解决方案都无法解决我的问题 为了解决这些问题,我做了这些事情

  1. 使用新的密钥库文件创建签名的 apk 确保您将在发布模式下创建它
  2. 创建签名的 apk 后,您应该记下保存密钥库文件的密钥库路径。
  3. 您还需要在发布模式和调试模式下使用 google 映射 API 键,您可以在两者上使用相同的 API 键,但请确保您应该在 google 控制台上为您的单个 api 密钥添加两个不同的 sha 密钥。
  4. 你应该去使用c盘java的bin文件夹的路径,因为keystore工具在bin文件夹里面所以 假设您的文件类似于 C:\Program Files\Java\jdk1.8.0_11\bin 所以你应该按照这条路径到你的 android 工作室终端 将路径更改为 C:\Program Files\Java\jdk1.8.0_11\bin 然后键入此命令:

    keytool -list -v -keystore "/Users/NT/Desktop/generalkey.jks"(adress of your keystore file)
    
  5. 现在,通过执行这些操作,您将获得复制该密钥的 sha 密钥

  6. 转到googleconsole/credentials
  7. 现在转到您的api,您将看到编辑选项转到编辑并将您的 sha 密钥输入其中并保存。
  8. 运行 你的代码。

现在回答为时已晚,但如果其他人分阶段处理相同的问题,可能会对他们有所帮助。

如果在版本中添加密钥不起作用,请检查您的 jks 文件中的 SHA 密钥,并在 google 播放中添加相同的密钥 google api console

要释放 SHA,请打开您的终端并输入

Asad-MacBook-Air:~ asad$ keytool -list -v -keystore /your/path/keystore.jks

然后检查SHA,它应该和google api控制台中使用的一样。

我通过查看 https://play.google.com/console in the left menu configuration then integrity of the app and copy the SHA1 of the upload key certificate that is below the SHA1 Certificate of the app signing key and add it in the same api key of https://console.cloud.google.com/ 解决了它。这样我就不必对 apk 进行更改。

如果这对您不起作用,请同时添加并尝试。

这件事发生在我身上,因为我们需要两个 google 映射 api 键,一个用于调试,另一个用于发布,您可以签入:

C:\Users\username\AndroidStudioProjects\yourapp\app\src\ debug \res\values

你会找到一个 xml 和你的 api 键,例如:

AIza...等等

但是如果你在这里查看:

C:\Users\username\AndroidStudioProjects\yourapp\app\src\ release \res\values

你会发现一个 xml 但里面没有 api 键,例如:

<string name="google_maps_key" templateMergeStrategy="preserve" 
     translatable="false">YOUR_KEY_HERE</string>