即使在 Flutter 中使用正确的 SHA1 密钥,Google 地图也无法在发布版本中工作
Posted
技术标签:
【中文标题】即使在 Flutter 中使用正确的 SHA1 密钥,Google 地图也无法在发布版本中工作【英文标题】:Google Maps not working in release build even with correct SHA1 key in Flutter 【发布时间】:2021-02-27 13:34:49 【问题描述】:我正在使用 google_maps_flutter 1.0.6 插件在我的颤振应用中显示地图。该地图在调试版本中完美显示,但在发布版本中未显示。我在限制中输入了发布版本的 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
【问题讨论】:
IDE日志有错误吗? 不,IDE 日志中没有错误,但我发现了问题。我猜这与 Expanded 小部件有关。它在调试版本中运行良好,但在发布版本中运行良好。我会发布答案。 【参考方案1】:就我而言,它与 SHA1 有关。
我按照本教程进行了生成密钥库的发布。
https://medium.com/@psyanite/how-to-sign-and-release-your-flutter-app-ed5e9531c2ac
一旦我在我的计算机中生成了.jks
或.keystore
文件。
我让 SHA1 运行 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
【讨论】:
【参考方案2】:问题出在小部件上,而不是 Maps API 和 SHA1 密钥。我用 Container 包装了 GoogleMap 小部件,然后用 Expanded 小部件包装了容器。这个小部件树在调试版本中运行良好,并在屏幕上显示地图,但在发布版本中不知何故它没有显示地图。
我刚刚删除了包装 GoogleMap 小部件的 Container 和 Expanded 小部件。它在发布版本中出人意料地发挥了作用。
【讨论】:
以上是关于即使在 Flutter 中使用正确的 SHA1 密钥,Google 地图也无法在发布版本中工作的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Flutter 在 Firebase 中正确登录和注册?