首页 文章

Android SHA1发布密钥库不支持Google Map

提问于
浏览
30

我正在使用谷歌 Map Android API,我遇到了一些问题 .

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

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

从密钥库中获取SHA1指纹 .

SHA1是正确的,但 Map 不会显示在已签名的APK上 . 它显示在调试APK中 .

使用keytool和release keystore(keystore.jks)会得到我:

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

调试工作正常(我在谷歌的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作为调试和发布密钥库的签名算法 .

我究竟做错了什么?

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

UPDATE 2 仍然没有找到有效的解决方案......救救我!

UPDATE 3 好吧,使用带有构建类型调试的签名APK工作 . 提取了CERT.RSA并运行了 keytool -printcert -file ./CERT.SA . 获得与发布版本类型相同的结果 . 在发布它不起作用!

UPDATE 4 这是我做的另一次尝试:

  • 创建了一个新的GIT存储库,提交给它 .

  • /build 文件夹未提交,因为它们位于 .gitignore 文件中 .

  • 在API控制台中创建了一个新的API密钥,并仅向其添加了 release SHA1密钥 .

  • 将API密钥添加到应用程序并通过重建完全清理 .

  • 生成新签名的APK文件

那没起效 .

UPDATE 5 我的一位朋友试图重现这个问题 . 使用android studio时,他有完全相同的问题 . 可能是android工作室的bug?

4 回答

  • 3

    您有两个google_maps_api.xml文件

    这个文件夹中有一个:

    app / src / debug / res / values

    其他在此文件夹中:

    app / src / release / res / values

    但是只有调试版可能包含您的API密钥 .

  • 1

    1)通常,您必须清理并重建项目,以便它可以工作 .

    2)确保您的构建版本在Release(Android Studio对此友好)

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

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

    希望能帮助到你 .

  • 0

    SHA1目前用于调试目的 .

    所以当你创建一个签名的apk时,你有一个kestore文件 . 尝试使用这个新的keaystore文件生成新的SHA1密钥 .

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

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

    它会工作

    谢谢

  • 72

    使用Google Map 活动在Android Studio中创建新项目 . 项目后自动在清单中创建SHA1 . 使用此SHA1获取MAP api密钥 . 测试你的应用程序,确保它有效 . 在构建了你的app项目之后 .

相关问题