Android Studio avec les services Google Play

95

J'essaie de tester les services Google Play avec le nouvel Android Studio. J'ai un projet avec une dépendance à google_play_services.jar. Mais lorsque j'essaye de reconstruire le projet, j'obtiens les erreurs suivantes:

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

Il semble qu'il ait deux fichiers BuildConfig et aussi deux classes R. Comment puis-je résoudre le problème?

ÉDITER:

J'ai remarqué que le compilateur compile deux fichiers R.java: celui qui se trouve dans mon dossier de projet et un autre qui se trouve dans le dossier% USERPROFILE% .AndroidStudioPreview Donc, j'ai essayé d'exclure ce dossier "Preview" dans les paramètres du compilateur et maintenant ça marche. Ce problème ne survient qu'après avoir commencé à utiliser les classes des services Google Play dans mon projet. J'apprécierai si quelqu'un peut expliquer la raison de ce problème.

androidtester
la source
Tout le monde peut aider ce que cette compilation 'com.google.android.gms: play-services: 6.5.87' fait lorsqu'elle est ajoutée à la section des dépendances dans Android Studio. Nous pouvons également ajouter le jar mais ce que fait la ligne ci-dessus car nous n'ajoutons pas de jars.
Android Killer

Réponses:

243

Toutes ces réponses sont fausses, depuis la sortie du plugin gradle v0.4.2, la configuration des services Google Play sous Android Studio est simple. Vous n'avez pas besoin d'importer de jar ou d'ajouter une bibliothèque de projet ni d'ajouter de nouveau module sous Android Studio. Ce que vous devez faire est d'ajouter les dépendances correctes dans le fichier build.gradle. Veuillez jeter un œil à ces liens: mise à jour du plugin Gradle v0.4.2 , nouveau système de construction et cet exemple

La bonne façon de procéder est la suivante:

Tout d'abord, vous devez lancer le gestionnaire sdk et télécharger et installer les fichiers suivants situés sous "extras": référentiel de support Android , services Google play , référentiel Google .

Redémarrez android studio et ouvrez le fichier gradle de construction. Vous devez modifier votre fichier build.gradle pour qu'il ressemble à ceci sous les dépendances:

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

Et enfin, synchronisez votre projet (le bouton à gauche du gestionnaire AVD).

Depuis la version 6.5, vous pouvez inclure la bibliothèque complète (très grande) ou simplement les modules dont vous avez besoin (meilleure option). Par exemple, si vous n'avez besoin que de Google Maps et Analytics, vous pouvez remplacer l'exemple précédent par le suivant:

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

Vous pouvez trouver la liste complète des dépendances ici

Quelques notes secondaires:

  • Utilisez la dernière version de la bibliothèque de services de lecture. S'il s'agit d'une ancienne version, Android Studio la mettra en évidence. À partir d'aujourd'hui (le 5 février est 6.5.87) mais vous pouvez consulter la dernière version sur Gradle Please
  • Après une mise à jour majeure d'Android Studio, nettoyez et reconstruisez votre projet en suivant les instructions suivantes comme suggéré dans les commentaires de @ user123321

    cd dans le dossier de votre projet
    ./gradlew clean
    ./gradlew build

Imanol
la source
salut Estornino. J'ai aussi vu cette mise à jour, mais je me demandais comment Android Studio (au moins l'IDE lui-même) récupérait les dépendances? l'avez-vous fait fonctionner uniquement avec les paramètres Gradle?
victor n.
oui cela a fonctionné pour moi. l'EDI est également capable de résoudre les nouveaux noms. Merci.
victor n.
Désolé pour la réponse tardive. Lorsque vous appuyez sur le bouton de synchronisation, l'ide ajoute automatiquement les nouvelles dépendances. C'est le système de construction qui régit le comportement d'ide et il est déconseillé d'apporter des modifications au projet dans le style d'idée «ancien» (je veux dire changer les modules et la configuration du projet). Je suis content que ça marche pour toi.
Imanol
5
Assurez-vous que ./gradlew nettoie puis ./gradlew build avant que android studio 2.x ne récupère la dépendance. Sinon, vous obtenez une erreur
NoClassDef
2
À partir d'aujourd'hui, la dernière version que j'ai obtenue était la 5.2.08
chrisbjr
114
  1. Allez dans Fichier -> Structure du projet
  2. Sélectionnez "Paramètres du projet"
  3. Sélectionnez l'onglet "Dépendances"
  4. Cliquez sur '+' et sélectionnez '1. Dépendances de la bibliothèque'
  5. Rechercher: com.google.android.gms: play-services
  6. Sélectionnez la dernière version et cliquez sur 'OK'

Voila! Pas besoin de se battre avec Gradle :)

Ivo Stoyanov
la source
5
Cela a fonctionné pour moi et est très facile. Il connaît déjà le dernier numéro de version de play-services - il vous suffit de le sélectionner dans une liste et le fichier gradle est modifié pour vous!
Nick Perkins
Puis-je utiliser la même méthode pour importer BaseGameUtils pour le classement?
eng.ahmed
Oui, Ahmed. De cette façon, vous pouvez importer n'importe quelle bibliothèque Android.
Ivo Stoyanov
Des solutions simples et élégantes. Merci @IvoStoyanov, cela fera gagner beaucoup de temps aux débutants comme moi.
Manikandan S
5

EDITED: Ce gars l'a vraiment ramené à la maison et a un bon petit tutoriel http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

une note latérale: j'avais tellement joué que je devais faire un gradlew cleanpour le faire fonctionner avec succès

Si vous avez importé votre projet ou travaillez à partir de l'application Sample Maps située dans \ extras \ google \ google_play_services \ samples \ maps, consultez ce didacticiel.

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

Si vous créez un nouveau projet à partir de zéro, notez les commentaires de Xav sur ce même message. Il décrit qu'Android Studio utilise un compilateur différent et que vous devez modifier le fichier build.gradle manuellement. Je l'ai fait avec succès. J'ai copié

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

dans mon répertoire lib et ajouté ce qui suit à mon fichier build.gradle

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

Aussi, s'il s'agit d'un nouveau projet, consultez également cet article.

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

programmeur
la source
7
L'article vers lequel vous créez un lien est désormais obsolète. Cette solution n'est pas recommandée.
RevNoah
4

La plupart de ces réponses ne concernent que les dépendances à la compilation, mais vous trouverez une multitude d'exceptions NoClassDef au moment de l'exécution. C'est parce que vous avez besoin de plus que le google-play-services.jar. Il fait référence aux ressources qui font partie du projet de bibliothèque et celles-ci ne sont pas incluses correctement si vous ne disposez que du fichier JAR.

Ce qui a fonctionné le mieux pour moi a d'abord été de configurer correctement le projet dans eclipse. Organisez votre projet de manière à inclure à la fois votre application et la bibliothèque, comme décrit ici: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Ensuite, exportez votre projet d'application depuis eclipse et importez-le dans Android Studio comme décrit ici: http://developer.android.com/sdk/installing/migrate.html . Assurez-vous d'exporter à la fois votre projet d'application et le projet de bibliothèque de services Google Play. Lors de l'importation, il détectera le projet de bibliothèque et l'importera en tant que module. Je viens d'accepter toutes les valeurs par défaut lors du processus d'importation du projet.

Brad Armstrong
la source
2
Merci, mais je ne veux pas utiliser eclipse!
androidtester
2

Intégration des services Google Play dans le studio Android.

Étape 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

Étape 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.+'
}

Étape 3:

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

Étape 4:

Sync project file with grandle.
wait for few minute.

Étape 5:

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

Veuillez mettre un commentaire si vous avez besoin d'aide. Bon codage.

Harshid
la source
2

Aucune des solutions ci-dessus n'a fonctionné pour moi. Je ne sais pas si cela est spécifique à ma configuration ou à ma nouvelle version.

J'utilise Android Studio Beta 0.8.9 et je n'obtenais aucun service com.google.android.gms: play dans la liste des bibliothèques en suivant ces instructions:

Allez dans Fichier -> Structure du projet -> Sélectionnez les paramètres du projet -> Sélectionnez l'onglet "Dépendances" Cliquez sur "+" -> 1. Dépendances de la bibliothèque -> Sélectionnez com.google.android.gms: play-services: +

J'avais déjà fait ceci:

Tout d'abord, vous devez lancer le gestionnaire sdk et télécharger et installer les fichiers suivants situés sous "extras": référentiel de support Android, services Google play, référentiel Google.

Ce qui a résolu c'était d'ajouter à partir du SDK Manager, "Google play services for Froyo" puis de répéter la première étape.

Je n'ai pas bien compris la raison, mais cela a fonctionné.

PS: Je viens d'observer que même maintenant, lorsque je recherche des services de jeu, cela ne vient pas, mais lorsque je fais défiler et regarde directement la liste, c'est juste là.

Selfx Aadhyant
la source
2

Suivez cet article -> http://developer.android.com/google/play-services/setup.html

Vous devez choisir Utiliser Android Studio

entrez la description de l'image ici

Exemple de fichier Gradle:

Remarque: ouvrez le fichier build.gradle dans le répertoire de votre module d'application.

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.+'
}

Vous pouvez trouver la dernière version des services Google Play ici: https://developer.android.com/google/play-services/index.html

d.danailov
la source
1

Cela fonctionne après avoir effectué les opérations suivantes:

  • Ayez le google-play-services-lib comme module (notez la différence entre le module et le projet), puis ajoutez le google-play-services.jar au répertoire "libs" de vos modèles.
  • Après cela, ajoutez le fichier jar à votre chemin de construction en créant une bibliothèque ou ajoutez le fichier à une autre bibliothèque. J'ai généralement une seule bibliothèque IDEA à laquelle j'ajoute tous mes fichiers /libs/*.jar.
  • Ajoutez la bibliothèque au chemin de construction de vos modules via les paramètres du module (F4).
  • Ajoutez google-play-services-lib en tant que dépendance de module à votre projet.
  • Terminé!

Remarque: cela ne me donne pas non plus les exceptions d'exécution, cela fonctionne.

Johan S
la source
J'obtiens les mêmes erreurs: R.java et BuildConfig.java sont dupliqués
androidtester
Avez-vous le module en tant que dépendance de compilation?
Johan S
Oui! La seule solution est celle que j'ai mentionnée auparavant (exclure le dossier Preview)
androidtester
0

Ouvrez le fichier build.gradle de votre projet et ajoutez la ligne ci-dessous sous le module des dépendances.

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

Ce qui suit sera d'ajouter Google Analytics et Maps si vous ne souhaitez pas intégrer la bibliothèque complète

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}
Pankaj
la source
0

Dans mon cas, google-play-services_lib sont intégrés en tant que module (External Libs) pour Google map et GCM dans mon projet.

Maintenant, ce temps nécessite la mise en œuvre de l' API de saisie semi-automatique de Google Places, mais le problème est que le code est nouveau et que mes bibliothèques sont anciennes, donc certaines classes sont introuvables:

en suivant ces étapes ...

1> Mettez à jour le service Google play dans le gestionnaire de SDK

2> sélectionnez le nouveau fichier .jar du service google play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) remplacez-le par l'ancien

j'ai eu du succès ... !!!

Dhruv Raval
la source
-3

J'ai copié les fichiers de lecture libs de google-play-services_lib dans le répertoire libs de mon projet:

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

Ensuite, sélectionnez-les, cliquez avec le bouton droit sur "Ajouter en tant que bibliothèques".

s'il te plait supprime moi
la source
1
Merci pour votre réponse, mais cela n'a pas fonctionné pour moi - c'est similaire à quelque chose que j'avais essayé auparavant.
androidtester
Ce conseil va à l'encontre d'autres informations que j'ai lues ailleurs. La réponse liée à la première réponse est obsolète car elle utilise cette méthode.
RevNoah