Android 无法使用调试/发布APK版本查看地图

Android 无法使用调试/发布APK版本查看地图,android,google-maps,google-play,google-play-services,Android,Google Maps,Google Play,Google Play Services,启用USB调试后,我可以在模拟器和设备上查看google地图。但是,当我尝试生成调试/发布apk并在设备上安装apk时,我无法查看地图 我已经做了以下工作: a) 已生成API密钥,并已将其复制到我的项目的google_maps_API.xml中 b) 我已经使用以下命令生成了必要的SHA密钥 keytool.exe -list -v -alias <myalias> -keystore <my path> -storepass <passwd> -keypa

启用USB调试后,我可以在模拟器和设备上查看google地图。但是,当我尝试生成调试/发布apk并在设备上安装apk时,我无法查看地图

我已经做了以下工作:

a) 已生成API密钥,并已将其复制到我的项目的google_maps_API.xml中

b) 我已经使用以下命令生成了必要的SHA密钥

keytool.exe -list -v -alias <myalias> -keystore <my path> -storepass <passwd> -keypass <passwd>
我的google_maps_api.xml如下所示:

<resources>
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">Have added my api key here</string>

已经在这里添加了我的api密钥
已在此处添加我的api密钥-->这是我添加已生成的api密钥的地方

已将此添加到我的清单文件中:

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


有人能帮我理解我应该做什么吗?

我终于解决了这个问题,我采取了以下步骤[在windows机器上,在mac电脑上应该容易得多]:

a) cd到C:\Program Files\Java\bin[或安装jdk的任何位置]

b) 运行:keytool-list-v-alias-keystore“{keystore ie,.jks file loc}”-storepass{your store password}-keypass{your keypass}

c) 通过运行keytool cmd,将生成SHA1文件

d) 登录到

e) 在您的项目中将有一个google_maps_api.xml文件。在这个文件中有一个注释过的url,类似这样:SHA1 key}%3B{your project package}

f) 在上面的链接中,用新生成的密钥替换默认SHA1密钥,并在您已经登录到google Developer控制台的浏览器上打开该链接

h) 按照浏览器上提示的步骤操作,您应该能够生成API密钥

i) 将生成的API密钥粘贴到此处:

<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">API key</string>
API密钥
这可以在您的google_maps_api.xml文件中找到

j) 现在转到{your project location}\app\src\release\res\values并打开google\u maps\u api文件。在这里,再次将API密钥替换到第(i)点中提到的位置,即代码段

k) 最后转到Android Studio>您的项目>构建>生成签名包/APK>{根据第(b)点输入密钥库路径和密码>选择调试/发布版本>完成


生成的调试或发布apk现在将允许您访问谷歌地图。

我终于能够解决这个问题,我遵循了以下步骤[在windows计算机上,在mac上应该更容易]:

a) cd到C:\Program Files\Java\bin[或安装jdk的任何位置]

b) 运行:keytool-list-v-alias-keystore“{keystore ie,.jks file loc}”-storepass{your store password}-keypass{your keypass}

c) 通过运行keytool cmd,将生成SHA1文件

d) 登录到

e) 在您的项目中将有一个google_maps_api.xml文件。在这个文件中有一个注释过的url,类似这样:SHA1 key}%3B{your project package}

f) 在上面的链接中,用新生成的密钥替换默认SHA1密钥,并在您已经登录到google Developer控制台的浏览器上打开该链接

h) 按照浏览器上提示的步骤操作,您应该能够生成API密钥

i) 将生成的API密钥粘贴到此处:

<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">API key</string>
API密钥
这可以在您的google_maps_api.xml文件中找到

j) 现在转到{your project location}\app\src\release\res\values并打开google\u maps\u api文件。在这里,再次将API密钥替换到第(i)点中提到的位置,即代码段

k) 最后转到Android Studio>您的项目>构建>生成签名包/APK>{根据第(b)点输入密钥库路径和密码>选择调试/发布版本>完成


生成的调试或发布apk现在将允许您访问谷歌地图。

这是否回答了您的问题@Vepthy此链接(来自您上面所附的参考)确实帮助我将API密钥引用到SHA密钥。我做了必要的改变。但是,我仍然没有看到带有调试/发布apk的映射。在USB测试中,它可以正常工作。你试过调试代码吗?它会给你带来什么错误?@Vepthy是的,问题是如果我在模拟器上运行代码或尝试从物理设备调试代码(使用设备USB调试),我就能够查看映射。但是,如果我将项目转换为apk,然后在物理设备上运行它,我将无法查看地图。@Vepthy我尝试了其他方法,并且能够调试apk。我在模拟器上安装了apk,后来调试了应用程序。我发现以下异常:“API密钥不能为空。”我已更新了上面的google_maps_API.xml内容。你能帮我解决这个问题吗?这能回答你的问题吗@Vepthy此链接(来自您上面所附的参考)确实帮助我将API密钥引用到SHA密钥。我做了必要的改变。但是,我仍然没有看到带有调试/发布apk的映射。在USB测试中,它可以正常工作。你试过调试代码吗?它会给你带来什么错误?@Vepthy是的,问题是如果我在模拟器上运行代码或尝试从物理设备调试代码(使用设备USB调试),我就能够查看映射。但是,如果我将项目转换为apk,然后在物理设备上运行它,我将无法查看地图。@Vepthy我尝试了其他方法,并且能够调试apk。我在模拟器上安装了apk,后来调试了应用程序。我发现以下异常:“API密钥不能为空。”我已更新了上面的google_maps_API.xml内容。你能帮我解决这个问题吗?