Android 地图在内置 apk 版本中不工作

Android map not working in built apk version

我开发了一个 android 应用程序,其中有一个地图片段。我通过指定项目的包名称和其他必需的详细信息从 "google developer console" 获得了 "map key"。

我通常通过将实际设备连接到我的机器来测试我的应用程序,一切正常。但是当我将 apk 构建为调试或发布版本并将 apk 安装在 same/different 设备中时,它根本不显示地图。

我使用 Android Studio 进行开发和构建过程。

我该如何解决这个问题?我确信这与我构建 apk 时未正确选择密钥有关,但我不确定如何解决此问题!

更新 1:

我根据您的所有建议解决了问题。我缺少的部分是我在 Android studio 中使用 "Generate signed apk" 生成了一个新的密钥库,以便我的 apk 使用新的 SHA-1 进行了签名以用于发布,但我没有告诉 google 它需要考虑我的新 SHA-1。

所以我做了以下事情

  1. 我继续 terminal/command 提示,得到了新创建的 SHA-1。我使用了命令 "keytool -list -keystore my_key_store_name.jks -alias my_key_store_alias_name" 。这显示了我的 SHA-1
  2. 我复制了 SHA-1 并转到 google 开发人员控制台并添加了项目的包名称和新的 SHA-1

经过以上步骤,我的地图就可以正常显示了。 :)

感谢大家帮我解决

在构建您的应用程序并直接从工作室安装它时,工作室将在发布应用程序时使用调试 key.But,apk 必须使用发布密钥而不是调试 key.The Android SDK 工具在您进行发布构建时生成此发布证书。

所以对于map key的生成,如果你在开发阶段,可以使用debug key来生成map key。但是当您发布应用程序时,您必须使用发布密钥获取新的地图密钥并将其替换到您的清单文件中。

关于签署您的应用程序,请参阅此 link and this so

当您 运行 没有创建 apk 的应用程序时,它会将您的调试密钥库作为密钥库,并且您已在开发者控制台上设置了该密钥。

当您创建 apk 时,该 apk 将使用不同的密钥库创建,即您的应用程序密钥库。

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

keytool -list -v -keystore kestore_location -alias kestore_alias_name -storepass android -keypass kestore_pasword

所以没有在开发者控制台上设置使用该密钥库创建的 has-key。

您只需要使用应用程序 kestore 创建新的哈希密钥并将其添加到开发人员密钥库中。

它将显示地图。

我认为 SHA 有问题。请再次检查 SHA。 按照以下步骤找到正确的 SHA 并与控制台 SHA

匹配

在 Android 工作室中: 1. 在 window 的右侧点击 Gradle 2.刷新 3.应用--->任务---->android--->signingReport 4. SHA 将显示在控制台上

生成的 SHA 添加到 google 控制台。 快乐映射