发布未显示 google 地图的 APK 文件

Release APK file not showing google maps

我按照 google 开发人员文档中提到的确切步骤创建了一个示例 google 地图项目,并且在模拟器上一切正常,但是当我生成项目 apk 文件并启动时它在真实设备 Samsung Galaxy S4 google 地图上不显示它只显示空白背景,只有彩色 Google 徽标出现在屏幕左下角!!

我为 google 地图创建了新项目 我为该项目创建了新的 .jks 文件并创建了存储和密钥传递和别名,然后我从 cmd java bin 中提取了 SHA1 我去了 dev.google.com/console 创建新项目然后启用 google 映射 android API 然后从 Credentials 中创建 API 密钥将此 API 密钥粘贴到place in google_maps_api.xml 在我的项目中使用 .jks 文件路径和别名以及两个密码更新了 signingConfigs 版本。然后从 Android Studio 生成签名的 APK 然后将应用程序-release.apk 转移到真实设备然后安装它同样的问题 google 地图不显示。

这个问题的原因

发生这种情况是因为 debugrelease 类型中有不同的 SHA1

修复此问题

将用于构建 release APK 的密钥库的 SHA1 添加到 Google 控制台

步骤:

  1. 生成签名APK时获取keystore的路径

    构建 ----> 生成签名 APK..

保存密钥存储路径

记得制作 Build Type --- release

  1. 从密钥库中提取 SHA1

打开您的终端使用下面的命令:

 keytool -list -v -keystore "/Users/NT/Desktop/generalkey.jks"

系统会要求您输入密钥库的密码。

将路径更改为您的密钥库路径 keytool -list -v -keystore "keystore path"

从证书指纹中,您将看到 SHA1

  1. 使用此 SHA1 和您的包名称
  2. 生成 android 密钥

使用密钥库生成 APK 并享受您的地图

现在 google 在商店发布之前签署 apk,所以去 google pushish app ---> app signing ,然后将签名密钥添加到 google 开发者控制台,你应该在 pushlish

之后添加 3 个 sha1 密钥:调试、发布和新的 sha1 密钥

这可能很愚蠢,但我的 API 密钥包含在

app\src\debug\res\values\google_maps_api.xml (debug)

您还需要包括 in-

app\src\release\res\values\google_maps_api.xml (release)

如果还有人遇到这个问题:

这件事发生在我身上,因为我们需要两个 google 映射 api 键,一个用于调试,另一个 一个用于发布,您可以签入:

C:\Users\username\AndroidStudioProjects\yourapp\app\src\调试\res\values 你会找到一个 xml 和你的 api 键,例如:

    <string name="google_maps_key" templateMergeStrategy="preserve" 
          translatable="false">AIza...etc</string>

但是如果你在这里查看:

C:\Users\username\AndroidStudioProjects\yourapp\app\src\发布\res\values 你会发现一个 xml 但里面没有 api 键,比如:

     <string name="google_maps_key" templateMergeStrategy="preserve" 
         translatable="false">YOUR_KEY_HERE</string>

它被注释为 xml 文件本身的注释:

在发布应用程序之前,您需要一个 Google 地图 API 密钥。

To do this, you can either add your release key credentials to your existing
key, or create a new key.

Note that this file specifies the API key for the release build target.
If you have previously set up a key for the debug target with the debug signing certificate,
you will also need to set up a key for your release certificate.

Follow the directions here:

https://developers.google.com/maps/documentation/android/signup

Once you have your key (it starts with "AIza"), replace the "google_maps_key"
string in this file.

另一个附加步骤: 在 google play developer console 添加应用签名 SHA1 指纹:

检查以下内容:

  • 下面的文件应该在调试和发布中

    app\src\debug\res\values\google_maps_api.xml (debug)
    

    您还需要包含在

    app\src\release\res\values\google_maps_api.xml (release)
    
  • 将用于发布 apk 的 SHA1 添加到 Google Api 控制台。
    您可以从 play console >> App Signing >> SHA1 Certificate

  • 获取 SHA1 密钥

我在制作 apk 时也遇到了同样的地图问题,在您制作 google 地图键的同一系统中制作 apk 然后地图将工作并完美显示。

为了在 android apk 的发布版本中显示地图,开发人员需要添加更新后的 SHA-1 密钥,该密钥由 Google Play 控制台在发布应用程序后创建。转到控制台的 App Signing 部分并查找 'App Signing Certificate: SHA-1 Certificate Fingerprint'。复制指纹并将其粘贴到开发人员为地图创建 Google API 键的 Google API 控制台中。

对于所有尝试了所有方法但仍然没有让 google 地图出现在发行版中的人,请先尝试:

1- 在您的 phone 或模拟器

上安装 release.apk

2- 打开 logcat window 并将其设置在您的 phone 设备上(如果使用模拟器,则默认设置)

3- 打开地图,它显示如下错误,复制密钥并粘贴到清单文件中下面的值标签中:

 <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="" />

如果签名密钥由 google Play 控制台管理,对于您的情况,请执行此操作

从 google 播放控制台 >> 您的应用程序 >> 设置 >> 应用程序完整性获取 SHA-1 证书指纹(这与您签署应用程序时使用的不同)

转到您的 google cloude api 密钥凭据并添加您从 google 游戏控制台获取的 SHA-1。

就是这样,它对我有用。

Google 现在在商店发布之前签署 APK。首先在 google 播放中选择您的应用。在发布下 ---> 设置 ---> 应用完整性。在那里,您应该会看到 App 签名密钥证书。您将看到一个额外的 SHA-1 密钥。 您需要将此密钥添加到 google 开发者控制台。您应该有 3 个 SHA-1 密钥:调试、发布和发布应用后的新 SHA-1 密钥。