导入com.google.android.gms无法解析。

81

我刚开始学习安卓开发。按照这篇教程操作时,在MainActivity.java中编写代码时出现了错误The import com.google.android.gms cannot be resolved

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

通过寻找各种解决方案,我确认尝试了以下步骤:

  • 通过Android SDK管理器下载了特定API级别的Google API。
  • 将Google API设置为项目构建目标。
  • AndroidManifest.xml文件中添加了<uses-library android:name="com.google.android.maps" />行作为<application>标签的子元素。
  • 通过选择Project->Clean...清理了项目并从头构建了它。
  • 通过右键单击我的项目,进入构建路径,并添加位于我的SDK中的外部存档android-sdk-windows\add-ons\addon_google_apis_google_inc_8\libs\maps,以包括地图的.jar文件。

不幸的是,以上任何一项都没有起作用。

13个回答

55
另一种方法是让Eclipse为您完成导入工作。将鼠标悬停在无法解析的com.google.android.gms导入上,并向下滚动弹出菜单,选择如下所示的Fix project setup...选项。然后它会提示您导入Google Play服务库。选择它,你就可以开始使用了。

当我尝试使用这个提议的解决方案时,我收到了这个消息:“未找到修复对'com.google.android.gms.internal.fn'无法解决的引用的建议。单击此处手动配置构建路径或项目“CouponClub”。”我已经成功导入了“google-play-services_lib”,所以我认为这应该足以访问com.google.android.gms.internal.fn。 - Jaime Montoya

41
我将Google API作为项目的构建目标进行了勾选。
那是无关紧要的,因为那是Maps V1的,你正试图使用Maps V2。
我通过右键单击我的项目并在构建路径中添加外部存档(.jar文件)来包含地图。这样做是双重错误。
首先,在Android项目中永远不要手动修改构建路径。如果您这样做,最好的情况下,您将在运行时崩溃,因为您认为已经将JAR(通过手动更改构建路径)放入项目中,但实际上它并未包含在您的APK文件中。对于普通的第三方JAR,将其放入项目的libs/目录中,这将自动将其添加到您的构建路径中,并将其内容添加到APK文件中。
然而,Maps V2不是一个JAR文件,而是包含JAR文件的Android库项目。你需要整个库项目。
您需要将android-sdk-windows\add-ons\addon_google_apis_google_inc_8项目导入Eclipse,然后将其作为Android库项目引用到您的应用程序中

2
你是对的。我导入了 google-play-services-lib(其中也包含地图),然后将其添加为引用,这些错误现在已经消失了。但我仍然不确定如何处理已经导入的 .jar 文件。我应该担心删除它吗? - Arnoldas Bendoraitis
@ArnoldasBendoraitis:撤销您对构建路径所做的手动更改。 - CommonsWare
3
澄清:使用“文件(File) → 导入(Import) → Android → 从现有代码导入 Android 项目(Existing Android Code into Workspace)”将该项目导入到Eclipse中。当然,如果您不使用Windows操作系统,那么您要查找的目录名称将不会叫做“android-sdk-windows”。;-) - Michael Scheper
1
@CommonsWare,不知何故,如果我直接添加Jar文件,它可以工作,但是当我尝试引用项目时,它就无法工作了。当我执行“添加”操作时,引用会显示绿色的勾号。然而,当我单击“确定”并重新打开“项目属性”时,它又变成了红色的叉号。您知道这可能是为什么吗? - Pacerier
1
也许这是一次更新,但目前导入的路径为 <sdk>\extras\google\google_play_services\libproject\google-play-services_lib - jasxir

19

根据我的经验(Eclipse):

  1. 将google-play-services_lib作为项目添加并从我的应用程序中引用它。
  2. 移除所有手动添加的jar包。
  3. 在我的项目的“libs”文件夹中添加google-play-services.jar。
  4. 我曾经遇到一些大问题,因为我搞糊涂了“顺序和导出”选项卡,所以有效的解决方案是(按照以下顺序):src、gen、Google APIs、Android Dependencies、Android Private Libraries(只有勾选此项才会被导出)。

为什么要手动添加Play Services jar包,如果Gradle会在构建中自动处理它呢? - IgorGanapolsky
5
由于我没有时间使用 Gradle 将我的项目转换为 Android Studio 格式,因此这里提供了适用于 Eclipse IDE 的解决方案。 - Alex

15

在我的情况或者所有使用 Android Studio 的人都可以导入 Google Play 服务,在你的 build.gradle 文件中添加。

compile 'com.google.android.gms:play-services:7.8.0'

根据您观看此答案的时间,请使用最新版本的 Play 服务。

更具体的导入

请检查这些个别 Gradle 导入。

https://developers.google.com/android/guides/setup

Google 地图

com.google.android.gms:play-services-maps:7.8.0

可能会出现错误

如果您在与Gradle文件同步项目时遇到错误

enter image description here

请确保您安装了最新的更新

1- Android支持库。

2- Android支持库Library。

3- Google存储库。

4-Google Play服务。

enter image description here

您可能需要重新启动Android Studio才能响应


7
请注意,一旦您将google-play-services_lib项目导入到IDE中,您还需要将google-play-services.jar添加到以下位置: Project=>Properties=>Java build path=>Libraries=>Add JARs
(注:本文涉及IT技术相关内容,已尽可能使翻译更加通俗易懂,但仍可能存在专业术语和技术性较强的内容。)

最简单的一行答案。即使导入了Play服务,我也无法弄清楚发生了什么。然后我尝试将其更改为Google_apis。最终,一个单行解决方案适用于我。 - sud007
小心,这会引起问题: https://dev59.com/5uo6XIcBkEYKwwoYNBln - Mark Phillip

1
请再次确认这两件事情是否正确进行,不要做其他操作。 (对于Eclipse用户) 1) 从--> C:\Users(你的用户名)\android-sdks\extras\google\google_play_services\libproject\google-play-services_lib\libs\ 中复制jar文件 google-play-services.jar 2) 右键点击项目--> Build Path -> Add External Archive-->google-play-services.jar

1
以上解决方案应该可以解决您的问题。如果这些方法不能解决问题,请确保使用SDK管理器更新您的Android SDK并安装最新的库项目,然后再次重复上述步骤。

1
在Android Studio中前往: 文件 -> 项目结构... -> 通知(最后一个条目) -> 勾选Google Cloud Messaging
等待几秒钟,就完成了 :) import com.google.android.gms.gcm.GcmListenerService 应该被正确解决。

0

我也遇到了同样的问题。通过使用最新的sdk工具版本(Play服务,构建工具等)进行编译来解决它。下面是参考用的示例build.gradle。

    apply plugin: 'com.android.application'


android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.abc.bcd"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.android.support:appcompat-v7:23.0.1'
}

0

假设您正在使用ECLIPSE:

右键单击项目 属性 ANDROID

如果您已经勾选了一个ANDROID版本,则必须将其更改为GOOGLE API。 选择与您的项目目标版本兼容的GOOGLE API版本。


1
请详细解释。 - Dmitry Isakov
@DmitryIsakov,您需要我澄清哪一步? - tony gil
1
看起来我做到了...从Eclipse迁移到AStudio并不是一项容易的任务。 - Dmitry Isakov
@DmitryIsakov - 我尝试过,但不得不停下来,因为我无法承担从开发中抽出时间并将其用于迁移。您能告诉我一些您所采取的基本步骤吗? - tony gil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接