Servicios de Google Play en el emulador, implementación del 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 para Android, observo 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 los servicios de Google Plus no están instalados en el emulador, pero esto puede ser resuelto tirando de los APKs de un dispositivo y 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:

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

Cuando pruebo mi aplicación en el dispositivo, el botón aparece en rojo y brillante, de acuerdo con las directrices mencionadas aquí https://developers.google.com/+/mobile/android/sign-in . Pero cuando se ejecuta en el emulador, es sólo 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 cerciorado de que estoy funcionando el mismo nivel de la API, y el recurso parece conseguir tirado adentro correctamente también en el emulador puesto que demuestra el botón actual de la conexión (pero con una mirada diferente).

Actualización: Encontró una pista en logcat; el mensaje "El botón de inicio de sesión no se encontró, con el marcador de posición en su lugar." prácticamente explica por qué estoy viendo el botón gris aburrido en el emulador. Todavía tiene que averiguar por qué; podría ser el "copia google más apk de dispositivo" hack no está funcionando correctamente.

Los servicios de Google Play funcionan en las versiones 4.2.2 del emulador de Android y se admite oficialmente como se describe en la documentación de Android: Configuración de Google Play Services .

Actualizar

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

Configuración de la imagen

Para obtener la imagen correcta para el administrador de dispositivos virtuales:

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

Introduzca aquí la descripción de la imagen

Para crear el dispositivo virtual:

  • Abra el Administrador de dispositivos virtuales de Android
  • Crear un nuevo dispositivo
  • Introduzca un nombre AVD
  • Establezca el objetivo en las API de Google (Google Inc.) – Nivel de API 17
  • Guarde su dispositivo virtual e inícielo …

Nota CPU / ABI se fijará como ARM

Introduzca aquí la descripción de la imagen

Ahora deberías poder usar los Servicios de Google Play en el emulador. Es importante que establezca su objetivo de forma apropiada en su proyecto de Android en las API de Google para que Google Play Services funcione.

He probado la mayoría de las combinaciones de ejecutar el emulador, pero con y sin las API de Google, lo que significa que he probado con ambos modos x86 y brazo. No encontré ninguna manera de hacer que el APK se sacara de mi teléfono Galaxy Nexus para funcionar correctamente en el emulador.

Adivinando esto es algo relacionado con la puesta en marcha de Play Store, decidí probarlo también para ver si tenía más suerte. Yo no; no podía conseguir ese trabajo tampoco. Los iconos de Play Store aparecen y se pueden iniciar, pero se cierra inmediatamente.

Lo que sí funcionó fue descargar e instalar los apks 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 vending y gms, el botón de inicio de sesión aparece en su belleza completa bajo el emulador. Dado que todavía no he implementado la funcionalidad de inicio de sesión actual, no puedo estar seguro de que funcionará, pero al menos el botón ahora se ve idéntico en mi aplicación en mi dispositivo y en el emulador.

También debe descargar el software Google Play Services (consulte "Extras" en el gestor SDK de Android) e instalar la biblioteca google-play-services_lib en su proyecto (Archivo-Importar-Android-Código Android existente en el área de trabajo y, a continuación, 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 sólo funcionará en las configuraciones "puras" de emulador de Android, no con las configuraciones de "API de Google". Parece que este último tiene algunas partes de las aplicaciones instaladas en el emulador ya (no visiblemente y no funciona), y no he logrado eliminar las versiones existentes para instalar los archivos apk personalizados que funcionaban como se describe anteriormente. He probado adb eliminar, adb instalar, adb instalar-r, e incluso la eliminación de los directorios de / datos que también falló. Se parece mucho a Google está tratando de hacer esto difícil.

Estoy decepcionado Google está haciendo esto tan difícil; Google puede tener algunas razones extrañas de licencias para mantener estas cosas fuera del emulador, pero si realmente quieren que la gente use sus servicios en sus aplicaciones de Android que necesitan para hacer estos servicios disponibles en el emulador. Obligar a las personas a desarrollar siempre en un dispositivo (con otros excelentes emuladores disponibles) o hacer que la gente salte a través de aros (un montón de google, la instalación no oficial / pirata versiones de los apks etc) es simplemente mal.

Actualización final antes de aceptar mi respuesta; aunque el botón correcto con el estilo correcto se muestre ahora en el emulador, todavía no puedo conseguir que el cuadro de diálogo "recoger cuenta" aparezca en el emulador. Cuando / si lo hago compartiré la solución apropiada aquí.

Compruebe las carpetas ldpi, mdpi, hdpi, etc … para un gráfico de botón diferente. Es casi seguro que su emulador es un DPI diferente al de su dispositivo.

Imagen de Android con API de Google implementada me he dado cuenta de que desde la API 21 hay ARM y x86 imágenes con API de Google implementado tal vez si no tiene ningún problema emulando con Android 5 que funcionará sin extraer los APK

  • Google-play-services_lib.jar falta después de actualizar a la última versión (3.1)
  • Google Sign In no funciona después de publicado en playstore
  • SERVICE_VERSION_UPDATE_REQUIRED y el servicio de Google play desactualizado al integrar Google Plus en android
  • Use .GetMapAsync en lugar de otro método .getMap con Google Play Services (Xamarin)
  • Android: Google reproduce los servicios de juegos error de conexión (java.lang.IllegalStateException: GoogleApiClient debe estar conectado.)
  • No se pudo cargar el anuncio de Admob Native con el código de error 0
  • Fused Location Provider comportamiento inesperado
  • Java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
  • Servicios de juegos de Google Play: no puede iniciar sesión
  • Cómo administrar el mensaje de actualización del servicio de Google Play
  • PendingIntents y Google Play Services - cómo hacer la limpieza
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.