无法通过 Debug/Release APK 版本查看地图

Posted

技术标签:

【中文标题】无法通过 Debug/Release APK 版本查看地图【英文标题】:Unable to view Maps with Debug/Release APK release 【发布时间】:2020-10-16 05:18:13 【问题描述】:

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

我做了以下事情:

a) 在https://console.developers.google.com/ 中生成 API 密钥并将其复制到我的项目的 google_maps_api.xml 中。

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

keytool.exe -list -v -alias <myalias> -keystore <my path> -storepass <passwd> -keypass <passwd>

我无法理解的是,如何使用生成的 SHA?

根据Release APK file not showing google maps,我应该在https://console.developers.google.com/ 上将SHA 密钥添加到我的API 密钥中。但是,我看不到添加它的选项。

通过安装apk,然后在模拟器上调试安装的代码,我看到了以下异常:

API Key must not be empty.

我的google_maps_api.xml如下:

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

已在此处添加了我的 api 密钥 --> 这是我添加了已生成的 API ket 的位置。

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

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

有人可以帮助我了解我应该做什么吗?

【问题讨论】:

这能回答你的问题吗? Android google maps release key? @Vepthy 这个链接developers.google.com/maps/documentation/android-sdk/…(来自您上面附加的参考资料)确实帮助我将API密钥引用到SHA密钥。我对console.developers.google.com 进行了必要的更改。但是,我仍然没有看到带有调试/发布 apk 的地图。其中,在 USB 测试中它工作正常。 你试过调试代码吗?它会给你带来什么错误? @Vepthy 是的,问题是如果我在模拟器上运行代码或尝试从物理设备调试代码(使用设备 USB 调试),我可以查看地图。但是如果我把项目转换成apk然后在物理设备上运行,我就无法查看地图了。 @Vepthy 我尝试了一些不同的方法并且能够调试 apk。我在模拟器上安装了 apk,后来调试了应用程序。我发现以下异常:“API Key 不能为空。”我已经更新了上面的 google_maps_api.xml 内容。你能帮我解决这个问题吗? 【参考方案1】:

我终于能够解决这个问题,这些是我遵循的步骤 [在 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) 登录https://console.developers.google.com/

e) 在您的项目中会有一个 google_maps_api.xml 文件。在这个文件中有一个注释的 url,类似于:https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=yourSHA1 key%3Byour project package。

f) 在上面的链接中,将默认的 SHA1 密钥替换为新生成的密钥,然后在您已经登录到 google 开发者控制台的浏览器上打开该链接。

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

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

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

这可以在您的 google_maps_api.xml 文件中找到。

j) 现在转到 您的项目位置\app\src\release\res\values 并打开 google_maps_api 文件。再次,在第 (i) 点提到的位置替换您的 API 密钥,即代码 sn-p。

k) 最后进入 Android Studio > Your Project > Build > Generate Signed Bundle / APK > input keystore path and passwords as per point (b) > select debug/release version > Finish

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

【讨论】:

以上是关于无法通过 Debug/Release APK 版本查看地图的主要内容,如果未能解决你的问题,请参考以下文章

C#自动引用Debug | Release版本的dll

C#自动引用Debug | Release版本的dll

C#自动引用Debug | Release版本的dll

Debug & Release

深入浅出Android Gradle构建系统:简介

Android app API环境切换需求与实现