Android Studio - Google 地图在真正的 Android 设备上发布 apk 时仍为空白
Posted
技术标签:
【中文标题】Android Studio - Google 地图在真正的 Android 设备上发布 apk 时仍为空白【英文标题】:Android Studio - Google map still blank on real Android device on release apk 【发布时间】:2018-04-23 23:04:38 【问题描述】:用谷歌搜索它,阅读数百万条关于如何生成谷歌 API 密钥、如何使用它的建议,但没有任何效果!
-
已启用谷歌地图 v2 API
使用谷歌地图创建了一项活动(工作室中的默认向导)
在 google 上为调试项目创建密钥,将应用程序的 SHA1;app 包分配给 google 上的项目密钥
API 密钥插入 google_maps_api.xml(androidManifest.xml 自动更新)
在应用运行的 AVD 上构建和运行,地图显示。
然后:
-
API 已启用
在 Android Studio 中创建了用于发布的密钥库 (keystore.rel.jks)
生成的指纹(keytool -list -v -keystore C:\Dropbox\AndroidKeyStore\keystore.rel.jks)
在 google 上为新发布项目添加了新指纹(发布 SHA1;应用程序包) - 密钥生成 AIza...
API 密钥插入 google_maps_api.xml(AndroidManifest.xml 自动更新)
生成签名的应用程序(使用 keystore.rel.jks)并安装在真实设备上...应用程序正在运行,地图仍为空白,只有缩放按钮和 Google 标签处于打开状态
提前感谢您的任何建议。
兹德内克
【问题讨论】:
设置权限并启用互联网? Release文件夹下应该有一个单独的google_maps_api.xml,切换到Project视图查看。在那里输入密钥。 检查清单中的包名是否与谷歌开发控制台中的包名相同。 检查您的 LOGCAT,可能有一些关于 GOOGLE MAP 的错误日志 @Daniel Nugent - 是的!!!!由于这样一个愚蠢的错误,花了 3 个漫长的晚上 :( 非常感谢!现在它可以工作了。 【参考方案1】:确保在发布文件夹下的 google_maps_api.xml 中输入您的发布 API 密钥。
首先,使用项目浏览器左上角的下拉菜单切换到项目视图。然后,展开app/src/
,您将看到子文件夹debug
和release
。在那里,您应该会在 debug/res/values
和 release/res/values
下看到两个单独的 google_maps_api.xml 文件。
确保发布 API 密钥位于 release/res/values
文件夹下的 google_maps_api.xml 文件中,因为这是用于签名发布 apk 的密钥。
【讨论】:
谢谢丹尼尔,你的第一句话击中了我的头! :) 我没有在我的项目中看到 app\src\debug 或 app\src\release 目录。什么不会让他们出现? @Spectrem 您可能在项目资源管理器的 Android 视图中。在左上角有一个下拉菜单,您可以在其中切换到项目视图(看看 TestingMapProject/app/build.gradle 正下方的屏幕截图)。 @Spectrem 我只是偶然发现了这个并且遇到了同样的问题。您是否手动创建了debug
和 release
文件夹并添加了这些值?
很多人会错过检查这个。非常感谢。这救了我的命!【参考方案2】:
我厌倦了一遍又一遍地尝试,事实证明 PlayStore 有一个叫做 App signing certificate 的东西,在我复制那个 sha1 并将其粘贴到谷歌控制台后,地图就可以工作了安卓地图。
【讨论】:
我不知道为什么你的回答被否决了,但这正是我签署发布后问题的解决方案,无论如何,事实证明谷歌用自己的证书创建了自己的签名,你必须使用那个指纹。 很高兴为您提供帮助,有了这个答案,我无法告诉您为什么不赞成 谢谢@AndresFelipe!在花了整整一个晚上弄清楚为什么 googleplay apk 不起作用但我所有的本地配置都起作用之后 - 这终于解决了。 本文解释How to Sign your android app with signed key? (private_key.pepk)
:learnfreecoding.com/…。如果您选择“上传从 Android Studio 导出的密钥”,这就是您需要的(private_key.pepk
文件)。
感谢您提供此解决方案!我也厌倦了一遍又一遍地尝试,你的回答是我的解决方案。我编写了一个更详细的分步流程来实施此解决方案,并将其发布在***.com/a/56307654/4242086。谢谢安德烈斯。【参考方案3】:
当您尝试创建地图 api 密钥时,请确保 url 包含正确的包名称。它不应该采取任何这样的子包。
错误的包:com.gpslocation.trackerpro.Activities
正确的包:com.gpslocation.trackerpro
修改后别忘了保存
【讨论】:
【参考方案4】:转至 https://play.google.com/apps/publish/,然后转至App signing
:
也许你会看到这个:
如果是这种情况,可能您是开发者而不是帐户所有者。您必须联系帐户所有者并要求他/她完成该过程。按照这篇文章了解如何做到这一点:
https://learnfreecoding.com/how-to-sign-your-android-app-with-signed-key-private_key-pepk/
帐户所有者将进入此屏幕:
让他们选择Upload a key exported from Android Studio
。他们必须上传private_key.pepk
文件。这是您从 Android Studio 获取该文件的方式:
Build > Generate Signed Bundle / APK...
。
选择Android App Bundle
并点击Next
:
提供相应的凭据并确保勾选Export encrypted key for enrolling published apps in Google Play App Signing
。
指定目标文件夹并确保在单击Finish
之前选择release
:
这将生成您需要提供给Upload a key exported from Android Studio
的private_key.pepk
文件。
完成上述操作后,当您转到应用程序的App signing
部分时,您将看到如下内容:
然后您将看到 Google 地图在真正的 Android Studio 物理设备上正常工作,而不仅仅是在 Android Studio Emulator 上。这就是我的解决方案。
【讨论】:
【参考方案5】:通常您必须执行以下步骤:
1- 在 android studio 中创建新的地图活动
2- 在google_maps_api.xml
打开第 3 行的链接
3- 确认数据并在 Firebase 中获取密钥
4- 复制密钥google_maps_api.xml
调试和发布
5- 在gradle
选项卡中获取发布版 SHA1 -> 签名报告
useful link for get sha1
useful link for sign application in debug mode to get sha1
【讨论】:
【参考方案6】:确保在 Google 控制台中启用 Maps for Android 应用。
【讨论】:
【参考方案7】:确保您在 google_maps_api.xml 文件中输入的地图密钥与由 google 控制台生成的 android 密钥相同。
您也可以尝试使用新密钥。
【讨论】:
【参考方案8】:在这个问题上卡了一天。我尝试了一切,最终在我的清单中找到了以下代码:
<supports-screens
android:anyDensity="false"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="false"
android:xlargeScreens="true" />
删除这些线后,我的地图正确显示。
【讨论】:
【参考方案9】:我遇到了同样的问题,在我的情况下,我在谷歌地图 API 密钥中使用的包的指纹不匹配,所以我做了什么:
创建一个新的谷歌地图活动。 转到 google_maps_api.xml。 复制该文件中给出的链接并粘贴到浏览器中(登录到 google 帐户)。 在谷歌上在这里创建一些项目,然后按继续 点击创建 API 密钥复制密钥并粘贴到 google_maps_api.xml
string name="google_maps_key" templateMergeStrategy="preserve" translatable="false"YOUR KEY HERE
并执行应用程序
不要使用下面的指纹或密钥,创建你的单独它是基于包和应用程序
【讨论】:
【参考方案10】:请按以下步骤操作:
-
转到 Google Play 控制台 -> 设置 -> 应用完整性 -> 应用签名密钥证书
复制 SHA-1 证书指纹
打开谷歌云平台
转到 API 和服务 -> 凭据
点击您的 API 密钥
转到应用程序限制 -> 限制使用您的 Android 应用程序
点击添加项目
使用复制的 SHA-1 证书指纹添加您的包名称
等待大约 10 分钟。并且您的地图将在您发布的应用中可见。
【讨论】:
以上是关于Android Studio - Google 地图在真正的 Android 设备上发布 apk 时仍为空白的主要内容,如果未能解决你的问题,请参考以下文章
com.google.android.maps 在 Android Studio 中不存在
无法按照 Google“入门”页面中的说明在 Android Studio 中添加地图; Android Studio 报错
Google计划放弃Eclipse而支持Android Studio