com.google.android.gms.maps.MapFragment:无法解析符号“地图”

Posted

技术标签:

【中文标题】com.google.android.gms.maps.MapFragment:无法解析符号“地图”【英文标题】:com.google.android.gms.maps.MapFragment: Cannot resolve symbol "maps" 【发布时间】:2015-01-10 03:24:28 【问题描述】:

我按照这里的所有指示都没有问题:

https://developers.google.com/maps/documentation/android/start#getting_the_google_maps_android_api_v2

最后,我按照最后一条指令测试地图是否正常工作,更新我的 activity_map.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/map"
          android:layout_
          android:layout_
          android:name="com.google.android.gms.maps.MapFragment"/>

但是,在最后一行中,com.google 之后的所有内容都是红色的,并且在鼠标悬停时我收到消息“无法解析符号 'MapFragment'。

现在任何想法都会有很大帮助。

【问题讨论】:

您是否在项目中添加了 Google Play Services 库? 我正在使用 Android Studio。我通过 Android SDK 管理器下载了 Google Play 服务和 Google 存储库,并使用以下代码更新了我的清单(当然,使用实际密钥): 您的build.gradle 中是否有compile 'com.google.android.gms:play-services:5.+' 这样的行? 它有:dependencies compile 'com.google.android.gms:play-services:6.1.11' 编辑:显然该特定版本存在一些问题。当我将其更改为您已解决的问题时。谢谢!如果你想把它作为回应,我会投票作为答案 【参考方案1】:

执行以下操作来解决问题:

最后:点击“+”按钮

之后,清理并重建项目!

【讨论】:

接受的答案没有任何帮助。这个是正确的答案,我试过了。所以我投票这个答案作为问题的真实答案。我希望您的回答也详细描述了如何通过单击 + 按钮添加 Play-store 依赖库,以使其更加清晰。 这个答案有效。然而,步骤还很不清楚。对我来说,最重要的一步是添加com.google.android.gms:play-services:8.3.0。在上一个屏幕截图中很难破译。 对我来说,我只需要添加 com.google.android.gms:play-services-maps:8.x.x 而不是整个 play-services 对我来说,从 Android 版本 2.0 开始,请尝试以下操作:在模拟器运行或未运行时,在工具栏中单击从停止按钮向右下方的 2 个选项以进入项目结构,然后单击您的模块下的项目/应用程序并转到依赖项选项卡,单击 + 按钮选择:com.google.android.gms:play-services-maps:8.4.0。点击确定,重建。编译错误应该会消失。 当前 Android Studio 版本的“项目结构”窗口中没有“编译”范围之类的选项。这与“仅编译”相同吗?【参考方案2】:

将 google play 服务添加到您的项目中

使 Google Play 服务 API 可用于您的应用:

    打开应用程序模块目录中的 build.gradle 文件。

    在最新版本的播放服务的依赖项下添加新的构建规则

例子

apply plugin: 'com.android.application'
...

dependencies 
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.google.android.gms:play-services:6.5.87'

    保存更改并单击工具栏中的 Sync Project with Gradle Files。

    打开应用的清单文件并将以下标记添加为 &lt;application&gt; 元素的子元素:

    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

此步骤将消除上述错误。此特定解决方案仅适用于 android studio。

欲了解更多信息,请访问:http://developer.android.com/google/play-services/setup.html

【讨论】:

真棒一步一步的回答+1【参考方案3】:
implementation "com.google.android.gms:play-services-location:15.0.1"
implementation "com.google.android.gms:play-services-places:15.0.1"

【讨论】:

gms:play-services-places 对我来说确实不见了。【参考方案4】:

尝试在清单文件中添加以下行:

添加关注权限

<permission
        android:name="com.example.mapexdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

并添加以下行:

 <meta-data
       android:name="com.google.android.maps.v2.API_KEY"
       android:value="AIzaSyDxEkfvGvKy.........your api key" />

  <meta-data android:name="com.google.android.gms.version"
      android:value="@integer/google_play_services_version" />

【讨论】:

希望对您有所帮助! 我正在更新一个基于 Eclipse 构建的应用程序,现在我正在使用 android studio 并使用不同的包名称,它是否会影响它,因为所有 apk 的包名称都有其密钥。我的错误日志是Error:(50, 5) Missing 'name' key attribute on element meta-data at AndroidManifest.xml:50:5 Error:(51, 9) Missing 'name' key attribute on element meta-data at AndroidManifest.xml:51:9 Error:Execution failed for task ':app:processDebugManifest'. &gt; Manifest merger failed with multiple errors, see logs 在添加 com.google.android.maps.v2.API_KEY 后它对我有用。谢谢【参考方案5】:

将以下库添加到 app gradle。

implementation "com.google.android.gms:play-services-location:17.0.0"
implementation "com.google.android.gms:play-services-places:17.0.0"

【讨论】:

【参考方案6】:

您需要使用支持图片段

<fragment
    android:id="@+id/map"
    android:layout_
    android:layout_
    class="com.google.android.gms.maps.SupportMapFragment" />

试试这个,它会做的工作......

【讨论】:

嘿它在我的应用程序中不起作用我使用了这个&lt;fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" /&gt; 它在android.gms.maps.SupportMapFragment 下显示红线。你能帮忙吗 是的,我补充说问题已解决,但出现了新问题Error:(50, 5) Missing 'name' key attribute on element meta-data at AndroidManifest.xml:50:5 Error:(51, 9) Missing 'name' key attribute on element meta-data at AndroidManifest.xml:51:9 Error:Execution failed for task ':app:processDebugManifest'. &gt; Manifest merger failed with multiple errors, see logs ty 回复我也是这样做的。所以赞成你的评论。 :) 你能帮我解决这个错误吗? 它说manifest文件有错误你能把manifest文件代码放上来吗 我正在使用这段代码&lt;meta-data&gt; android:name="com.google.android.maps.v2.API_KEY" android:value="API_KEY"&lt;/meta-data&gt; &lt;meta-data&gt; android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"&lt;/meta-data&gt;【参考方案7】:

我通过将 android SDK 位置移动到没有空格的文件夹来解决了这个问题。

说明:

    从android studio打开SDK Manager 导航到:

    系统设置 > Android SDK,

    查看Android SDK Location(倒数第三行)文件夹名称是否包含空格(如c:\My Documents\Android\SDK) 使用 windows 文件资源管理器创建一个新文件夹并复制内容 现在使用 SDK Manger 类型编辑并更改到新文件夹

【讨论】:

【参考方案8】:

我有同样的问题。我也更新了 google play 服务。

添加以下行,帮助我解决了编译问题:

compile 'com.google.android.gms:play-services-maps:10.0.0'

到您的app.gradle

【讨论】:

以上是关于com.google.android.gms.maps.MapFragment:无法解析符号“地图”的主要内容,如果未能解决你的问题,请参考以下文章