Google 地图无法在 Android 版本捆绑包上运行

问题描述 投票:0回答:1

我在互联网上经常看到这个问题,但对我来说没有任何作用。

我的 Android 应用程序使用 Google 地图服务来显示地图。

我设置了两个变体:

debug
release

debug 变体根本没有签名,而 release 则有。我创建了相应的 my_app.jks

 密钥库,它放置在我的主 
/app
 文件夹中。

我的发布版本配置为:

signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } }
并且这些值在根级别的 

release-keystore.properties

 中设置。

在 GCP 中,我生成了一个 API 密钥,并将其限制为 Android 应用程序:调试和发布指纹。

我的发布指纹是根据 Google 文档创建的:

keytool -list -v -keystore your_keystore_name -alias your_alias_name
我输入了请求的密码,它输出了 SHA-1 指纹。该指纹是我在 GCP 上设置的指纹,具有正确的软件包名称

com.my_app

然后,我运行命令

./gradlew :app:bundleGooglePlayRelease
创建我手动上传到 Google Play 商店进行内部测试的捆绑包。我下载了该应用程序,但地图仍然是灰色的。

据我了解,由于捆绑包已使用发布密钥库进行注册,因此 SHA-1 链接到该捆绑包,因此应该足以验证 API 密钥。


我尝试过但没有成功的事情:

    在模拟器中运行发布版本(也显示灰色地图)
  • 将 MAPS_API 密钥直接硬编码在项目的 Android 清单中,以确保值正确
  • 创建一个单独的API KEY,以检查将相同的包名称限制为两个不同的指纹是否没有问题
  • 尝试使用错误的密钥库值生成发布指纹,以确保我没有错误输入任何值
    • 构建失败,所以我使用的值是正确的

更新 按照
这个解决方案,我从代码中获取了 SHA-1 并将其打印出来。事实证明,它与我在本地使用 keytool

 命令获取的不同。

我将努力找出它们不同的原因。欢迎任何帮助。

android authentication gradle google-cloud-platform fingerprint
1个回答
0
投票
经过一些研究,正如 Martin Zeitler 评论的那样,它没有验证 API 密钥,因为该应用程序正在使用 Google 应用程序签名中的 SHA-1

GCP -> 设置 -> 应用签名

共有三个指尖:

    MD5
  • SHA-1
  • SHA-256
将 SHA-1 链接到 API KEY,解决了问题

© www.soinside.com 2019 - 2024. All rights reserved.