【问题标题】:Android SHA1 release keystore not working with Google MapsAndroid SHA1 版本密钥库不适用于 Google 地图
【发布时间】:2014-09-16 11:43:20
【问题描述】:

我正在使用 Google Maps Android API,但遇到了一些问题。

我正在使用 android studio(在 .android/keystore.jks 创建一个)签署我的 apk。我也选择“发布”作为其中的类型。我已经使用了命令

keytool -list -v -keystore C:\Users\Toshiba\.android\keystore.jks

从密钥库中获取 SHA1 指纹。

SHA1 正确,但地图未显示在签名的 APK 上。它显示在调试 APK 中。

将 keytool 与发布密钥库 (keystore.jks) 一起使用会得到这个:

 SHA1: 33:46:07:82:5B:D4:45:D2:60:CE:5A:29:97:9F:6C:44:XX:XX:XX:XX

调试一个工作正常(我在 Google 的 API 控制台中添加了 2 个)

33:46:07:82:5B:D4:45:D2:60:CE:5A:29:97:9F:6C:44:XX:XX:XX:XX;yac.breakingpoint
7C:28:61:5B:C3:4A:5C:50:44:AA:FD:58:69:E9:70:91:XX:XX:XX:XX;yac.breakingpoint

XX 被黑了。

keytool 说它使用 SHA256withRSA 作为调试和发布密钥库的签名算法。

我做错了什么?

更新 所以我尝试了一个新的 API 密钥,清理项目并重建它,新的密钥库 - 仍然无法发布...调试很好!

更新 2 仍然没有找到可行的解决方案...帮帮我!

更新 3 好的,使用带有构建类型调试的签名 APK 使其工作。提取 CERT.RSA 并运行 keytool -printcert -file ./CERT.SA。得到与发布构建类型相同的结果。在发布时它不起作用!

更新 4 这是我的另一个尝试:

  • 创建了一个新的 GIT 存储库,并提交给它。
  • /build 文件夹未提交,因为它们位于 .gitignore 文件中。
  • 在 API 控制台中创建了一个新的 API 密钥,并且只添加了 release SHA1 密钥。
  • 将该 API 密钥添加到应用中,并通过重建进行了全面清理。
  • 生成了一个新的签名 APK 文件

没有用。

更新 5 我的一个朋友试图重现这个问题。在使用 android studio 时,他遇到了完全相同的问题。可能是 android studio 的 bug?

【问题讨论】:

    标签: android google-maps sha1


    【解决方案1】:

    您有两个 google_maps_api.xml 文件

    此文件夹中的一个:

    app/src/调试/res/values

    此文件夹中的其他内容:

    app/src/发布/res/values

    但可能只有调试版本包含您的 API 密钥。

    【讨论】:

    • 天啊!!我简直不敢相信!非常感谢。有一个文件 app/src/release/res/values/google_maps_api.xml 包含默认值。它可以工作!
    • 有同样的问题,已经尝试了一切,这工作。谢谢。 app/src/release/res/values/google_maps_api.xml 是空的,没有密钥。我在 AndroidManifest.xml 文件中使用了 Alt+Click 来添加 api 密钥,它只将它添加到调试中。
    • Thhhhhhhaaaaaaaaaaank 你!!!我失去了两天,已经尝试了我现在真正想亲吻的一切!我总是用 CTRL+SHIFT+N 打开,我从来没有注意到有两个不同的文件,总是快速按 ENTER。
    • 哈哈哈!!我也浪费了两天!天哪,我什至没有注意到 google_maps_api.xml 附近的灰色(调试)字!祝大家新年快乐!
    • 我有一些问题,但在我的应用程序文件夹中没有 relase 或调试文件夹.. 你知道其他答案吗?
    【解决方案2】:

    1) 通常,您必须清理并重建项目才能正常工作。

    2) 确保您的构建变体已发布(Android Studio 对此很友好)

    3) 此外,如果您在设备上进行调试,请先完全卸载,然后继续。

    4) 正如documentation 所说,确保您已正确设置清单。

    希望对你有帮助。

    【讨论】:

    • 我已经检查了你的所有观点,但没有任何效果。清单设置正确,因为我猜它正在调试模式下工作。
    【解决方案3】:

    使用 Google 地图活动在 Android Studio 中创建新项目。项目后自动在清单中创建 SHA1。使用此 SHA1 获取 MAP api 密钥。测试您的应用程序以确保它可以正常工作。然后在什么项目上构建你的应用程序。

    【讨论】:

    • 这不是真的,清单中没有 SHA1。 Android Studio 确实创建了一个名为 google_maps_api.xml 的文件,其中包含调试 SHA1。感谢您的尝试。
    • 是的,你是对的。什么文件作为密钥,以及注释行中的 SHA1。
    【解决方案4】:

    您当前用于调试目的的 SHA1。

    因此,当您创建签名的 apk 时,您有一个 kestore 文件。尝试使用这个新的 keystore 文件生成新的 SHA1 密钥。

    然后使用此密钥库文件从谷歌控制台为签名的 apk 创建 API 密钥。

    用新的替换已存储在清单文件中的调试 API 密钥。

    会有用的

    谢谢

    【讨论】:

    • 这不是真的,我没有使用调试密钥库..请正确阅读问题..
    • 您好,我在 android studio 中不太好,但您报告的错误只是说明错误与密钥库文件有关。答案基于 eclipse
    • 我正在使用不同的密钥库,并且正在使用它进行签名。我从那个密钥库中得到了 SHA1 并从 apk 本身导出了它。它只是在发布时不起作用。我也可以使用发布密钥库将其签名为“调试”类型,它会起作用。我认为这是一个与 android studio 相关的错误。
    【解决方案5】:

    您还需要添加由 Google App 签名证书生成的 SHA-1。

    发布应用后,您可以在 Google Play 控制台 -> 开发工具 -> 发布管理 -> 应用签名 -> 应用签名证书中找到它。

    更多详情请看这里:Google Places for Android API key does not work on app from Play Store

    【讨论】:

      猜你喜欢
      • 2015-12-09
      • 2015-12-31
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多