Google Maps V2无法使用正确的密钥在生产环境中工作

时间:2015-01-11 03:08:39

标签: android google-maps

我在谷歌地图在Android应用程序中进行制作时遇到了重大麻烦。这就是我目前得到的(底部只是广告)。

App production screen

我遵循的关键步骤:

1)我已确保获得了正确的SHA1生产密钥,并已在Google控制台API和应用内实施(Google提供的密钥)。我已经注册了两个键 - 一个用于调试,一个用于生产

2)互联网,位置等正在运作

3)该应用程序在DEBUG模式下工作,但在通过USB签名并安装在设备上时不起作用。我已经三次检查了标志的SHA 1签名等。

4)MapsFragment来自Android Studio中提供的模板。

在生产模式下,日志cat显示:

01-11 16:04:54.511  19346-19437/com.mike.mapstest E/Google Maps Android API﹕ Authorization failure.  Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.
01-11 16:04:54.516  19346-19437/com.mike.mapstest 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: YOUR_KEY_HERE
    Android Application (<cert_fingerprint>;<package_name>): <SHA1 Removed for this> ;com.mike.mapstest

这个错误显然表明我的身份证明有问题? 我做错了什么?

8 个答案:

答案 0 :(得分:39)

基于可调试版本构建的logcat输出:

01-11 16:04:54.511  19346-19437/com.mike.mapstest E/Google Maps Android API﹕ Authorization failure.  Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.
01-11 16:04:54.516  19346-19437/com.mike.mapstest 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: YOUR_KEY_HERE
    Android Application (<cert_fingerprint>;<package_name>): <SHA1 Removed for this> ;com.mike.mapstest

您似乎没有覆盖清单中的api密钥占位符YOUR_KEY_HERE(或单独的api密钥文件,具体取决于您的配置)。用你的实际钥匙替换那根绳子,无论它住在哪里,你都应该好好去。

编辑:this tutorial,如果它与您的配置相匹配,可能会解释为什么您只看到发布版本的原因:

  

返回Android Studio并将API密钥粘贴到文件的YOUR_KEY_HERE部分:

     

请注意,这些步骤已启用Google Maps支持应用程序包的调试版本。 API密钥还需要添加到位于MapDemo中的google_maps_api.xml文件中 - &gt; app - &gt; src - &gt;发布 - &gt; res - &gt;准备好构建应用程序的发布版本时的值。

答案 1 :(得分:9)

我遇到了同样的问题,并且正在将我的头撞在墙上几天。我阅读了关于正确放置钥匙的所有帖子。我一直在google_maps_api.xml文件中输入正确的密钥。上面提到的StKent确保用AndroidManifest.xml中的实际字符串覆盖。这就是为我解决的问题。

当它没有工作时我拥有的东西: 在AndroidManifest.xml中:

<meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />

并在google_maps_api.xml中:

 <string name="google_maps_key"
        templateMergeStrategy="preserve"
        translatable="false">AIza_the actual key</string>

我改变了它的工作方式 我将AndroidManifest.xml更改为包括:

<meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="AIzsa_the actual key" />

答案 2 :(得分:4)

使用Android Studio生成Google Maps Activity时,它会忽略您的gradle构建配置并使用默认的debug.keystoregoogle_maps_api.xml中的SHA1基于此默认值。在Google API控制台中创建权限时,如果您使用非默认设置,请务必使用您的生产并调试SHA1。

答案 3 :(得分:3)

调试和生产密钥会有所不同。如果您使用调试密钥进行发布模式,则无法查看Google地图。对于发布模式,当您更改谷歌地图密钥时,您应该清理项目然后导出apk。

您可以获得更多信息 https://developers.google.com/maps/documentation/android/start

从调试密钥库中获取私有SHA1

keytool -list -v -keystore~ / .android / debug.keystore -alias androiddebugkey -storepass android -keypass your_app_password

了解更多

SHA-1 fingerprint of keystore certificate

或者您可以使用导出菜单eclipse工具生成私有SHA1密钥

答案 4 :(得分:0)

就我而言,我在Google API的API管理器中输入了错误的软件包名称 - 凭据 - “限制对Android应用的使用”。确保输入正确的软件包名称(如在AndroidManifest.xml中)和正确的SHA指纹(用于调试和生产)。 Google API Manager Screenshot

答案 5 :(得分:0)

解决了,我把显示浏览器应用程序的密钥(带有引用者)&#34;而不是Android应用程序的键#(带证书)&#34;来自Google API控制台

答案 6 :(得分:0)

在我的情况下,灰屏是由HostnameVerifier的自定义实现引起的,该实现阻止了图块的加载。

希望这会在将来对其他人有所帮助。

答案 7 :(得分:-1)

错误//确保已启用“ Google Maps Android API v2”。 在这种情况下,您无法在Google Cloud Platform Console中找到类似Google Maps Android API v2的版本。in this, give the exact Package Name: and signature of your project which is showing in run window or debug window , I faced the same problem because of changing MapActivity package location 我整日都在努力工作,因此请确保您是否在项目中更改了任何软件包,如果这样,请给软件包显示错误文本 强调文字 确保以下Android密钥存在: API密钥:YOUR_KEY_HERE Android应用程序(;):; com.mike.mapstest