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


74

我是Android开发的新手。通过遵循本教程The import com.google.android.gms cannot be resolved,我在将代码写入时遇到了错误MainActivity.java

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选中为项目构建目标。
  • 我已将<uses-library android:name="com.google.android.maps" /> 行添加AndroidManifest.xml<application>标签的子项。
  • 我通过选择Project->Clean...并从头开始构建了该项目。
  • .jar通过右键单击我的项目,我包含了用于地图的文件,转到了构建路径,并添加了将其定位在我的SDK中的外部存档:android-sdk-windows\add-ons\addon_google_apis_google_inc_8\libs\maps

不幸的是,以上方法均无济于事。

Answers:


40

我已将Google API选中为项目构建目标。

这是无关紧要的,因为对于Maps V1,这是不相关的,并且您正在尝试使用Maps V2。

通过右键单击我的项目,我包括了地图的.jar文件,转到了构建路径,并添加了将其定位在我的SDK中的外部存档:android-sdk-windows \ add-ons \ addon_google_apis_google_inc_8 \ libs \ maps

这是双重错误。

首先,切勿在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已导入的文件。我应该担心以某种方式删除它吗?
阿诺德氏菌炎

@ArnoldasBendoraitis:撤消对构建路径所做的手动更改。
CommonsWare

3
澄清:使用文件→导入→Android→现有Android代码将项目导入Eclipse到Workspace。而且,当然,如果您未使用Windows,则您要查找的目录将不会被称为“ android-sdk-windows”。;-)
Michael Scheper 2014年

1
@CommonsWare,以某种方式,如果我直接添加Jar,它将起作用,但是当我尝试引用该项目时,它将无法起作用。当我执行“添加”时,参考显示绿色对勾。但是,当我单击“确定”并重新打开“项目”>“属性”时,它再次变成红叉。您知道为什么会这样吗?
Pacerier 2014年

1
也许是更新。但是目前导入的路径为<sdk> \ extras \ google \ google_play_services \ libproject \ google-play-services_lib
jasxir 2015年

54

另一种方法是让Eclipse为您完成导入工作。将鼠标悬停com.google.android.gms在无法解决的导入上,并在弹出菜单的底部,选择“修复项目设置...”选项,如下所示。然后,它会提示您导入Google Play服务库。选择那个,你应该会很好。

在此处输入图片说明


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

19

根据我的经验(Eclipse):

  1. 将google-play-services_lib添加为项目,并从我的应用中引用了它。
  2. 删除了所有手动添加的罐子
  3. 在我项目的“ libs”文件夹中添加了google-play-services.jar。
  4. 我遇到了一些大问题,因为我搞砸了“顺序和导出”选项卡,因此,有效的解决方案是(按此顺序):src,gen,Google API,Android依赖关系,Android私有库(仅选中此一个即可导出)。

如果Gradle在构建过程中会为您提供帮助,为什么还要手动添加Play Services jar?
IgorGanapolsky 2014年

5
因为我没有时间使用Gradle将项目转换为Android Studio格式。这是Eclipse IDE的解决方案。
Alex

13

就我而言还是全部使用android studio

您可以导入Google Play服务

放在你的 build.gradle

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

或播放服务的最新版本取决于您观看此答案的时间

更具体的进口

请查看此单个gradle导入

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

谷歌地图

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

可能发生错误

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

在此处输入图片说明

确保您安装了最新更新

1- Android支持存储库。

2- Android支持库。

3- Google存储库。

4-Google Play服务。

在此处输入图片说明

您可能需要重新启动android studio才能响应


7

请注意,将google-play-services_lib项目导入到IDE中后,您还需要将google-play-services.jar添加到:Project => Properties => Java build path => Libraries => Add JARs


最简单的一行答案。即使导入Play服务,我也无法弄清楚发生了什么。然后,我厌倦了将其更改为Google_apis。最后,单行解决方案对我有用。
sud007


1

以上解决方案应该可以解决您的问题。如果没有,请确保使用SDK Manager更新Android sdk并安装最新的lib项目,然后再次重复上述步骤。


1

再次确保这两件事正确无误。(对于日食用户)

1)从-> C:\ Users(您的用户名)\ android-sdks \ extras \ google \ google_play_services \ libproject \ google-play-services_lib \ libs \ google-play-services.jar复制jar文件

2)右键单击Project->构建路径-> Add External Archive-> google-play-services.jar


1

在Android Studio中,转到:文件->项目结构...->通知(最后输入)->检查Google Cloud Messaging

等待几秒钟,您就可以完成:) import com.google.android.gms.gcm.GcmListenerService应该可以正确解析


0

我也有同样的问题。通过使用最新的sdk工具版本(播放服务,构建工具等)进行编译可以解决该问题。下面显示了样本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:

右键单击PROJECT PROPERTIES ANDROID

如果您检查了ANDROID的版本,则必须将其更改为GOOGLE API。选择与您的项目目标版本兼容的GOOGLE APIS版本。


1
请详细说明。
德米特里·伊萨科夫

@DmitryIsakov想让我澄清什么步骤?
tony gil

1
看起来我做到了……从Eclipse迁移到AStudio并非易事
Dmitry Isakov

@DmitryIsakov-我尝试并且不得不停下来,因为我负担不起从开发中抽出时间,将其专用于迁移。您能告诉我您采取的一些基本步骤吗?
tony gil

-1

就我而言,只有添加gcm.jar到lib文件夹后,它才能开始工作。在这里:C:\adt-bundle-windows-x86_64-20131030\sdk\extras\google\gcm\gcm-client\dist

所以google-play-services.jar没用...


这个问题与Google Map v1无关。关于Google Map v2。gcm.jar在这种情况下是没有用的。
cmcromance

-3

我遇到了同样的问题,因此我决定按照以下步骤更改哑巴API

import com.google.android.gms.maps.model.LatLng;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.