我正在使用谷歌 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 回答
您有两个google_maps_api.xml文件
这个文件夹中有一个:
app / src / debug / res / values
其他在此文件夹中:
app / src / release / res / values
但是只有调试版可能包含您的API密钥 .
1)通常,您必须清理并重建项目,以便它可以工作 .
2)确保您的构建版本在Release(Android Studio对此友好)
3)此外,如果您在设备上进行调试,请先完全卸载然后继续 .
4)正如documentation所说,请确保您已正确设置清单 .
希望能帮助到你 .
SHA1目前用于调试目的 .
所以当你创建一个签名的apk时,你有一个kestore文件 . 尝试使用这个新的keaystore文件生成新的SHA1密钥 .
然后使用此密钥库文件从谷歌控制台为已签名的apk创建API密钥 .
用新的替换已存储在清单文件中的调试API密钥 .
它会工作
谢谢
使用Google Map 活动在Android Studio中创建新项目 . 项目后自动在清单中创建SHA1 . 使用此SHA1获取MAP api密钥 . 测试你的应用程序,确保它有效 . 在构建了你的app项目之后 .