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
我正在使用 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