Play商店中发布的应用无法与Google Maps API和Facebook API通信

exr*_*zzo 11 android google-maps facebook-login google-play android-keystore

我使用Android Studio创建了一个已签名的APK,我添加到Google Developer控制台和Facebook控制我的SHA1指纹和我的应用程序中的相对api键.如果我通过usb上传我签名的apk,一切都运行良好,安装后地图api和facebook api运行良好.如果我将相同的apk上传到Play商店,当我尝试使用Facebook登录时,它会显示"无效的密钥哈希.密钥哈希blablabla与任何存储的都不匹配".因此,如果我没有Facebook登录,我甚至无法得到我的谷歌地图; 这让我认为在Play商店中加载的apk会改变他的指纹或类似的东西.我检查了Android开发者和Stackoverflow上的所有内容,但是我无法使其工作,因为很有意思的是这个签名版本的apk工作正常,直到我在Play商店加载它.

And*_*per 25

以下是您无法看到Google地图的答案.

我最近在Google Play商店上传了APK,在查看Play控制台后我遇到了同样的问题我找到了解决此问题的方法.

他们的钥匙没问题,但问题在于你的SHA-1.你用你的SHA-1签署你的APK很好,然后上传APK也没关系.

但是,根据Play控制台的新更新,当您使用SHA-1签署APK并上传APK时,它仅由您签名,但根据新的更新,它也会由Google Play签名以获得更高的安全性.看一下Google Play部分的部分内容:

使用Google Play应用程序签名:您使用上传密钥对应用进行签名.然后,Google会验证并删除上传密钥签名.最后,Google会使用您提供的原始应用签名密钥重新签名该应用,并将您的应用交付给用户.

您可以在此处参考文档.

现在,您的问题的答案是在成功上传APK之后,您可以看到在第2个SHA-1部分中,第一个SHA-1是Google自己创建的,第二个SHA-1是您自己的.

因此,只需复制Google SHA-1并将其粘贴到生成Google Map API密钥的控制台即可.

  • 谢啦 !我试图弄清楚这个问题已经3天了.虽然有大量的答案要求更改sha1键,但这是清晰明确的.谢谢你的帮助. (3认同)

yme*_*ene 23

借助@Andy Developer的灵感,我可以在将我的应用程序上传到Google Play后显示地图.这些是步骤:

  1. 将您的应用上传到Google Play(已签名的APK文件)
  2. 应用程序提交并获得批准后,从Google Play控制台中选择您的应用
  3. 转到开发工具 - > 发布管理 - > 应用程序签名

应用程序在Google Play控制台中登录

  1. 复制上传应用后Google Play发布的第一张SHA-1证书.
  2. 转到Google控制台并选择您的项目.
  3. 选择您的API密钥,限制您的密钥,然后在程序包名称后粘贴SHA-1.

将SHA-1粘贴到Google控制台中

  1. 保存,等待几分钟.并且您的应用应该显示Google地图.


exr*_*zzo 3

我终于解决了,问题可能是api提供的文件google_maps_api.xml没有在release中加载,所以我

我确实喜欢这样:

buildTypes {
    debug {
        manifestPlaceholders = [mapsKey: "AIzaSyB8o9KzQ5YN8U8AFS************"]
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        manifestPlaceholders = [mapsKey: "AIzaSyApLacqgkdIR7uEpcf*****************"]
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的 AndroidManifest 中

<meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${mapsKey}" />
Run Code Online (Sandbox Code Playgroud)

参考:https ://stackoverflow.com/a/33917692/3235560

然后我注册了两个不同的密钥,每个密钥都有正确的 sha1 指纹,一个是调试密钥,另一个是 Google Play 控制台提供的密钥(不是上传证书,而是 Google 生成的另一个密钥)。

非常非常感谢 Zuhad 和 Andy Developer 的灵感。