【问题标题】:Flutter google maps - API key not found颤振谷歌地图 - 未找到 API 密钥
【发布时间】:2021-07-10 22:31:59
【问题描述】:

我正在尝试按照this 教程设置谷歌地图,但我遇到了一些问题。我的应用程序运行,但我看到一个白屏,没有任何事情发生,并且以下错误被打印到终端:

E/MethodChannel#flutter/platform_views(13225): Failed to handle method call
E/MethodChannel#flutter/platform_views(13225): java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml

这很奇怪,因为我的AndroidManifest.xml 看起来像这样:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.studievriend">
    <!-- Flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <application>
        <meta-data android:name="com.google.android.geo.API_KEY" android:value="AIxxxxxxxxxxx-xxxxxxxxxxxxxxx_xxxxxx"/>
    </application>
</manifest>

这正是错误所要求的,所以我不知道出了什么问题。我查看了其他线程并做了一些建议的事情,例如运行删除应用程序 flutter clean 并重试 flutter run,这也不起作用。

这些是我在 pubspec.yaml 中的依赖项

dependencies:
  flutter:
    sdk: flutter
  location: ^4.1.1
  cloud_firestore: ^1.0.5
  firebase_core: ^1.0.3
  google_maps_flutter: ^2.0.3

我也想添加geoflutterfire: ^2.0.2,但出现以下错误

Because geoflutterfire >=2.2.2 <3.0.0-nullsafety.1 depends on cloud_firestore ^0.16.0 and studievriend depends on cloud_firestore ^1.0.5, geoflutterfire >=2.2.2 <3.0.0-nullsafety.1 is forbidden.

So, because studievriend depends on geoflutterfire ^2.2.2, version solving failed.

我也尝试了一些其他版本,但我不断收到错误。

如果有人能帮我解决这个问题,我将不胜感激!

【问题讨论】:

  • 看起来与此issue 类似,并已通过关注此guide 解决
  • @NelsonJr。我今天创建了这个项目,所以我认为这不适用于我

标签: android flutter google-maps google-cloud-firestore


【解决方案1】:

您使用了错误的 AndroidManifest.xml。请使用 app 目录中的 AndroidManifest.xml,而不是调试目录中的 AndroidManifest.xml。调试清单仅用于颤振本身。正确的应该在这个位置:

android\app\src\main\AndroidManifest.xml

对于您的其他错误,您可能需要导入较低版本的 geoflutterfire,因为存在版本冲突。您导入了 cloud_firestore: ^1.0.5,但 geofluttefire 依赖于较新的版本。

【讨论】:

  • 谢谢,没错,我没看到还有另一个 AndroidManifest。错误现在消失了,但应用程序真的很慢,在黑屏 2 分钟后,我看到了一半拉伸的无响应地图。这是终端 pastebin.com/nUwcrj9Z 中的输出。知道有什么问题吗?另外,1.0.5 是最新版本的 cloud_firestore (pub.dev/packages/cloud_firestore),那么 geoflutterfire 是如何依赖更新的呢?
  • @JipHarthoorn 你是对的,我打错了:/ 它应该是旧版本的 firestore。请尝试导入最新版本的 geoflutterfire,即 3.0.0 nullsafety 版本。您能否提供用于显示地图的代码以及您正在测试的设备?
  • @Irsvmb nullsafety 有效!我的 main.dart 看起来像这样:pastebin.com/j2N1F3E0。这与他们在本教程中使用的代码相同:fireship.io/lessons/flutter-realtime-geolocation-firebase
  • @JipHarthoorn 你在什么设备上测试它?您的应用中是否还有其他服务正在运行?
  • @Irsvmb 抱歉忘了提,我在三星 Galaxy S8 上运行该应用程序,我认为我没有运行任何其他服务,不知道您的意思。
猜你喜欢
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多