81

I am new to Android development. By following this tutorial I got errors The import com.google.android.gms cannot be resolved when I wrote the code into the 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;

By searching for various fixes I made sure to try these out:

  • I have downloaded Google API's for a particular API level through Android SDK manager.
  • I checked off Google API as project build target.
  • I have added <uses-library android:name="com.google.android.maps" /> line into the AndroidManifest.xml as a child of <application> tag.
  • I cleaned the project by selecting Project->Clean... and built it from scratch.
  • I included .jar file for maps by right-clicking on my project, went to build path and added external archive locating it in my SDK: android-sdk-windows\add-ons\addon_google_apis_google_inc_8\libs\maps

Unfortunately, none of the above have helped.

Arnoldas Bendoraitis
  • 1,055
  • 1
  • 11
  • 17

13 Answers13

54

Another way is to let Eclipse do the import work for you. Hover your mouse over the com.google.android.gms import that can not be resolved and towards the bottom of the popup menu, select the Fix project setup... option as below. Then it'll prompt to import the google play services library. Select that and you should be good to go.

enter image description here

tipycalFlow
  • 7,594
  • 4
  • 34
  • 45
  • When I try this proposed solution, I receive this message: "No proposals have been found to fix the unresolvable reference to 'com.google.android.gms.internal.fn'. Click here to manually configure the build path or project 'CouponClub'." I already imported "google-play-services_lib" successfully, so I thought that would be enough to have access to com.google.android.gms.internal.fn. – Jaime Montoya Mar 27 '17 at 08:25
41

I checked off Google API as project build target.

That is irrelevant, as that is for Maps V1, and you are trying to use Maps V2.

I included .jar file for maps by right-clicking on my project, went to build path and added external archive locating it in my SDK: android-sdk-windows\add-ons\addon_google_apis_google_inc_8\libs\maps

This is doubly wrong.

First, never manually modify the build path in an Android project. If you are doing that, at best, you will crash at runtime, because the JAR you think you put in your project (via the manual build path change) is not in your APK. For an ordinary third-party JAR, put it in the libs/ directory of your project, which will add it to your build path automatically and add its contents to your APK file.

However, Maps V2 is not a JAR. It is an Android library project that contains a JAR. You need the whole library project.

You need to import the android-sdk-windows\add-ons\addon_google_apis_google_inc_8 project into Eclipse, then add it to your app as a reference to an Android library project.

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
  • 2
    You were right. I imported `google-play-services-lib` (which also contains the maps) then added it as a reference and those errors are now gone. Still I am not sure what to do about the `.jar` file already imported. Should I be concerned about deleting it somehow? – Arnoldas Bendoraitis Apr 13 '13 at 17:12
  • @ArnoldasBendoraitis: Undo the manual change you made to your build path. – CommonsWare Apr 13 '13 at 17:13
  • 3
    Clarification: Import the project into Eclipse using File → Import → Android → Existing Android Code into Workspace. And, of course, the directory you're looking for won't be called 'android-sdk-windows' if you're not using Windows. ;-) – Michael Scheper Feb 06 '14 at 03:49
  • 1
    @CommonsWare, Somehow if I add the Jar directly it works, but when I try to reference the project instead, it doesn't work. The reference shows the green tick when I do "Add". However, when I click "OK" and reopen Project > Properties, it turns to a red cross again. Do you know why this may be happening? – Pacerier Nov 26 '14 at 03:21
  • 1
    Maybe it's an update. But currently the path to import is \extras\google\google_play_services\libproject\google-play-services_lib – jasxir Jul 13 '15 at 04:28
19

From my experience (Eclipse):

  1. Added google-play-services_lib as a project and referenced it from my app.
  2. Removed all jars added manually
  3. Added google-play-services.jar in the "libs" folder of my project.
  4. I had some big issues because I messed up with the Order and Export tab, so the working solution is (in this order): src, gen, Google APIs, Android Dependencies, Android Private Libraries (only this one checked to be exported).
Luis Pena
  • 4,132
  • 2
  • 15
  • 23
Alex
  • 390
  • 4
  • 14
  • Why add the Play Services jar manually, if Gradle will take care of it for you in the build? – IgorGanapolsky Jan 16 '14 at 19:21
  • 5
    Because I didn't have time to convert my projects into Android Studio format using Gradle. This is a solution for Eclipse IDE. – Alex Jan 18 '14 at 08:19
15

In my case or all using android studio

you can import google play service

place in your build.gradle

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

or latest version of play services depend in time you watch this answer

More Specific import

please review this individual gradle imports

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

Google Maps

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

error may occurred

if you face error while you sync project with gradle files

enter image description here

make sure you install latest update

1- Android Support Repository.

2- Android Support Library.

3- Google Repository.

4-Google Play Services.

enter image description here

You may need restart your android studio to response

Mina Fawzy
  • 20,852
  • 17
  • 133
  • 156
7

Note that once you have imported the google-play-services_lib project into your IDE, you will also need to add google-play-services.jar to: Project=>Properties=>Java build path=>Libraries=>Add JARs

Phileo99
  • 5,581
  • 2
  • 46
  • 54
  • The most simple one line answer. I was not able to figure out what is happening even after importing Play Services. Then I tired changing it to Google_apis. Finally, a single line solution worked for me. – sud007 Jan 12 '15 at 13:49
  • Careful, this will cause problems: http://stackoverflow.com/questions/15894143/java-lang-noclassdeffounderror-com-google-android-gms-rstyleable-in-android – Mark Phillip Feb 07 '15 at 00:03
1

Above solutions should solve your problem. If these do not, make sure you update your Android sdk using SDK manager and install the latest lib project and then repeat the above steps again.

Mitech
  • 400
  • 4
  • 6
1

once again Make sure these 2 things happen correctly nothing more than that. (FOR ECLIPSE USERS)

1) copy the jar file from --> C:\Users(your-username)\android-sdks\extras\google\google_play_services\libproject\google-play-services_lib\libs\ google-play-services.jar

2) Right Click Project--> Build Path -> Add External Archive-> google-play-services.jar

Tech Guru
  • 27
  • 1
1

In Android Studio goto: File -> Project Structure... -> Notifications (last entry) -> check Google Cloud Messaging

Wait a few seconds and you're done :) import com.google.android.gms.gcm.GcmListenerService should be resolved properly

tony gil
  • 9,424
  • 6
  • 76
  • 100
s4uron
  • 31
  • 4
0

I too had the same issue. Got it resolved by compiling with the latest sdk tool versions.(Play services,build tools etc). Sample build.gradle is shown below for reference.

    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'
}
dreamdeveloper
  • 1,266
  • 1
  • 15
  • 20
0

Supposing that you are using ECLIPSE:

Right click PROJECT PROPERTIES ANDROID

If you have a version of ANDROID checked, you must change it to a GOOGLE API. Choose a version of GOOGLE APIS compatible with your project's target version.

tony gil
  • 9,424
  • 6
  • 76
  • 100
0

In my case just add the below code to the build.gradle(:app)

implementation 'com.google.android.gms:play-services-location:16.0.0'
adel parsa
  • 236
  • 2
  • 5
-1

In my case only after I added gcm.jar to lib folder, it started to work. It was here: C:\adt-bundle-windows-x86_64-20131030\sdk\extras\google\gcm\gcm-client\dist

So the google-play-services.jar didn't work...

AlexVogel
  • 10,601
  • 10
  • 61
  • 71
RealNmae
  • 630
  • 9
  • 20
-3

I had the same problem so that the dumb API I decided as follows changing the import line

import com.google.android.gms.maps.model.LatLng;
thor
  • 21,418
  • 31
  • 87
  • 173
Leonardo
  • 23
  • 4