Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Google Maps V2在生产中无法使用正确的密钥_Android_Google Maps - Fatal编程技术网

Android Google Maps V2在生产中无法使用正确的密钥

Android Google Maps V2在生产中无法使用正确的密钥,android,google-maps,Android,Google Maps,让谷歌地图在安卓应用程序的生产环境中运行,我遇到了很大的困难。这是我目前得到的(底部只是广告) 我遵循的关键步骤: 1) 我已确保获得了正确的SHA1生产密钥,并已在谷歌控制台API以及应用程序(谷歌提供的密钥)中实现了该密钥。我已经注册了两个密钥——一个用于调试,另一个用于生产 2) 互联网、地理位置等正在发挥作用 3) 该应用程序在调试模式下工作,但通过USB在设备上签名和安装时不工作。我已经三次检查了标志的SHA 1签名等 4) MapsFragment来自Android Studio中

让谷歌地图在安卓应用程序的生产环境中运行,我遇到了很大的困难。这是我目前得到的(底部只是广告)

我遵循的关键步骤:

1) 我已确保获得了正确的SHA1生产密钥,并已在谷歌控制台API以及应用程序(谷歌提供的密钥)中实现了该密钥。我已经注册了两个密钥——一个用于调试,另一个用于生产

2) 互联网、地理位置等正在发挥作用

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

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

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

01-11 16:04:54.511 19346-19437/com.mike.mapstest E/Google地图Android API﹕ 授权失败。请看https://developers.google.com/maps/documentation/android/start 了解如何正确设置地图。
01-11 16:04:54.516 19346-19437/com.mike.mapstest E/Google地图Android API﹕ 在Google开发者控制台中(https://console.developers.google.com)
确保“谷歌地图Android API v2”已启用。
确保存在以下Android密钥:
API密钥:这里是您的密钥
Android应用程序(;):;com.mike.mapstest
这个错误显然说明我的授权有问题?
我做错了什么?

调试和生产密钥将不同。如果在发布模式下使用调试键,则无法查看google地图。对于发布模式,当您更改GoogleMap键时,您应该清理项目,然后导出apk

你可以得到更多的信息

从调试密钥存储获取专用SHA1

keytool-list-v-keystore~/.android/debug.keystore-alias androiddebugkey-storepass android-keypass您的应用程序密码

看更多


或者,您可以使用eclipse工具根据可调试版本生成的logcat输出,使用导出菜单生成专用SHA1密钥:

01-11 16:04:54.511 19346-19437/com.mike.mapstest E/Google地图Android API﹕ 授权失败。请看https://developers.google.com/maps/documentation/android/start 了解如何正确设置地图。
01-11 16:04:54.516 19346-19437/com.mike.mapstest E/Google地图Android API﹕ 在Google开发者控制台中(https://console.developers.google.com)
确保“谷歌地图Android API v2”已启用。
确保存在以下Android密钥:
API密钥:这里是您的密钥
Android应用程序(;):;com.mike.mapstest
您似乎没有覆盖清单(或单独的api密钥文件,具体取决于您的配置)中的api密钥占位符
您的
。无论字符串位于何处,请用实际的键替换它,这样您就可以很好地使用它了

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

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

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


使用Android Studio生成Google Maps活动时,它将忽略gradle构建配置,并使用默认的
debug.keystore
google\u maps\u api.xml
中的SHA1基于此默认值。在Google API控制台中创建权限时,如果您使用的是非默认设置,请确保使用您的产品和调试SHA1。

我也遇到了同样的问题,几天来一直在碰壁。我读了所有关于把正确的钥匙放在适当位置的帖子。我一直在我的google\u maps\u 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>
AIza_实际密钥
为使其正常工作,我更改了什么 我将我的AndroidManifest.xml更改为包括:

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


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

解决了,我在清单上放了Google API控制台的“浏览器应用程序密钥(带引用)”而不是“Android应用程序密钥(带证书)”在我的例子中,灰色屏幕是由自定义实现的
HostnameVerifier
导致的,该实现阻止加载磁贴

希望这将有助于其他人在未来

错误//确保启用了“谷歌地图Android API v2”。 在谷歌云平台控制台中,你找不到像谷歌地图一样的Android API v2。 我一整天都在努力寻找这个问题,所以要确定你们是否改变了项目中的任何包,如果是的话,给出错误文本中显示的包 强调文本 确保存在以下Android密钥: API密钥:这里是您的密钥
Android应用程序(;):com.mike.mapstest

检查您的SHA1是否适用于发布模式?@MohammodHossain,是的,我使用的是您在为制作应用程序签名时获得的SHA密钥。我使用的是通过Keystrook为发布应用程序签名时找到的SHA密钥。将SHA1密钥更改为公共调试密钥,然后查看您的google地图。公共调试密钥?这是IDE生成的密钥吗?在调试模式下使用调试键时,应用程序可以工作。我有si