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。
打开应用的清单文件并将以下标记添加为 <application>
元素的子元素:
<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'. > 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" />
试试这个,它会做的工作......
【讨论】:
嘿它在我的应用程序中不起作用我使用了这个<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" />
它在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'. > Manifest merger failed with multiple errors, see logs
ty 回复我也是这样做的。所以赞成你的评论。 :) 你能帮我解决这个错误吗?
它说manifest文件有错误你能把manifest文件代码放上来吗
我正在使用这段代码<meta-data> android:name="com.google.android.maps.v2.API_KEY" android:value="API_KEY"</meta-data> <meta-data> android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"</meta-data>
【参考方案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:无法解析符号“地图”的主要内容,如果未能解决你的问题,请参考以下文章