7

我收到此错误:

E/Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.
E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com)
Ensure that the "Google Maps Android API v2" is enabled.
Ensure that the following Android Key exists:
    API Key: [The key...]
    Android Application (<cert_fingerprint>;<package_name>):

我看到的不是地图正常工作,而是:

在此处输入图像描述

在我的app/build.gradle,我有这个:

implementation 'com.google.android.gms:play-services-base:16.1.0'
implementation 'com.google.android.gms:play-services-analytics:16.0.8'
implementation 'com.google.android.gms:play-services-awareness:16.0.0'
implementation 'com.google.android.gms:play-services-cast:16.2.0'
implementation 'com.google.android.gms:play-services-gcm:16.1.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'

play-services-location是我需要的谷歌地图,对吗?我正在查看https://developers.google.com/android/guides/setup上的列表,我认为这Google Location and Activity Recognition - com.google.android.gms:play-services-location:16.0.0是我需要的谷歌地图。这个对吗?

更新 1:我已经启用了 Maps SDK for Android:

在此处输入图像描述

错误说:Ensure that the "Google Maps Android API v2" is enabled.。它是指Maps SDK for Android我在此UPDATE 1的屏幕截图中显示的内容吗?

更新 2:我已Maps SDK for Android启用:

在此处输入图像描述

当我单击该MANAGE按钮时,我可以转到配置我在UPDATE 1中显示的凭据的部分。

更新 3:我看到地图在模拟器的所有版本的 Android 上都正确显示。但是在物理设备上,地图永远不会出现。我看到了 Google 徽标和红色气球,但现在当我在实体手机上运行应用程序时看到的是地图。只有在模拟器上一切正常。任何想法为什么?

更新 4:在https://stackoverflow.com/a/56307654/4242086查看我的解决方案。

4

7 回答 7

3

嘿,我今天遇到了同样的问题!,我很容易解决它,首先你必须去 https://console.developers.google.com并启用 android SDK 映射,然后创建 api 密钥,在 xamarin 中返回去你的清单并添加 google maps api 密钥

https://docs.microsoft.com/it-it/xamarin/android/platform/maps-and-location/maps/obtaining-a-google-maps-api-key?tabs=windows

这是文档(我打得这么快,因为我现在在手机上抱歉)

于 2019-05-23T21:17:22.737 回答
2

follow to below link for generate google api key:- https://developers.google.com/maps/documentation/android-sdk/map-with-marker

Android Code Reference Link:-

https://www.zoftino.com/android-mapview-tutorial

于 2019-05-24T04:05:58.767 回答
2

我遵循了本教程并且能够修复它:https ://www.youtube.com/watch?v=sJBlQv6IptQ 。该视频引用了本教程:http ://ramsandroid4all.blogspot.com/2016/01/google-maps-android-example-in-android.html 。

就我而言,我所做的是在https://console.developers.google.com/创建一个新项目。我Android apps用于Application restrictions

在此处输入图像描述

对于该Restrict usage to your Android apps部分,我必须提供 aPackage name和 a SHA-1 certificate fingerprint。在Package namemy 中app/build.gradle,特别是在这里:

applicationId "[my package name]"

SHA-1 certificate fingerprint我通过运行从 Android Studio 中找到了它signingReport

在此处输入图像描述

结果包括如下内容:

Alias: AndroidDebugKey
MD5: [The value]
SHA1: [The value]
SHA-256: [The value]
Valid until: Wednesday, May 5, 2049
----------

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
16:31:44: Task execution finished 'signingReport'.

现在地图在我的 Android 应用程序中正常工作:

在此处输入图像描述

更新 1:令我惊讶的是,地图只能在 Android Studio Emulator 上正常工作,但不能在真正的 Android 物理设备上正常工作。解决方案是我在https://stackoverflow.com/a/56307654/4242086上发布的。

于 2019-05-23T22:37:12.713 回答
2

当我将项目移动到新计算机时,我得到了完全相同的症状。我的解决方案是根据错误消息生成一个新密钥。google_maps_api.xml 文件在评论中有一个 URL 来生成密钥,但这是一个静态的东西,所以在将项目移动到新计算机后,我重写了 URL 以匹配错误消息的版本。

https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=[put-the-thing-here]

生成密钥,将其放入 XML 文件中,它运行良好。

于 2019-10-16T07:31:15.503 回答
1

时间改变了配置步骤。这里是新的。

  1. 设置您的项目https://console.cloud.google.com/projectselector2/home/dashboard

  2. 启用谷歌地图 API。转到 https://console.cloud.google.com/apis/library?filter=category:maps&_ga=2.192684329.2027491681.1618180744-3962552.1609436892选择您要启用的 API

  3. 转到您项目的API 凭据https://console.cloud.google.com/project/_/apiui/credential

  4. 在凭据页面上,单击创建凭据 > API 密钥。API 密钥创建对话框显示您新创建的 API 密钥

  5. 单击关闭。

  6. 在 Android Studio 中,打开您的应用级 build.gradle 文件并将以下代码添加到 plugins 元素。id 'com.google.secrets_gradle_plugin' version '0.5'

  7. 保存文件并将您的项目与 Gradle 同步

  8. 打开values\google_maps_api.xml并替换YOUR_API_KEY为第 4 点中的 API。

  9. 签入您的 AndroidManifest.xml,将MAPS_API_KEY其替换为您的实际密钥

    android:name="com.google.android.geo.API_KEY"
    android:value="${MAPS_API_KEY}" />
  1. 插入你的 AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
  1. 转到 API 和服务 > 凭据页面https://console.cloud.google.com/project/_/apiui/credential
  2. 选择要设置限制的 API 密钥。出现 API 密钥属性页面
  3. 在密钥限制下 --> 选择 Android 应用程序。单击 + 添加包名称和指纹。输入您的包名称和 SHA-1 证书指纹单击限制键。从选择 API 下拉列表中选择适用于 Android 的 Maps SDK
  4. 要完成更改,请单击保存。
于 2021-04-12T07:00:01.100 回答
0

就我而言,我做的一切都是正确的。但仍然收到错误结果证明更改清单文件中的属性“android:name”解决了这个问题。

改变

android:name="com.google.android.maps.API_KEY"

android:name="com.google.android.maps.v2.API_KEY"

于 2021-04-22T14:31:12.903 回答
0

对于那些还没有弄清楚的人,请再次查看错误消息下方的日志记录。请密切注意日志中打印的certifcate_fingerprintpackage_name 。仔细将这些与您的 Google 开发控制台中指定的进行比较。

在几乎一整年的闲置之后,我再次拿起了一个旧的爱好项目。我可能在某处更改了某些内容,从而触发了证书指纹的更改,反之亦然。

希望这可以帮助!

于 2019-12-23T10:07:57.027 回答