Google 即使在 Flutter 中使用正确的 SHA1 密钥,地图也无法在发布版本中工作

Google Maps not working in release build even with correct SHA1 key in Flutter

我正在使用 google_maps_flutter 1.0.6 插件在我的 flutter 应用程序中显示地图。该地图在调试版本中显示完美,但在发布版本中不显示。我已经在限制中输入了发布版本的 SHA1 密钥,并多次检查它是正确的。我也试过触发 onMapsCreated 方法。它在调试版本中触发,但在发布版本中不会 运行。 谁能解释一下我该怎么做才能使 Google 地图在发布版本中工作。

以下是我使用的 Flutter 版本信息:

Flutter 1.22.3 • 频道稳定 • https://github.com/flutter/flutter.git

框架 • 修订版 8874f21e79(3 周前) • 2020-10-29 14:14:35 -0700

引擎 • 版本 a1440ca392

工具 • Dart 2.10.3

问题出在小部件上,而不是地图 API 和 SHA1 密钥。我用 Container 包裹了 GoogleMap 小部件,然后用 Expanded 小部件包裹了容器。此小部件树在调试版本中运行良好,并在屏幕上显示地图,但在发布版本中它不显示地图。

我刚刚删除了包装 GoogleMap 小部件的 Container 和 Expanded 小部件。它在发布版本中出人意料地有效。

就我而言,它与 SHA1 有关。

我按照本教程进行了生成密钥库的发布。

https://medium.com/@psyanite/how-to-sign-and-release-your-flutter-app-ed5e9531c2ac

在我的计算机中生成 .jks.keystore 文件后。

我得到了 SHA1 运行ning keytool -v -list -keystore nutella.jks

并将 SHA1 添加到 https://console.cloud.google.com/google/maps-apis/credentials

中的 Android 密钥

然后我 运行 flutter build apk --release 和 Google 地图在这个新 APK 中运行良好。


另外,如果对大家有帮助的话。这些是我项目中的一些配置:

dependencies:
  google_maps_flutter: ^1.1.1
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        classpath 'com.google.gms:google-services:4.3.10'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
android {
    compileSdkVersion 30
}

    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 30
        multiDexEnabled true
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            shrinkResources false
            minifyEnabled false
        }
    }
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip