Android API:授权失败谷歌地图(黑屏)
我有一个谷歌地图片段在一个活动中,我根本无法使它工作。每次我打开它,屏幕都是空白的,只有“设置我的位置”图标。地图从来没有出现过 当我看到LogCat时,我得到:Android API:授权失败谷歌地图(黑屏),android,api,google-maps,android-studio,Android,Api,Google Maps,Android Studio,我有一个谷歌地图片段在一个活动中,我根本无法使它工作。每次我打开它,屏幕都是空白的,只有“设置我的位置”图标。地图从来没有出现过 当我看到LogCat时,我得到: 01-11 22:53:22.984 29341-30537/package_name E/Google Maps Android API: Authorization failure. Please see https://developers.google.com/maps/documentation/android-api/s
01-11 22:53:22.984 29341-30537/package_name
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.
01-11 22:53:23.004 29341-30537/package_name 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.
这是一个明显的迹象,表明它与API相关,因此我尝试了所有可能的方法使该键工作。以下是我尝试过的选项:
google\u maps.api.xml
文件和Gradle签名报告提供的包名和代码。同样的错误依然存在。我甚至添加了多个与调试和发布相对应的SHA-1证书(来自Google Play证书)google\u maps.api.xml
文件有一个用灰色编写的(调试)扩展名。我不知道这是否与这个错误有关。我是这样看的:google_maps.api.xml(debug)
在Android Studio中
<
使用-permission-android:name=“android.permission.INTERNET”/>
<
使用-permission-android:name=“android.permission.CALL\u PHONE”/
<
使用-permission-android:name=“android.permission.VIBRATE”/>
<
使用-permission-android:name=“android.permission.WRITE\u EXTERNAL\u STORAGE”/
<
使用-permission-android:name=“android.permission.CAMERA”/>
<
使用-permission-android:name=“android.permission.ACCESS\u FINE\u LOCATION”/
<
使用-permission-android:name=“android.permission.ACCESS\u\u位置”/>
<
应用
android:allowBackup=“true”
android:icon=“@mipmap/app_logo”
android:label=“@string/app\u name”
android:roundIcon=“@mipmap/app_logo”
android:supportsRtl=“true”
android:theme=“@style/AppTheme”>
<
活动android:name=“.MainScreenActivity”>
<
意图-过滤器>
<
action-android:name=“android.intent.action.MAIN”/>
<
类别android:name=“android.intent.category.LAUNCHER”/>
<
/意向过滤器><
/活动><
活动android:name=“.main菜单”/>
//以及其他一些活动
<
元数据
android:name=“com.google.android.geo.API\u KEY”
android:value=“@string/google\u maps\u key”/
<
活动
android:name=“.Menu”
android:theme=“@style/AppTheme”/>
//以及其他一些活动
<
/应用程序>
<
/manifest>
我已经通过使用Shn_Android_Dev在评论中给出的建议解决了这个问题(谢谢)。显然它与(调试)文件有关
我总是将API代码放入google\u maps\u API.xml(debug)
,清单文件中也给出了android:value=“@string/google\u maps\u key”
。然而,出于某种原因,当我打开应用程序时,它告诉我API不正确。Logcat中显示为错误的错误API实际上位于名为strings.xml(debug)
的文件中。所以我在两个不同的文件中有两个不同的API。请看下图
正如我所怀疑的那样,秘密也存在于strings.xml(debug)
和google\u maps\u api.xml(debug)
。一直在调试中工作,我在那里设置了API,但是在生成GooglePlay的签名APK时,在后台更改为strings.xml(release)
和GoogleMaps.xml(release)
。但是,只有当构建的变体更改为发布时,才能访问发布部分。否则,需要在release\values文件夹中手动更改API密钥
问题现在解决了。这些地图现在也显示在Google Play上。我希望这个答案会有所帮助 “@string/google\u maps\u key”有效吗?确保在字符串资源中放置了有效的google\u maps\u密钥。检查以确保没有任何其他需要添加到字符串资源文件中的密钥/令牌/机密。谢谢!你的建议有帮助。见下面的答案。