我正在使用谷歌地图Android API,但我遇到了一些问题。
我正在用android studio签署我的apk(在.android / keystore.jks创建一个)。我也选择“发布”作为其中的类型。我使用了命令
keytool -list -v -keystore C:\Users\Toshiba\.android\keystore.jks
将SHA1指纹从密钥库中取出。
SHA1是正确的,但地图未显示在已签名的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
调试工作正常(我在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 这是我做的另一个尝试:
/build
个文件夹位于.gitignore
文件中,因此{{1}}个文件夹未提交。它不起作用。
更新5 我的一个朋友试图重现这个问题。使用android studio时,他有完全相同的问题。可能是android工作室的bug?
答案 0 :(得分:72)
您有两个 google_maps_api.xml 文件
此文件夹中有一个:
app / src / 调试 / res / values
此文件夹中的其他内容:
应用程序/ SRC /的释放强> / RES /值
但是只有调试版可能包含您的API密钥。
答案 1 :(得分:3)
1)通常,您必须清理并重建项目,以便它可以工作。
2)确保您的构建版本在Release(Android Studio对此友好)
3)此外,如果您在设备上进行调试,请先完全卸载然后继续。
4)正如documentation所说,请确保您已正确设置清单。
希望它有所帮助。
答案 2 :(得分:1)
目前用于调试目的的SHA1。
所以当你创建一个签名的apk时,你有一个kestore文件。尝试使用这个新的keaystore文件生成新的SHA1密钥。
然后使用此密钥库文件从Google控制台为已签名的apk创建API密钥。
将已存储在清单文件中的调试API密钥替换为新的密钥。
它会起作用
感谢
答案 3 :(得分:0)
使用Google地图活动在Android Studio中创建新项目。项目后自动在清单中创建SHA1。使用此SHA1获取MAP api密钥。测试你的应用程序,确保它有效。在构建了你的app项目后。
答案 4 :(得分:0)
您还需要添加由Google App签名证书生成的SHA-1。
发布应用后,您可以在Google Play控制台->开发工具->版本管理->应用签名->应用签名证书中找到它。
此处的更多详细信息:Google Places for Android API key does not work on app from Play Store