Tim*_*sen 11 android api-key google-places-autocomplete
我最近推出了一款Android应用,可以使用Google商家信息自动填充功能小部件/ API.作为配置的一部分,我将API密钥添加到我的Android清单文件中:
<application>
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="MY_KEY_HERE"/>
</application>
Run Code Online (Sandbox Code Playgroud)
此外,在Google Developers控制台中,我仅为Android设备启用了此API密钥,但并未限制任何特定的API.我还为我的应用输入了正确的包名和SHA-1哈希.现在我有以下问题:
我确信我部署到Play商店的实际上是同一个本地运行的应用程序,因为我最近也制作了一些小的UI补丁,这些也出现在商店版本上.我多次验证了清单文件中出现的正确密钥.
我无法解释这一点.这个问题特别困难,因为一切都可以在Android Studio中运行,所以我不能做一些事情,比如进入调试并尝试捕获异常.
如果你有一些Android和自动完成的专业知识,并且你已经看到类似的问题,那么我欢迎你的回答.
您有问题的陈述===> 我还为我的应用输入了正确的软件包名称和SHA-1哈希
问题:实际上,到目前为止,您只是使用上传密钥对应用程序进行签名,但是对于Play商店,您需要google创建的SHA-1。
这是更详细的解释
Google Play应用签名的工作方式。[ Document Link ]
步骤1:建立上载金钥
步骤2:准备发布
第3步:上传已签名的应用
步骤4:向API提供者注册您的应用签名密钥
在将应用交付给用户之前,Google Play会删除您的上传密钥签名,并使用新密钥重新签名。
这意味着您使用上传密钥对应用程序进行了签名。然后,Google验证并删除上传密钥签名。最后,Google使用您提供的原始应用签名密钥对应用重新签名,然后将应用交付给用户。
因此,要解决您的问题,您需要在将您的应用上传到Google Play且应用已提交并获得批准后,执行以下附加步骤
从Google Play控制台中选择您的应用,然后转到开发工具->版本管理->应用签名。
上传应用程序后,复制Google Play发行的第一个SHA-1证书。
转到Google控制台,然后转到您的项目。
选择您的API密钥,然后将SHA-1粘贴在软件包名称之后。
@NullPointer 的答案在功能上是正确的,并且确实解决了我的问题。但为了对我自己的问题给出更直接的答案,问题的根本原因与为 Android 应用程序的本地调试版本和同一应用程序的发布版本配置 Google API 的程序截然不同。
这里的部分混乱与谷歌控制台本身有关,它说:
然后使用以下命令获取(SHA-1)指纹:
keytool -list -v -keystore mystore.keystore
Run Code Online (Sandbox Code Playgroud)
在本地构建和测试应用程序时,在调试模式下,实际上keytool针对调试密钥库文件运行,并将 SHA-1 哈希粘贴到 Google 控制台将使 API 正常工作。在代码库上呆了几个月或更长时间,并且 API 看起来非常稳定之后,当使用发布的 APK 重复这些步骤时,接下来会发生什么,令人惊讶。
这是一个惊喜,因为遵循相同的步骤对于发布应用程序不起作用。这是因为 Google Play 商店实际上使用不同的密钥来注销您的 APK,因此该密钥具有不同的 SHA-1 哈希值。要查找需要使用的 SHA-1 哈希值,可以访问Release management -> App signingGoogle Play 控制台。发布应用程序并等待大约 10-15 分钟以使其刷新后执行此操作。然后,只需将此 SHA-1 粘贴回 Google API 控制台即可。
顺便说一句,我的问题与Published App on Play Store can't communications with Google Maps API and Facebook API非常相似,尽管没有太多强调为什么 Google API 可能在调试模式下工作,但没有强调应用商店。顺便说一句,我感谢@RohitChauhan,他粘贴了包含此问题链接的评论。