flutter - google_maps_flutter 在发行版中不起作用
问题描述
1 年前我创建了简单的颤振应用程序(仅限 Android)并忘记了它。现在突然之间它必须投入生产。这个应用程序包含带有 Places API 的 firebase auth、firestore 数据库和谷歌地图。
dependencies:
flutter:
sdk: flutter
flutter_localizations: # Add this line
sdk: flutter
firebase_auth: ^0.14.0+5
provider: ^3.1.0
animated_text_kit: ^3.1.2
liquid_pull_to_refresh: ^2.0.0
url_launcher: ^5.7.10
expandable: ^4.1.4
image_picker: ^0.6.7+22
http: ^0.12.1
geoflutterfire: ^2.0.3+3
flutter_spinkit: "^4.1.2"
share: ^0.6.5
intl: ^0.16.1
firebase_messaging: ^6.0.1
flutter_slidable: ^0.5.7
country_code_picker: ^1.5.0
flutter_rating_bar: ^3.1.0
cloud_firestore: ^0.12.9+4
google_maps_flutter: ^0.5.30
cupertino_icons: ^1.0.0
在调试模式下一切都很好。但是现在当我开始发布并将它们放入 Play Console 时,我遇到了一个大问题。谷歌地图(_这是应用程序的关键元素)不起作用(不可见)。顺便说一句,Places API 有效。我在这里阅读了所有问题,并在 Google 开发人员控制台和 Firebase 控制台中使用了 API 密钥限制(指纹)等等。无济于事。当我使用“flutter build appbundle”在本地机器上构建新版本时,我在日志中看到错误。
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: C:\flutter\.pub-cache\hosted\pub.dartlang.org\cloud_firestore-0.13.7\android\src\main\java\io\flutter\plugins\
firebase\cloudfirestore\CloudFirestorePlugin.java uses or overrides a deprecated API.
当我从 Play 商店(内部测试)获得应用程序后在设备上以发布模式运行应用程序时,我在有关 Google 地图的日志中看到此错误
E/flutter ( 7124): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception:
PlatformException(error, java.lang.IllegalStateException: Trying to create a platform view of unregistered type: plugins.flutter.io/google_maps
E/flutter ( 7124): at io.flutter.plugin.platform.k$a.d(Unknown Source:229)
E/flutter ( 7124): at io.flutter.embedding.engine.i.i$a.b(Unknown Source:152)
E/flutter ( 7124): at io.flutter.embedding.engine.i.i$a.J(Unknown Source:144)
E/flutter ( 7124): at c.a.d.a.i$a.a(Unknown Source:17)
E/flutter ( 7124): at io.flutter.embedding.engine.e.b.d(Unknown Source:57)
E/flutter ( 7124): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(Unknown Source:4)
E/flutter ( 7124): at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter ( 7124): at android.os.MessageQueue.next(MessageQueue.java:379)
E/flutter ( 7124): at android.os.Looper.loop(Looper.java:144)
E/flutter ( 7124): at android.app.ActivityThread.main(ActivityThread.java:7529)
E/flutter ( 7124): at java.lang.reflect.Method.invoke(Native Method)
E/flutter ( 7124): at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
E/flutter ( 7124): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
E/flutter ( 7124): , null, null)
E/flutter ( 7124): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:582)
E/flutter ( 7124): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:159)
E/flutter ( 7124): <asynchronous suspension>
E/flutter ( 7124): #2 TextureAndroidViewController._sendCreateMessage (package:flutter/src/services/platform_views.dart:1039)
E/flutter ( 7124): <asynchronous suspension>
E/flutter ( 7124): #3 AndroidViewController.create (package:flutter/src/services/platform_views.dart:749)
E/flutter ( 7124): <asynchronous suspension>
E/flutter ( 7124): #4 RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:174)
E/flutter ( 7124): <asynchronous suspensio
我是一名 JS 开发人员,所以 Dart 很容易掌握,但 Java 对我来说很难。请说明问题。这里发生了什么,在这种情况下该怎么办?我将非常感激。PS....在本地调试模式下一切正常。此外,我创建了我的应用程序的副本并删除了除与 google-map 包相关的所有代码和依赖项并构建了新版本。没有地图出现。所以问题出在这个谷歌地图上,我认为没有依赖冲突。!!!另一项观察 - 图像选择器和 URL 启动器在从 Google Play 控制台发布时都不起作用。但是,如果我在本地运行 flutter run --release,一切都会好起来的。我想知道 - 也许我必须在 Play 控制台中添加一些访问策略或其他内容?
解决方案
经过很长时间的搜索,主要感谢 Ruslanbek0809 的帮助,我终于解决了这个问题。
在 android/app/build.gradle 我添加了:
shrinkResources false 和 minifyEnabled false 到 buildTypes
buildTypes {
release {
signingConfig signingConfigs.release
shrinkResources false
minifyEnabled false
}
}
奇迹发生了
推荐阅读
- android - Firebase 兼容性错误
- android - Android应用程序和库的奇怪问题
- reactjs - 使用分块对 React SSR 应用程序进行 A/B 测试
- java - 无法使用 IntelliJ 应用程序配置找到或加载主类
- scala - 将一列的总和转换为“val”(变量)
- javascript - 如何获得关于悬停在 SVG 圆圈上的工具提示
- python - 从仅包含 1 列的 csv 创建数据框。像这样的数据:[1,2,3], 0, 100
- python - 有没有更短的方法来初始化这个循环?
- oracle - 如何在 Method_4 中设置动态参数?
- python-3.x - 用 NaN 替换字符串中的值