web-dev-qa-db-fra.com

API Android Places: services Google Play obsolètes sur l'émulateur

J'essaie d'utiliser PlacePicker de l'API Google Places dans mon application Android. Cependant, chaque fois que j'essaie de créer le sélecteur, le message d'erreur suivant s'affiche:

Google Play services out of date. Requires 7095000 but found 6774470

Malheureusement, je suis obligé de tester sur l'émulateur car je ne possède pas de périphérique physique. L'image de l'émulateur est de niveau API 22 x86 avec la cible des API Google. De plus, j'ai tenté d'inclure la bibliothèque de services Google Play via le fichier build.gradle:

'com.google.Android.gms:play-services:7.+'

De plus, j'ai mis à jour les services Google Play dans le gestionnaire de SDK. Qu'est-ce que je fais mal? Comment puis-je mettre à jour mes services Google Play pour pouvoir utiliser l'API Places?

26
user1594328

J'avais le même problème et je devais passer à l'image de l'émulateur API 21 avec Google Apps. Celui-ci est plus à jour et fonctionne.

15
Tamas

Si le SDK Manager indique que la dernière version est déjà installée, vous pouvez simplement dupliquer la définition de votre émulateur.

L'émulateur dupliqué sera chargé avec la dernière version du SDK.

 enter image description here

9
Believe2014

J'ai un problème similaire lorsque j'utilise les services Google Play pour Android Wear, puis je le résous en mettant à jour ma version de l'application Android Wear. (car la nouvelle version Android utilise les nouveaux services Google Play)

Ce problème étant dû à la version trop ancienne des services Google Play sur votre appareil, vous devez mettre à jour votre version des services Google Play sur votre appareil.

Pour l'émulateur, vous devez mettre à jour les services Google-Play sur votre émulateur au lieu de mettre à jour votre SDK .

3
Morshues

J'ai eu le même problème et pour le moment j'ai "mis à jour" la version 6774480 en invalidant les caches et en redémarrant, puis j'ai "rétrogradé" les dépendances compile 'com.google.Android.gms:play-services:6+' Et ça marche, je sais que ce n'est pas une vraie solution mais un mauvais moyen pour le faire fonctionner afin que je puisse tester mon application

2
Mattia Scrofani

Comme d'autres l'ont dit, la raison en est probablement que Google Play installé dans l'AVD ne correspond pas à l'exigence de dépendance. Outre les solutions suggérées par d’autres personnes, j’ai essayé de faire passer la version 8.3 de la version de Google Play requise de 8.1 à 8.1, et le problème est résolu.

2
superarts.org

mon logcat est 

Services Google Play obsolètes. Nécessite 12210000 mais trouvé 11947270

donc j'ai changé le code de build.gradle

implementation 'com.google.Android.gms:play-services-maps:12.0.0'

à

implementation 'com.google.Android.gms:play-services-maps:11.0.0'

et il fonctionne

0
Mike Lin

C'est une solution de contournement que j'ai trouvée car aucune des solutions ici ne fonctionnait pour moi. En outre, je ne voulais pas mettre à jour mon code pour utiliser une version plus ancienne des services de lecture. J'ai fini par installer l'émulateur avec Google Play au lieu de Google Apis, puis lorsque l'invite est arrivée, j'ai simplement cliqué sur Mettre à jour. Cela vous mènerait au Google Play Store et tout ce que vous avez à faire est de mettre à jour les services de lecture à partir de là. Le seul inconvénient est que cette méthode nécessite que vous vous connectiez à l'émulateur avec un compte Google. Mais pour mes cas d'utilisation, il suffisait .  Google play instead of google api

0
Atul

Je n'avais que ce problème avec l'émulateur API 22. 21 et 23 étaient bien et je n'ai eu aucun problème avec les appareils physiques.

J'étais curieux de savoir si cette version basse était critique pour GCM, alors modifions le code pour qu'il continue malgré tout:

if (checkPlayServices()) {
              // Start IntentService to register this application with GCM.
              Intent intent = new Intent(this, ImpatientRegistrationIntentService.class);
              startService(intent);
} else {<<--   Added this as a bypass as my emulator complained about versions
              Intent intent = new Intent(this, ImpatientRegistrationIntentService.class);
              startService(intent);
}

Fait intéressant, l’émulateur API 22 a reçu un jeton de GCM et a reçu des messages Push en aval sans aucun problème.

0
formica