【问题标题】:Why Google Maps is showing empty screen in my Android App?为什么 Google 地图在我的 Android 应用程序中显示空白屏幕?
【发布时间】:2017-08-08 17:06:04
【问题描述】:

我的 Android 应用中有 Google 地图。我通过选择新的 Google Maps Activity 并在 Android Studio 中粘贴密钥来添加它。它在我的 Android 手机(Lenovo K5 Note)上运行良好,但是当我将项目复制到另一台计算机并在另一台设备(Coolpad)上运行时,它会显示一个空白屏幕(米色或白色),左下方带有 Google 徽标。

【问题讨论】:

  • 使用该机器的 SHA 生成 API 密钥
  • 或者将debug.keystore文件从第一台机器复制到第二台机器,这样两者就可以使用相同的API_KEY
  • 您需要将另一台机器的 SHA 密钥添加到您的项目中,该项目在 google 开发者控制台上可用
  • 添加 Google Maps Activity 后打开此链接时自动生成密钥。 console.developers.google.com/flows/…

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


【解决方案1】:

过去两天与空白地图作斗争,这里是从各种来源收集的摘要(我敢肯定这不是可能问题的完整列表!)。


1。 API 密钥丢失、不正确或被禁用

似乎是最常见的。我建议关注official documentation。如果您完成所有步骤,问题仍然存在并且您仍然不确定是否是原因,请克隆 official android samples,找到 MapWithMarker 示例 (android-samples/tutorials/MapWithMarker) 并对其进行测试。如果您运行示例并且它正确显示了地图,请尝试将默认 API KEY 交换为您拥有的那个。

  • 如果有效,则密钥不是问题。
  • 如果不起作用,关键是你的问题。

在这种情况下,请确保您在 Google API Console 中启用了它。


2。缺少 Android GMS 版本元数据标记

您的 AndroidManifest.xml 需要定义以下元数据属性:

<meta-data android:name="com.google.android.gms.version"
      android:value="@integer/google_play_services_version" />

更多详情请参阅the answer hereofficial documentation


3。缺少用户权限

在旧版本的 Android SDK 中,您必须明确设置某些用户权限才能正确使用 Google Maps API,例如:

<uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

现在不再是这种情况了,但我建议您访问 official documentation 以确保您满足这些版本要求。


4。 OpenGL ES 版本 2 的要求

过去,似乎需要在 AndroidManifest.xml 中指定以下元数据属性

<uses-feature   
   android:glEsVersion="0x00020000"  
   android:required="true"/>

official documentation 不再需要此功能。一些额外的细节是可用的,例如here.


5. AVD Manager 设备配置

Android Studio 3.0 AVD Manager 允许您为似乎运行不佳的 API 创建设备配置。目前,您可以针对似乎尚未发布的 API v27 创建配置,如果我没记错的话。即使在我开始使用 Google Maps API 之前,基本的模拟也能很好地工作。设置为 v27 的设备配置均无法与 Maps API 一起使用,从而导致空白地图。

  • 尝试降级到较低的 SDK 版本。

注意:如果有更深入的知识的人纠正我的简化且可能不正确的解释,我会很高兴。由于这是我的问题,我停止了更深入的评估,现在只是切换到不同的配置。

使用以下设置:

Android Studio 3.0
Build #AI-171.4408382, built on October 20, 2017
JRE: 1.8.0_152-release-915-b01 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

希望这将帮助至少一个人节省一些时间..

【讨论】:

  • 哇.. v27 似乎仍然是 AVD 管理器中的一个问题。谢谢提示
【解决方案2】:

我遇到了同样的问题,请与以下内容进行交叉检查。 google map API key 有两个文件分别用于调试和发布。 请检查生产版本,您必须在发布文件夹下有条目 google_maps_api.xml 文件。我通过在两个文件中添加我的密钥解决了这个问题。

【讨论】:

    【解决方案3】:

    鉴于您的应用可以在Lenovo 上运行,最可能的原因是您的Coolpad 手机没有Google Play services,当您使用大多数Google 产品时,这是必需的。 (here 您可以通过Coolpad 8675 找到有关此问题的更多详细信息)。不幸的是,作为开发人员,您无法解决此问题。如果用户真的想使用您的应用程序并且没有Play Services,您可以显示一个错误,告诉您问题出在哪里,并且他们应该在使用您的应用程序之前安装它们。从这一点来看,他们应该能够找到足够多的教程来说明如何做这件事。

    【讨论】:

      【解决方案4】:

      debug.keystore 不同于两台计算机。

      解决方案:

      1) 将密钥库从 pc 复制到 Android 文件夹中的新文件夹。

      2) 生成新的 sha 并放入您的 google api 项目。 https://developers.google.com/maps/documentation/android-api/signup#release-cert

      【讨论】:

        【解决方案5】:

        我遇到了类似的问题,花了很多时间才解决它。通常在真实设备上一切正常,但未能在我的一些模拟器变体上显示谷歌地图。很明显,程序代码没问题,那么问题来了,为什么?

        到目前为止我观察到的:

        1. 如果硬件加速被禁用 - 一切恢复正常。

        2. 如果使用纯安卓镜像,cpu-arm(不加速x86,速度较慢),但也可以。

        3. 如果您使用的是 x86_64 操作系统 - 在我的情况下是 macOS 10.13.2,使用 x86_64 版本的模拟器映像,而不是通用 x86!!! 这是我的市长错误不这样做让它工作!用 x86_64 变种替换我的模拟器的图像,解决所有问题!

        【讨论】:

          【解决方案6】:

          我认为您用于在 pc 上开发应用程序的 SHA1 密钥在另一台 pc 上产生了这个问题。在新电脑上生成 SHA1 并替换旧电脑,然后它就可以正常工作了。 当您将其用作调试目的时。出于生产目的,开发人员页面上有文档。

          【讨论】:

            猜你喜欢
            • 2012-07-27
            • 1970-01-01
            • 1970-01-01
            • 2018-07-19
            • 1970-01-01
            • 1970-01-01
            • 2013-05-16
            • 1970-01-01
            • 2021-12-04
            相关资源
            最近更新 更多