Servicios de Google Play en el emulador, implementando el botón de inicio de sesión de Google Plus, etc.

Al integrar un botón de inicio de sesión de Google Plus en una aplicación de Android, estoy observando algunas diferencias en cómo aparece el botón en un dispositivo real y en el emulador. Soy consciente del hecho de que los APK de servicios de Google Plus no están instalados en el emulador, pero esto puede solucionarse tirando de los APK de un dispositivo e instalándolos en el emulador usando APK.

Mi “implementación” actual simplemente incluye el botón de inicio de sesión en un diseño, haciendo referencia al botón con el siguiente código XML:

 

Cuando pruebo mi aplicación en el dispositivo, el botón aparece todo rojo y shiny, de acuerdo con las pautas mencionadas aquí https://developers.google.com/+/mobile/android/sign-in . Pero cuando se ejecuta en el emulador, es solo un botón normal (fondo gris con texto negro) que dice “Iniciar sesión con Google”.

¿Alguna idea de por qué los resultados son diferentes? Me he asegurado de que estoy ejecutando el mismo nivel de API, y parece que el recurso también se ha incorporado correctamente en el emulador, ya que muestra el botón de inicio de sesión real (pero con un aspecto diferente).

Actualización: Encontré una pista en logcat; el mensaje “Botón de inicio de sesión no encontrado, usando marcador de posición en su lugar”. más o menos explica por qué estoy viendo el botón gris opaco en el emulador. Todavía necesito descubrir por qué; podría ser el truco “copiar google plus apk del dispositivo” no funciona correctamente.

Los servicios de Google Play funcionan en las versiones 4.2.2 del Emulador de Android y cuentan con el respaldo oficial, tal como se describe en la documentación de Android: Configurar Servicios de Google Play .

Actualizar

Ahora puede usar las imágenes Intel / x86 (compatibles con HAXM) para API 19 y versiones posteriores, y para ARM, Google Play Services está disponible en la mayoría de las imágenes.

Configurando la imagen

Para obtener la imagen correcta para su administrador de dispositivo virtual:

  • Abra el Administrador de Android SDK
  • Abra el grupo Android 4.2.2 (API 17)
  • Verifique las API de Google
  • Comprobar la imagen del sistema ARM EABI v7a

enter image description here

Para crear el dispositivo virtual:

  • Abra el Administrador de dispositivos virtuales de Android
  • Crea un nuevo dispositivo
  • Ingrese un nombre AVD
  • Establezca el destino en las API de Google (Google Inc.) – Nivel de API 17
  • Guarde su dispositivo virtual y comience …

Nota CPU / ABI se fijará como ARM

enter image description here

Ahora debería poder usar los servicios de Google Play en el emulador. Cabe destacar que debe establecer su objective de forma adecuada en su proyecto de Android a las API de Google para que funcionen los Servicios de Google Play.

Probé la mayoría de las combinaciones de ejecutar el emulador, pero con y sin las API de Google, lo que significa que probé con ambos modos, x86 y arm. No encontré la manera de hacer que el apk se extrajera de mi teléfono Galaxy Nexus para que funcione correctamente en el emulador.

Adivinar que esto está relacionado de alguna manera con la puesta en marcha de la Play Store, decidí probar eso también para ver si tenía más suerte. Yo no; tampoco podría funcionar eso. Aparecen los icons de Play Store y se pueden iniciar, pero se cierra de inmediato.

Sin embargo, lo que funcionó fue descargar e instalar los apk en la parte inferior de la página aquí:

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

Después de instalar los paquetes de ventas y gms, el botón de inicio de sesión apareció en toda su belleza debajo del emulador. Como todavía no he implementado la funcionalidad de inicio de sesión real, no puedo estar seguro de que realmente funcione, pero al menos el botón ahora parece idéntico en mi aplicación en mi dispositivo y en el emulador.

También debe descargar el software de servicios de Google Play (busque en “Extras” en el administrador de SDK de Android) e instalar la biblioteca google-play-services_lib en su proyecto (File-Import-Android-Existir código de Android en el espacio de trabajo, y luego busque, por ejemplo, / opt / adt-bundle-linux / sdk / extras / google / google_play_services / libproject y seleccione google-play-services_lib).

Otro dato interesante es que esto solo funcionará en las configuraciones de emulador de Android “puras”, no con las configuraciones de “API de Google”. Parece que estos últimos ya tienen algunas partes de esas aplicaciones instaladas en el emulador (no visiblemente y que no funcionan), y no he logrado eliminar las versiones existentes para instalar los archivos apk personalizados que funcionaron como se describió anteriormente. Probé adb remove, adb install, adb install -r e incluso eliminé los directorios de / data que también fallaron. Se parece mucho a Google está tratando de hacer esto difícil.

Estoy decepcionado de que Google esté haciendo esto tan difícil; Google puede tener algunas razones raras de licencia para mantener estas cosas fuera del emulador, pero si realmente quieren que las personas usen sus servicios en sus aplicaciones de Android, necesitan hacer que estos servicios estén disponibles en el emulador. Obligar a las personas a desarrollarse siempre en un dispositivo (con emuladores excelentes de otro modo disponibles) o hacer que la gente salte por los aros (mucha búsqueda en Google, la instalación de versiones no oficiales / pirateadas de los apk, etc.) es simplemente malo.

Actualización final antes de aceptar mi respuesta; aunque ahora se muestra el botón correcto con el estilo correcto en el emulador, aún no puedo obtener el cuadro de diálogo “elegir cuenta” para que aparezca en el emulador. Cuando / si lo hago, compartiré la solución adecuada aquí.

Compruebe las carpetas ldpi, mdpi, hdpi, etc … para obtener un gráfico de botones diferente. Es casi seguro que tu emulador sea un DPI diferente de tu dispositivo.

Imagen de Android con la API de Google implementada He notado que desde API 21 hay imágenes ARM y x86 con Google APIs implementadas, tal vez si no tienes problemas emulando usando android 5, funcionará sin extraer los APK