Mise à jour de la bibliothèque des services Google Play et symbole manquant @ integer / google_play_services_version

186

Lors de la mise à niveau de mon projet vers la dernière version des services Google Play ( v4.0, sortie Halloween 2013 ), vous êtes maintenant censé ajouter une nouvelle balise dans le AndroidManifest.xmlfichier.

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

Malheureusement, lorsque j'essaye de faire cela, j'obtiens alors cette erreur de compilation:

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

Je peux ensuite accéder au fichier google-play-services_lib/res/values/version.xmlet afficher l'entier brut de ce symbole:

<integer name="google_play_services_version">4030500</integer>

Et puis réinsérez-le dans mon AndroidManifest.xml:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />

Cela fonctionne parfaitement et je peux ensuite compiler et exécuter le projet et l'application très bien. Mais c'est certainement une solution indésirable avec des problèmes d'évolutivité évidents.

Des idées?

Charles Madère
la source
ont exactement le même problème en ce moment - mais n'ont pas pu trouver l'entier.
Björn Hallström

Réponses:

256

Pour tous ceux qui utilisent Eclipse, voici comment procéder.

Eclipse -> importation -> code Android existant -> parcourir -> accédez au dossier google-play-services_lib (android-sdk / extras / google / google_play_services / libproject).

Ensuite, sur votre projet

contrôle cliquez -> propriétés -> android -> bibliothèques, ajoutez -> sélectionnez le projet que vous venez d'importer -> ok

PSchuette
la source
J'ai essayé cela (en suivant les instructions de cette autre question pour localiser le dossier), mais Eclipse dit qu'il ne peut pas écrire le .projectfichier dans le google-play-services_librépertoire indiqué . Évidemment, la raison immédiate est qu'Eclipse ne peut pas écrire dans le répertoire Program Files, où se trouve le SDK, mais la question plus concrète serait de savoir pourquoi la modification du .projectfichier (qui appartient apparemment au SDK et devrait donc être "correct") est nécessaire en premier lieu.
OR Mapper
Je n'ai pas vu cela auparavant, donc je ne sais pas exactement comment y remédier. Cela à l'esprit, sauf si déjà explicitement modifié, je ne pense pas que l'erreur existe dans le dossier. Il est possible qu'il soit simplement obsolète et qu'il doive être retéléchargé (il est peu probable que ce soit également le problème, mais on ne sait jamais).
PSchuette
Avez-vous rencontré cette erreur en essayant d'ajouter la bibliothèque ou en essayant d'importer le projet?
PSchuette
Merci, travaillé pour moi, sur Eclipse. Je pensais l'avoir fait correctement, mais je l'ai refait et cela a résolu le problème du compilateur.
Anna Billstrom
4
Le DOSSIER que vous devez importer est ici: extras \ google \ google_play_services \ libproject
Kamil Szot
78

Veuillez noter que ce correctif ne peut s'appliquer qu'aux utilisateurs d'IntelliJ !! (Plus d'informations au bas de cet article qui devraient s'appliquer à tout le monde.)

Correction de ce problème! J'utilise IntelliJ et il s'avère que j'avais juste mal configuré la façon dont google-play-services_libj'incluais le module en tant que dépendance.

Comme j'ai résolu cela entièrement via l'interface graphique et pas du tout en éditant des fichiers, voici quelques captures d'écran:

Étape 1 - Structure initiale du projet Ma structure de projet a donc commencé à ressembler à ceci ...

Étape 2 - Suppression de la bibliothèque google-play-services Ensuite, j'ai supprimé la google-play-servicesbibliothèque de ma liste de dépendances en la sélectionnant, puis en cliquant sur le bouton moins en bas. Notez l'erreur en bas de la boîte de dialogue, car mon projet nécessite absolument cette bibliothèque. Mais ne vous inquiétez pas, nous l'ajouterons bientôt!

Étape 3 - Ajout de google-play-services en tant que dépendance de module Ensuite, j'ai ajouté en google-play-services_libtant que dépendance de module au lieu d'une dépendance de bibliothèque. Ensuite, j'ai appuyé plusieurs fois sur le bouton fléché vers le haut en bas pour déplacer cette dépendance en haut de la liste. Mais remarquez l'erreur en bas (nous n'avons toujours pas fini!)

Étape 4 - Cliquez sur l'ampoule pour ajouter la bibliothèque google-play-services en tant que dépendance J'ai ensuite cliqué sur l'ampoule en bas de la boîte de dialogue dans la zone de message d'erreur pour faire apparaître cette petite petite fenêtre contextuelle qui donne deux choix ( Ajouter aux dépendances ... ou Supprimer la bibliothèque ). Cliquez sur l' option Ajouter aux dépendances ... !

Étape 5 - Ajoutez la bibliothèque au module google-play-services_lib Une nouvelle petite fenêtre de dialogue aurait dû apparaître. Cela m'a donné deux choix, un pour mon projet principal (son nom est flou), et un autre pour le google-play-services_libprojet. Le vôtre peut en avoir beaucoup plus en fonction de votre projet (comme vous pouvez le voir actionbarsherlock, des trucs comme ça). Sélectionnez google-play-services_libet cliquez sur OK!

Et enfin, vous avez terminé! J'espère que cela aide quelqu'un d'autre là-bas!

Plus d'infos

Je pense que la raison pour laquelle ce problème se produisait au début est parce que je pensais avoir correctement inclus l'ensemble du google-play-services_libprojet dans mon projet global ... mais je ne l'avais pas fait, et au lieu de cela, j'avais seulement correctement inclus son fichier jar ( google-play-services_lib/libs/google-play-services.jar). Ce fichier jar n'inclut que du code, pas des valeurs de ressources Android, et donc, la @integer/google_play_services_versionvaleur n'a jamais vraiment été dans mon projet. Mais le code a pu être utilisé dans mon projet, ce qui donnait l'impression que tout allait bien.

Et en passant, la résolution de ce problème semble également avoir corrigé le GooglePlayServicesUtil.getErrorDialog(...).show()crash que j'avais auparavant. Mais cela aurait également pu être corrigé par la mise à jour, pas vraiment sûr à 100%.

Charles Madère
la source
2
Ne travaille pas pour moi. Je n'ai pas «d'ampoule en bas de la boîte de dialogue dans la zone de message d'erreur pour faire apparaître cette petite petite fenêtre contextuelle qui donne deux choix»
Vadorequest
2
Dans votre cas, j'essaierais peut-être de supprimer complètement les services Google Play de votre projet, puis de les réimporter. Comme ce problème d'entier manquant ne se produit que si les services Google Play sont importés de manière incorrecte, il peut être judicieux de recommencer à zéro.
Charles Madere
1
@Vadorequest, vous pouvez également sélectionner le module google-play-services-lib et ajouter le fichier google-play-services.jar en tant que dépendance de module (! Au module google-play-services-lib!)
Su-Au Hwang
2
En plus de cette réponse (spécifique à IntelliJ), si vous envisagez d'utiliser réellement les méthodes / classes des bibliothèques, vous devrez aller dans Fichier> Structure du projet> sélectionner le module google-play-services_lib> Dépendances et cocher "Exporté" pour the google-play-services.jar
Su-Au Hwang
2
Résumé: ajoutez le répertoire libproject en tant que module et faites-en une dépendance à votre projet principal pour obtenir la valeur entière du répertoire
libproject
31

J'ai rencontré le même problème et, apparemment, Eclipse a laissé le version.xmlfichier dans / res / values ​​du google-play-services_libprojet d' origine tout en faisant une copie. J'ai extrait le fichier du projet d'origine et l'ai collé dans ma copie du projet et le problème est résolu.

Atul Goyal
la source
C'est la solution qui m'a également corrigé, c'est un oubli incroyable de Google si vous me demandez.
Henrique de Sousa
Merci mon pote, cela a résolu mon problème
Fabii
1
Cela a résolu mon problème. Pourquoi l'importation d'éclipse a ignoré ce fichier? Un indice?
nizam.sp
24

Sur Eclipse, après avoir importé la bibliothèque google play dans l'espace de travail du projet, je viens de copier le fichier version.xml de

google-play-services_lib/res/values/version.xml

à

MyProjectName/res/values/version.xml
Darragh O'Keeffe
la source
3
Cela fonctionnera, mais le problème est que cela rend la mise à niveau vers une version plus récente de la bibliothèque des services Google Play un peu plus ennuyeuse. Vous devrez probablement remplacer le version.xmlfichier à chaque mise à niveau.
Charles Madere
20

À toute personne utilisant gradle: n'incluez pas la source du projet, mais téléchargez-la à l'aide du gestionnaire SDK et ajoutez cette ligne aux dépendances:

compile 'com.google.android.gms:play-services:4.0.30'
Sofi Software LLC
la source
Seulement qu'il ne le trouve pas: Erreur: Un problème est survenu lors de la configuration du projet ': app'. > Impossible de résoudre toutes les dépendances pour la configuration ': app: _debugCompile'. > Impossible de trouver une version correspondant à com.google.android.gms: play-services: 6.1. +. Recherche dans les endroits suivants: jcenter.bintray.com/com/google/android/gms/play-services/… jcenter.bintray.com/com/google/android/gms/play-services
matteo
fichier: /home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml fichier: / home / teo / Documents / programmi / android-studio-new / sdk / extras / android / m2repository / com / google / android / gms / play-services / Requis par: xxxxxxx: app: non spécifié
matteo
Le chemin où il recherche la bibliothèque ne semble pas correspondre à l'emplacement où le gestionnaire SDK l'a effectivement téléchargée, mais même après avoir créé un lien symbolique, le problème n'est pas résolu. Je suppose que je ne peux pas déterminer quel fichier ou quel dossier exactement il doit trouver. Une idée?
matteo
1
Pour voir quelles versions vous avez: "ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services". Pour obtenir des versions plus récentes, exécutez le gestionnaire de SDK et mettez à jour les composants souhaités. Ne jouez pas avec les liens symboliques.
Sofi Software LLC
12
  1. Installez "Google Play Services" et "Google Repository" à partir du gestionnaire de SDK Android.
  2. Ajoutez la ligne compile 'com.google.android.gms:play-services:4.1.32@aar'à votre build.gradle.
  3. En conséquence, la ressource @integer/google_play_services_versionsera disponible.
Andrey Grebnev
la source
1
J'ai ajouté cette compilation 'com.google.android.gms: play-services: 4.4.52'
poudre366
cela l'a fait pour moi. Personne n'a publié à quoi ressemblait le résultat final de la section des dépendances dans build.gradle ... cela aurait été utile
snowking16
10

Dès le départ, vous avez l'impression que votre projet est connecté à une ancienne version du projet de bibliothèque Play Services. L'approche recommandée par Google consiste à rechercher le projet de bibliothèque dans le SDK et à en faire une copie locale. Cela signifie cependant que chaque fois que vous mettez à jour le projet de bibliothèque Play Services via le SDK Manager, vous devez également remplacer votre copie par une nouvelle copie.

CommonsWare
la source
Oui, j'ai intégré la bibliothèque dans mon projet en plaçant une copie des fichiers téléchargés avec Android SDK Manager dans mon répertoire de travail. J'ai également mis à jour la bibliothèque vers cette nouvelle version en faisant exactement la même chose (copié les fichiers du répertoire Android SDK et écrasé les fichiers existants dans mon projet).
Charles Madere
7

après la mise à jour de la dernière version, j'ai eu ce problème avec tous mes projets, mais il a été résolu en ajoutant à nouveau la référence de la bibliothèque:

si vous n'avez pas la bibliothèque dans votre espace de travail dans Eclipse, vous pouvez l'ajouter avec: File-> Import-> Existing Android Code Into Workspace-> parcourir et naviguer vers le google-play-services_libprojet lib, ( android-sdk/extras/google/google_play_services/libproject).

entrez la description de l'image ici

puis en supprimant /binet les /gendossiers de mon projet (quelque chose de similaire à l'option propre) et en construisant à nouveau mon projet.

Jorgesys
la source
mais cela rend l'apk 5mb plus lourd
Siddharth
6

Résolu pour Eclipse

Suivez les étapes suivantes:

  1. Importez le dossier google-play-services_lib en tant que projet, en utilisant import-> Code Android existant dans l'espace de travail
  2. Dans les propriétés du projet, sélectionnez la section Android, en bas Dans la section Bibliothèque, cliquez sur Ajouter et sélectionnez google-play-services_lib et Appliquer Suivez le lien http://i.stack.imgur.com/opSeJ.png pour voir la capture d'écran
Riccardo Pittiglio
la source
J'étais google-play-services_libdansF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti
5

Le site Google pour les développeurs Android contient des instructions sur la façon d '«ajouter des services Google Play à votre projet», ainsi que sur la mise à niveau de la version des services Play. Il existe même un menu déroulant pour afficher les instructions pour Eclipse, Android Studio ou "Quelque chose d'autre". Ce serait le meilleur endroit pour afficher les instructions au cas où elles changeraient. La page est ici:

http://developer.android.com/google/play-services/setup.html

Mais comme la plupart des réponses ici concernent Eclipse, voici un bref résumé de la mise à niveau des services Play avec Android Studio

  1. Ouvrez le fichier build.gradle dans le répertoire de votre module d'application. Remarque: les projets Android Studio contiennent un fichier build.gradle de niveau supérieur et un fichier build.gradle pour chaque module. Assurez-vous de modifier le fichier de votre module d'application.
  2. Mettez à jour la règle de construction sous «dépendances» pour faire référence à la version des services de jeu que vous avez téléchargée sur votre machine de développement.

Vous pouvez trouver le numéro de version de la version de play-services que vous avez téléchargée sur votre machine de développement en consultant votre dossier \ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services, comme expliqué ici : Comment faire correspondre une révision des services Google Play avec une version d'installation?

Eric Barr
la source
Enfin une bonne réponse claire pour les débutants Android. Cette réponse doit être placée plus haut.
Jelle
4

Pour Eclipse, je viens d'ajouter une référence de projet à google-play-services_lib dans:

Propriétés-Android Dans le volet Bibliothèque (volet inférieur), assurez-vous que google-play-services_lib est répertorié. Sinon, cliquez sur le bouton Ajouter .. et sélectionnez google-play-services_lib.

hNdroid
la source
3

J'ai eu le même problème, le fichier version.xml n'était pas dans google-play-services_lib. Démarrez simplement votre gestionnaire de sdk et acceptez la mise à jour en particulier les choses liées aux "extras".

user2167877
la source
2

Lors de l'importation de google-play-services_lib, vérifiez le code de version défini dans AndroidManifest.xml et version.xml. J'avais trouvé la différence dans le code de version et l' ai changé en 4242000 . Une fois le changement effectué, il n'y a plus d'erreur de compilation dans @ integer / google_play_services_version .entrez la description de l'image ici

Shanki Bansal
la source
2
Ce n'est pas une bonne façon de procéder. Vous devrez mettre à jour manuellement chaque fois que vous mettez à jour les services Google Play.
PSchuette
2

Corrigé en ajoutant les services Google Play à mon module: fichier de création de gradle d'application. La documentation indique également de mettre à jour la version lorsque vous mettez à jour GMS.

dependencies {

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

} 
Hugh Brady
la source
1

Voici les principales actions qui éviteront de nombreuses erreurs lors de l'utilisation du service Google play Lib:

  1. Assurez-vous de copier le projet lib dans l'espace de travail des projets Eclipse.
  2. Le SDK cible pour le projet de bibliothèque de services Google Play doit être "Google
  3. API "3- Les métadonnées doivent être ajoutées au fichier manifeste.
  4. Le SDK cible de votre projet doit être 17, sauf si vous avez complètement mis à jour vers 19, car dans certains cas, 19 ne fonctionne pas bien.
Ayman Al-Absi
la source
1

J'ai eu le même problème avec un projet utilisant Maven et IntelliJ. Les services Google Play sont ajoutés en tant que dépendance maven. La construction maven fonctionnait bien à partir de la ligne de commande, mais IntelliJ s'est plaint de ce symbole manquant@integer/google_play_services_version

Dans mon cas, j'ai forcé une mise à jour des fichiers maven POM et cela a résolu le problème.

Pierre Henry
la source
1

Dans mon cas, j'avais besoin de copier le FOLDER google-play-services_lib dans le même DRIVE des codes sources de mes applications

  • F: \ Products \ Android \ APP * .java <- Mes applications sont ici, j'ai donc copié dans le dossier ci-dessous
  • F: \ Products \ Android \ libs \ google-play-services_lib
fedmich
la source
1

Lorsque vous n'utilisez pas d'EDI, mais que vous utilisez des versions de ligne de commande (en utilisant ant et ndk-build), voici comment le résoudre:

Installez toutes les pièces requises avec la commande «android». Ensuite, ayez une copie de google-play-service_lib / dans la racine de votre projet. Modifiez project.properties pour inclure cette ligne:

android.library.reference.1=./google-play-services_lib
Bram
la source
Mais vous devez android update project -p . -t android-22d' google-play-services_libabord. De manière équivalente, ajoutez <property name="android.library.reference.1" value="./google-play-services_lib"/>à votre build.xml(j'ai minimisé mon build.xmlet abandonné le .properties).
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
0

J'ai eu le même problème. Le problème était que le "google-play-services.jar" n'était pas correctement importé dans mon projet, même s'il faisait partie du projet google_play_service_lib. Si vous utilisez Eclipse, veuillez vérifier et voir si vous pouvez voir le fichier jar des services de lecture dans la section Bibliothèques privées Android et s'il est exporté par la bibliothèque.

J'utilise les outils de la plate-forme Android SDK version 17 (et non 19) et les outils Android SDK version 22.0.1

Punit Raizada
la source
0

Je viens de mettre à jour les services Google Play dans le dossier Extras dans Android SDK Manager

KarenAnne
la source
0

Le problème pour moi était que le projet de bibliothèque et le projet utilisant les services de lecture se trouvaient dans des répertoires différents. Alors juste:

  • 1.Ajoutez les fichiers au même espace de travail, puis supprimez la bibliothèque.
  • 2. redémarrer l'éclipse
  • 3.Ajoutez à nouveau le projet de bibliothèque
  • 4. effacer
makkasi
la source
0

Google suggère de ne pas créer de projet directement à partir du répertoire SDK. Il est préférable de copier le projet lib à l'emplacement où se trouve votre application, puis de l'importer à partir de là. Sinon, la prochaine fois que vous importerez le projet pour une autre application, il sera déjà utilisé.

https://developer.android.com/google/play-services/setup.html

Remarque: vous devez référencer une copie de la bibliothèque que vous avez copiée dans votre espace de travail de développement. Vous ne devez pas référencer la bibliothèque directement à partir du répertoire du SDK Android.

Shygar
la source
0

Quiconque cherche en 2017, la version 10.0.1 des services de jeu nécessite une importation play-services-basement(utilisée pour être dans play-services-base).

goobliata
la source
Pouvez-vous expliquer un peu plus? Comment voir les dépendances actuelles et comment en ajouter d'autres?
Hassan Gulzar
J'ai tout fait manuellement et par essais et erreurs lorsque j'ai écrit cette réponse. L'utilisation de gradle a rendu les choses beaucoup plus faciles.
goobliata
0

Android Studio 3.3.2 sous Windows 10

Fichier -> Invalidate Caches / Restart et choisissez le invalidate and Restartbouton dans la boîte de dialogue qui est apparu.

est absent
la source
0

J'ai eu le même problème, ajoutez cette ligne 2 dans votre build.gradle le problème sera probablement résolu. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
Amin Najafloo
la source