android - 无法通过 Debug/Release APK 版本查看地图
问题描述
启用 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?
根据没有显示谷歌地图的发布 APK 文件,我应该将 SHA 密钥添加到我在https://console.developers.google.com/上的 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" />
有人可以帮助我了解我应该做什么吗?
解决方案
我终于能够解决这个问题,这些是我遵循的步骤[在 Windows 机器上,在 Mac 上应该更容易]:
a) cd 进入 C:\Program Files\Java<jdk version>\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={您的 SHA1 密钥}%3B{您的项目包}。
f) 在上面的链接中,用新生成的密钥替换默认的 SHA1 密钥,然后在您已经登录到谷歌开发者控制台的浏览器上打开链接。
h) 按照浏览器提示的步骤操作,您应该能够生成 API 密钥。
i) 在此处粘贴生成的 API 密钥:
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">API key</string>
这可在您的 google_maps_api.xml 文件中找到。
j) 现在转到{your project location}\app\src\release\res\values并打开 google_maps_api 文件。再次,在第 (i) 点中提到的位置替换您的 API 密钥,即代码片段。
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 现在将允许您访问谷歌地图。
推荐阅读
- machine-learning - 为什么我们应该在机器学习中使用 Lasso 而不是线性回归进行特征选择?
- java - Runtime.getRuntime().exec 命令失败,所有根活动的退出状态为 127
- spring-boot - springboot中使用@KafkaListener时,如何设置idleBetweenPolls
- python - 在python中格式化字典结构
- mysql - 嵌套连接的更新不适用于订单
- sorting - 有没有办法计算排序算法的进度?
- git - 是否有任何 git 托管允许跨存储库进行 PR?
- google-bigquery - 如何降低 Google BigQuery 费用?
- python - 使用 PyTorch 的交叉熵损失函数是否需要 One-Hot Encoding?
- php - 为什么这个 php 插件在下午 5 点之后仍在执行?