web-dev-qa-db-fra.com

Services Google Play dans un émulateur, implémentation du bouton de connexion Google Plus, etc.

Lors de l'intégration d'un bouton de connexion Google Plus dans une application Android, j'observe des différences dans la façon dont le bouton apparaît sur un périphérique réel et dans l'émulateur. Je suis conscient du fait que les APK de services Google Plus ne sont pas installés dans l'émulateur, mais cela peut être contourné en extrayant les APK d'un appareil et en les installant dans l'émulateur à l'aide d'APK.

Mon "implémentation" actuelle inclut simplement le bouton de connexion dans une mise en page, en faisant référence au bouton avec le code XML suivant:

<com.google.Android.gms.common.SignInButton
    Android:id="@+id/sign_in_button"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />

Lorsque je teste mon application sur l'appareil, le bouton apparaît tout rouge et brillant, conformément aux instructions mentionnées ici https://developers.google.com/+/mobile/Android/sign-in . Mais lorsque vous utilisez l'émulateur, il ne s'agit que d'un bouton normal (fond gris avec texte noir) disant "Connectez-vous avec Google".

Une idée pourquoi les résultats sont différents? Je me suis assuré que j'exécutais le même niveau d'API, et la ressource semble être correctement extraite également sur l'émulateur, car elle affiche le bouton de connexion actuel (mais avec un aspect différent).

Mettre à jour: Trouvé un indice dans logcat; le message "Bouton de connexion introuvable, utilisant un espace réservé à la place". Cela explique à peu près pourquoi je vois le bouton gris terne sur l'émulateur. Encore faut-il comprendre pourquoi; Le hack de "copie apk de google plus from device" pourrait ne pas fonctionner correctement.

15
Marius Kjeldahl

Les services Google Play fonctionnent avec les versions 4.2.2 de l'émulateur Android et sont officiellement pris en charge, comme décrit dans la documentation de Android: Configurer les services Google Play .

Mettre à jour

Vous pouvez maintenant utiliser les images Intel/x86 (compatibles HAXM) pour l'API 19 et les versions plus récentes et pour ARM, les services Google Play sont disponibles sur la plupart des images.

Mise en place de l'image

Pour obtenir la bonne image pour votre gestionnaire de périphérique virtuel:

  • Ouvrez le gestionnaire de SDK Android
  • Ouvrez le groupe Android 4.2.2 (API 17)
  • Vérifier les API Google
  • Vérifier ARM Image système EABI v7a

enter image description here

Pour créer le périphérique virtuel:

  • Ouvrez le gestionnaire de périphériques virtuels Android 
  • Créer un nouveau périphérique 
  • Entrez un nom AVD
  • Définissez la cible sur API Google (Google Inc.) - API de niveau 17
  • Enregistrez votre périphérique virtuel et démarrez-le ...

Note _ ​​CPU/ABI sera fixé comme ARM)

enter image description here

Vous devriez maintenant pouvoir utiliser les services Google Play dans l'émulateur. Pour que les services Google Play fonctionnent, vous devez bien définir votre cible dans votre projet Android avec les API Google.

53
class

J'ai essayé la plupart des combinaisons d'exécution de l'émulateur, mais avec et sans les API de Google, ce qui signifie que j'ai testé avec les modes x86 et arm. Je n'ai trouvé aucun moyen de faire en sorte que les apk extraits de mon téléphone Galaxy Nexus fonctionnent correctement sur l'émulateur.

En devinant que cela est un peu lié à la mise en marche du Play Store, j'ai décidé d'essayer cela aussi pour voir si j'avais plus de chance. Je n'ai pas; ne pouvait pas que cela fonctionne non plus. Les icônes du Play Store apparaissent et peuvent être lancées, mais il se ferme immédiatement.

Ce qui a bien fonctionné, toutefois, a été de télécharger et d'installer les apks au bas de la page:

http://umut.tekguc.info/en/content/google-Android-map-v2-step-step

Après avoir installé les paquets vending et gms, le bouton de connexion est apparu dans toute sa beauté sous l’émulateur. Étant donné que je n'ai pas encore implémenté la fonctionnalité de connexion réelle, je ne peux pas être sûr que cela fonctionnera réellement, mais au moins, le bouton est maintenant identique dans mon application et sur mon émulateur.

Vous devez également télécharger le logiciel Google Play Services (sous "Extras" dans le gestionnaire de SDK Android), puis installer la bibliothèque google-play-services_lib dans votre projet (Fichier-Import-Android-Code Android existant dans Workspace, puis Recherchez, par exemple,/opt/adt-bundle-linux/sdk/extras/google/google_play_services/libproject et sélectionnez google-play-services_lib).

Un autre élément intéressant est que cela ne fonctionnera que sur les configurations d'émulateur "pur" d'Android, pas avec les configurations "Google API". Il semble que certaines de ces applications ont déjà été installées dans l'émulateur (visiblement et ne fonctionnent pas), et je n'ai pas réussi à supprimer les versions existantes pour installer les fichiers apk personnalisés qui fonctionnaient comme décrit ci-dessus. J'ai testé adb remove, adb install, adb install -r et même supprimer les répertoires de/data qui ont également échoué. On dirait que Google essaie de rendre cela difficile.

Je suis déçu que Google rend cela si difficile; Google a peut-être des raisons bizarres de licence pour garder ces informations hors de l'émulateur, mais s'ils veulent vraiment que les gens utilisent leurs services dans leurs applications Android, ils doivent les rendre disponibles dans l'émulateur. Forcer les gens à toujours développer sur un périphérique (avec d'excellents émulateurs par ailleurs disponibles) ou les faire sauter à travers des cercles (beaucoup de recherches sur Google, l'installation de versions non officielles/piratées des apks, etc.) est tout simplement mauvais.

Dernière mise à jour avant d'accepter ma réponse; Bien que le bouton correct avec le style correct soit maintenant affiché dans l'émulateur, je ne parviens toujours pas à faire en sorte que la boîte de dialogue "Choisir un compte" apparaisse dans l'émulateur. Quand/si je le fais, je partagerai la solution appropriée ici.

4
Marius Kjeldahl

 Android image with google API implemented j’ai remarqué que dans l’API 21, il existe ARM et des images x86 avec les API Google implémentées.

0
Fuseteam

Recherchez dans les dossiers ldpi, mdpi, hdpi, etc ... un autre bouton graphique. Votre émulateur est probablement un DPI différent de votre appareil.

0
Bill Mote