【问题标题】:Google Maps are not showing up in a signed apk谷歌地图未显示在已签名的 apk 中
【发布时间】:2015-12-09 06:29:27
【问题描述】:

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

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

【问题讨论】:

  • 所以你得到了谷歌地图的 api 密钥??你把它放在哪里了??如果您遇到困难,则创建一个新的地图活动,然后它会显示您需要输入密钥的 xml 文件,然后删除该活动。
  • @Tacos 我把它放在 google_maps_api.xml 中自动生成的字符串值中,然后放在清单文件中
  • 好的,很酷。您在日志猫中看到任何关于地图 api 密钥的错误吗?如果没有错误,当您在地图上移动手指时,地图会神奇地出现。我以前也遇到过这种情况,因为我的片段布局搞砸了。
  • 这是由于您在 google 上添加了 debug SHA1 密钥,所以请为 release 模式创建 SHA1,了解更多信息 请看看这个视频如何为发布创建 SHA1 youtu.be/g75cZXjmuj8

标签: android google-maps release


【解决方案1】:

听起来您只在调试 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 的密钥。

【讨论】:

  • 非常感谢!这就是问题所在!我使用了 Android 视图,并没有怀疑它有两个不同的文件夹。我想知道为什么没有在任何地方提到它。无论如何,谢谢!
  • @Daniel Nugent 我已经在两个值文件夹中添加了 api 键(调试和发布)仍然没有显示地图片段。
  • @payaltuteja 您的日志是否显示与地图相关的任何错误?
  • @payal 您需要在运行发布版本时查看日志。
  • @Saleem Khan C H 授权失败。我已经检查了日志。在发布 apk 日志中,sha1 与控制台上调试模式时给出的不同,我在谷歌开发者控制台上添加了日志 sha1,问题得到解决
【解决方案2】:

如果您选择 Google Play 应用签名,那么您的应用发布时的SHA-1 将是不同的。

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

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

(您不必关注发布日志并跟踪生成的新SHA-1


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

Origin answer

【讨论】:

  • 我把应用签名证书 SHA1 如上图所示,但地图仍然不可见。
  • 这是一个多小时后我一直在寻找的答案。谢谢!!
  • 非常感谢。意思是我们必须在 google clound 控制台中设置两个 SHA1。
  • 欢迎@Vrajesh
  • 这把钥匙放在哪里?
【解决方案3】:

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

  1. 使用新的密钥库文件创建签名的 apk,确保您将在发布模式下创建它
  2. 创建签名的 apk 后,您应该记下保存密钥库文件的密钥库路径。
  3. 您还需要在发布模式和调试模式下使用您的 google map API 密钥,您可以使用相同的 API 密钥,但请确保您应该在 google 控制台上为您的单个 api 密钥添加两个不同的 sha 密钥。
  4. 你应该从c盘使用java的bin文件夹的路径,因为keystore工具在bin文件夹里面所以 假设您的文件类似于 C:\Program Files\Java\jdk1.8.0_11\bin 所以你应该按照这个路径到你的 android studio 终端 将路径更改为 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. 转到谷歌控制台/凭据
  7. 现在转到您的 api,您将看到编辑选项转到编辑并将您的 sha 密钥输入并保存。
  8. 运行您的代码。

【讨论】:

    【解决方案4】:

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

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

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

    "C:\你的密钥库路径\keystores\android.jks"

    1)在程序文件中打开你的java,比如jre1.8.0

    2) 打开 bin 文件夹并像上面一样运行命令,后跟生成签名 apk 时生成的密钥存储路径 在 cmd 上运行此命令后,您需要提供已签名应用的密码,您的 SHA1 将被生成。

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

    【讨论】:

      【解决方案5】:

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

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

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

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

      然后检查SHA,应该和google api console中使用的一样。

      【讨论】:

        【解决方案6】:

        我通过查看左侧菜单配置中的https://play.google.com/console 解决了这个问题,然后查看应用程序的完整性并复制位于应用程序签名密钥的 SHA1 证书下方的上传密钥证书的 SHA1 并将其添加到相同的 api 密钥中的https://console.cloud.google.com/。这样我就不必对 apk 进行更改了。

        如果这两个都不起作用,请添加并尝试。

        【讨论】:

          【解决方案7】:

          这发生在我身上,因为我们需要两个 google maps api 密钥,一个用于调试,另一个用于发布,您可以签入:

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

          你会发现一个带有你的 api 密钥的 xml,比如:

          艾莎...等

          但如果你在这里检查:

          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>
          

          【讨论】:

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