为啥 Google 地图在我的 Android 应用程序中显示空白屏幕?
Posted
技术标签:
【中文标题】为啥 Google 地图在我的 Android 应用程序中显示空白屏幕?【英文标题】: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/…
【参考方案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 here 和official 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】:我遇到了类似的问题,花了很多时间才解决它。通常在真实设备上一切正常,但未能在我的一些模拟器变体上显示谷歌地图。很明显,程序代码没问题,那么问题来了,为什么?
到目前为止我观察到的:
如果硬件加速被禁用 - 一切恢复正常。
如果使用纯安卓镜像,cpu-arm(不加速x86,速度较慢),但也可以。
如果您使用的是 x86_64 操作系统 - 在我的情况下是 macOS 10.13.2,使用 x86_64 版本的模拟器映像,而不是通用 x86!!! 这是我的市长错误不这样做让它工作!用 x86_64 变种替换我的模拟器的图像,解决所有问题!
【讨论】:
【参考方案6】:我认为您用于在 pc 上开发应用程序的 SHA1 密钥在另一台 pc 上产生了这个问题。在新电脑上生成 SHA1 并替换旧电脑,然后它就可以正常工作了。 当您将其用作调试目的时。出于生产目的,开发人员页面上有文档。
【讨论】:
以上是关于为啥 Google 地图在我的 Android 应用程序中显示空白屏幕?的主要内容,如果未能解决你的问题,请参考以下文章
Google Developer 控制台“Google Map Android API V2”选项未查看启用
Ionic 3 Google 地图在 Android + IOS 上不显示
为啥我在 Google 地图上的当前位置在 Android 应用中不正确? [复制]