95

I'm trying to test Google Play Services with the new Android Studio. I have a project with a dependency to the google_play_services.jar. But when I try to Rebuild the project I get the following errors:

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

It seems that it has two BuildConfig files and also two R classes. How can I resolve the issue?

EDIT:

I have noticed that the compiler compiles two R.java files: the one that is in my project folder and another one that is located in the folder %USERPROFILE%.AndroidStudioPreview So, I tried to exclude this "Preview" folder in the compiler settings and now it's working. This issue only occurs after I have started to use Google Play Services classes in my project. I will appreciate if someone can explain the reason behind this problem.

androidtester
  • 963
  • 1
  • 8
  • 13
  • Anyone can help what this compile 'com.google.android.gms:play-services:6.5.87' does while added to dependencies section in android studio. We can add the jar also but what the above line does as we are not adding jars. – Android Killer Jun 24 '15 at 10:10

11 Answers11

244

All those answers are wrong, since the release of gradle plugin v0.4.2 the setup of google play services under android studio is straight forward. You don't need to import any jar or add any project library nor add any new module under android studio. What you have to do is to add the correct dependencies into the build.gradle file. Please take a look to those links: Gradle plugin v0.4.2 update, New Build System, and this sample

The Correct way to do so is as follows:

First of all you have to launch the sdk manager and download and install the following files located under "extras": Android support repository, Google play services, Google repository.

Restart android studio and open the build gradle file. You must modify your build.gradle file to look like this under dependencies:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

And finally syncronise your project (the button to the left of the AVD manager).

Since version 6.5 you can include the complete library (very large) or just the modules that you need (Best Option). I.e if you only need Google Maps and Analytics you can replace the previous example with the following one:

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

You can find the complete dependency list here

Some side notes:

  • Use the latest play services library version. If it's an old version, android studio will highlight it. As of today (February 5th is 6.5.87) but you can check the latest version at Gradle Please
  • After a major update of Android Studio, clean an rebuild your project by following the next instructions as suggested in the comments by @user123321

    cd to your project folder
    ./gradlew clean
    ./gradlew build

Imanol
  • 4,824
  • 2
  • 28
  • 35
  • hey Estornino. i saw this update too, but i was wondering how Android Studio (the IDE itself at least) picks up the dependencies ? did you get it to work with just the Gradle settings ? – victor n. Jul 06 '13 at 08:48
  • yes it worked for me. the IDE also is able to resolve the new names. thanks. – victor n. Jul 06 '13 at 18:48
  • Sorry for the late reply. When you press the syncronize button the ide adds the new dependencies automatically. It's the build system who rules the ide behavior and it's discouraged to make change to the project in the "old" idea style (I mean changing the modules and project config). I'm glad that it's working for you. – Imanol Jul 13 '13 at 10:22
  • Yes. This is the correct answer. Scrap the copy of google play services in your project structure, and add this dependency line. DONE. Thanks! – Eric Schlenz Jul 19 '13 at 16:11
  • don't forget this part: "And finally syncronize your project (the button to the left of the avd manager)" – whoabackoff Aug 12 '13 at 17:58
  • Jezus, I spent 2 full days getting this to work. Turns out my project was created in Android Studio 1.9, these projects are NOT compatible.. Created a fresh project, added this dependency and stuff works in 2 minutes.. Thanks – Rob Aug 13 '13 at 06:47
  • Hey where did you find this documented? – jophde Aug 24 '13 at 15:08
  • Take a look at the links that I put on my answer – Imanol Aug 26 '13 at 07:15
  • 5
    Make sure you ./gradlew clean then ./gradlew build before android studio 2.x will pick up the dependancy. Otherwise you get a NoClassDef error – user123321 Aug 27 '13 at 23:32
  • How do I find out the latest version of google play services? – Sven Haiges Oct 25 '13 at 12:18
  • Just check out this page for the latest version of every gradle dependency: http://gradleplease.appspot.com/ – Imanol Oct 26 '13 at 07:41
  • Tips : Make sure you use the the good `Android SDK Manager` bundle with your `Android Studio` installation (jetbrain). On my mac it was here `/Applications/Android Studio.app/sdk/tools/android` – Maxence Nov 05 '13 at 13:44
  • How do you get attached source and doc? – powder366 Jun 29 '14 at 14:54
  • 2
    As of today, latest build I got was 5.2.08 – chrisbjr Aug 17 '14 at 09:51
  • @chrisbjr. Thanks for the version change. I keep getting compile failures since gradle could not find the older versions. Right now I have added the ":+" on the end to get the latest version. Hopefully I will not break when next update comes down. – JerryKur Sep 05 '14 at 22:00
  • Any ideas to how integrate C++ SDK for gps to android studio? – Ams Aug 29 '17 at 20:48
116
  1. Go to File -> Project Structure
  2. Select 'Project Settings'
  3. Select 'Dependencies' Tab
  4. Click '+' and select '1.Library Dependencies'
  5. Search for : com.google.android.gms:play-services
  6. Select the latest version and click 'OK'

Voila! No need to fight with Gradle :)

Ivo Stoyanov
  • 16,256
  • 8
  • 62
  • 65
5

EDITED: This guy really brought it home and has a good little tutorial http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

one side note: I had played around so much that I needed to do a gradlew clean to get it to run succesfully

If you have imported your project or are working from the Sample Maps application located in \extras\google\google_play_services\samples\maps check out this tutorial.

https://stackoverflow.com/a/16598478/2414698

If you are creating a new project from scratch then note Xav's comments on that same post. He describes that Android Studio uses a different compiler and that you have to modify the build.gradle file manually. I did this with success. I copied

  • google-play-services.jar
  • google-play-services.jar.properties

into my lib directory and added the following to my build.gradle file

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

Also, if this is a new project check out this post, too.

https://stackoverflow.com/a/16671865/2414698

Community
  • 1
  • 1
4

Most of these answers only address compile-time dependencies, but you'll find a host of NoClassDef exceptions at runtime. That's because you need more than the google-play-services.jar. It references resources that are part of the library project, and those are not included correctly if you only have the jar.

What worked best for me was to first get the project setup correctly in eclipse. Have your project structured so that it includes both your app and the library, as described here: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Then export your app project from eclipse, and import into Android Studio as described here: http://developer.android.com/sdk/installing/migrate.html. Make sure to export both your app project and the google play services library project. When importing it will detect the library project and import it as a module. I just accepted all defaults during the project import process.

2

Google Play services Integration in Android studio.

Step 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

Step 2:

chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

Step 3:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

Step 4:

Sync project file with grandle.
wait for few minute.

Step 5:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

Please put comment if you have require help. Happy coding.

Harshid
  • 5,701
  • 4
  • 37
  • 50
2

None of the above solution worked for me. Not sure if it is specific to my setup or new release.

I am using Android Studio Beta 0.8.9 and I was not getting any com.google.android.gms:play-service in the library list on following this instruction:

Go to File -> Project Structure -> Select Project Settings -> Select 'Dependencies' Tab Click '+' -> 1.Library Dependencies -> Select com.google.android.gms:play-services:+

I had already done this:

First of all you have to launch the sdk manager and download and install the following files located under "extras": Android support repository, Google play services, Google repository.

What resolved it was to add from SDK Manager, "Google play services for Froyo" then repeating the first step.

Did not understand the reason properly but this worked.

PS: I just observed that even now when I search for play-services this does not come, but when I directly scroll and look through the list it is right there.

Selfx Aadhyant
  • 363
  • 3
  • 8
2

Follow this article -> http://developer.android.com/google/play-services/setup.html

You should to choose Using Android Studio

enter image description here

Example Gradle file:

Note: Open the build.gradle file inside your application module directory.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

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

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

You can find latest version of Google Play Services here: https://developer.android.com/google/play-services/index.html

d.danailov
  • 9,594
  • 4
  • 51
  • 36
1

I've got this working after doing the following:

  • Have the google-play-services-lib as a module (note difference between module and project), then add the google-play-services.jar to your models "libs" directory.
  • After that add the jar to your build path through making a library or add the jar to another library. I generally have a single IDEA library which I add all my /libs/*.jar files to.
  • Add the library to your modules build path through Module Settings (F4).
  • Add the google-play-services-lib as a module dependency to your project.
  • Done!

Note: This doesn't give me the runtime exceptions either, it works.

Johan S
  • 3,531
  • 6
  • 35
  • 63
0

Open your project build.gradle file and add below line under dependencies module.

dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

The below will be add Google Analytics and Maps if you don't want to integrate full library

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}
Pankaj
  • 7,908
  • 6
  • 42
  • 65
0

In my case google-play-services_lib are integrate as module (External Libs) for Google map & GCM in my project.

Now, these time require to implement Google Places Autocomplete API but problem is that's code are new and my libs are old so some class not found:

following these steps...

1> Update Google play service into SDK Manager

2> select new .jar file of google play service (Sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs) replace with old one

i got success...!!!

Dhruv Raval
  • 4,946
  • 3
  • 29
  • 34
-3

I copied the play libs files from the google-play-services_lib to my project libs directory:

  • google-play-services.jar
  • google-play-services.jar.properties.

Then selected them, right-click, "Add as libraries".

  • 1
    Thanks for your answaer but it didn't work for me - it's similar to something that I had tried before. – androidtester May 18 '13 at 16:19
  • This advice goes against other information I've read elsewhere. The answer linked to in the first answer has been deprecated because it uses this method. – RevNoah Jul 07 '13 at 20:37