Esta aplicación no se ejecutará a menos que actualice Google Play Services (a través de Bazaar)

100

Estoy probando la nueva API de Google Maps V2 para Android y recibo este mensaje cuando se inicia la aplicación:

MainActivity mostrando mensaje de error

Esto se ejecuta en un emulador 4.1.

Aquí está mi AndroidManifest.xmlarchivo:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.maptest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <permission
        android:name="com.example.maptest.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <!-- Require OpenGL ES version 2 -->
    <uses-feature
          android:glEsVersion="0x00020000"
          android:required="true"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="##myapikey##"/>

    </application>
</manifest>

Archivo MainActivity.java:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

Archivo activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment"/>
</RelativeLayout>

Al hacer clic en "Actualizar", la aplicación se bloquea con el siguiente seguimiento de pila:

E/Trace(1034): error opening trace file: No such file or directory (2)
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
D/gralloc_goldfish(1034): Emulator without GPU emulation detected.
D/AndroidRuntime(1034): Shutting down VM
W/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40a13300)

E/AndroidRuntime(1034): FATAL EXCEPTION: main
E/AndroidRuntime(1034): android.content.ActivityNotFoundException: No Activity found to handle Intent
  { act=android.intent.action.VIEW dat=http://play.google.com/store/apps/details? \
  id=com.google.android.apps.bazaar flg=0x80000 pkg=com.android.vending }
E/AndroidRuntime(1034):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
E/AndroidRuntime(1034):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
E/AndroidRuntime(1034):     at android.app.Activity.startActivityForResult(Activity.java:3351)
E/AndroidRuntime(1034):     at android.app.Activity.startActivityForResult(Activity.java:3312)
E/AndroidRuntime(1034):     at android.app.Activity.startActivity(Activity.java:3522)
E/AndroidRuntime(1034):     at android.app.Activity.startActivity(Activity.java:3490)
E/AndroidRuntime(1034):     at com.google.android.gms.internal.c$2.onClick(Unknown Source)
E/AndroidRuntime(1034):     at android.view.View.performClick(View.java:4084)
E/AndroidRuntime(1034):     at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime(1034):     at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime(1034):     at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(1034):     at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1034):     at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(1034):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1034):     at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1034):     at dalvik.system.NativeStart.main(Native Method)

También he hecho referencia al proyecto de Servicios de Google Play. ¿Qué estoy haciendo mal aquí?

ACTUALIZAR

El error correspondiente en el rastreador de problemas de Google ( https://issuetracker.google.com/issues/35822258 ) se resolvió hace algún tiempo.

Ahora puede usar la API de Android de Google Maps en el emulador y crear dispositivos virtuales con los servicios de Play como se describe en esta respuesta:

https://stackoverflow.com/a/46246782/5140781

soren.qvist
fuente
¿Está utilizando avd con google api o android simple?
Selvin
Android normal, aunque acabo de intentar cambiar a la API de Google para 4.1 y es lo mismo.
soren.qvist
Por extraño que parezca, estoy viendo exactamente el mismo problema exactamente al mismo tiempo. Supongo que hasta ahora es porque el APK de Google Play Services no está instalado en el emulador. El error se debe a que la aplicación está intentando iniciar Google Play (la tienda) para instalar el APK. Probablemente funcione bien en un dispositivo.
gazreese

Respuestas:

42

Según una discusión con los desarrolladores de Android en Google+, no es posible ejecutar la nueva API de mapas en el emulador en este momento.

(El comentario es de Zhelyazko Atanasov ayer a las 23:18, no sé cómo vincularlo directamente)

Además, no ve la parte " (a través de Bazaar) " cuando se ejecuta desde un dispositivo real, y el botón de actualización abre Play Store. Supongo que Bazaar está destinado a proporcionar Google Play Services en el emulador de Android, pero aún no está listo ...

nicopico
fuente
15
Bueno, eso es lamentable
soren.qvist
Intenté copiar el último GmsCore.apk directamente en el emulador, pero tampoco funciona. Probablemente funcionaría si supiera exactamente qué APK copiar de mi dispositivo rooteado.
James Wald
56

ACTUALIZAR

La API de mapas de Google v2 ahora está instalada en las últimas imágenes del sistema de Google (api: 19 ARM o x86).
Por lo tanto, su aplicación debería funcionar con las nuevas imágenes. No es necesario instalar estos archivos.

Intenté ejecutar una aplicación de Android Google Maps V2 con un emulador y, una vez que finalmente logré ejecutar Google Play Services, actualicé mi SDK a la revisión 4 de Google Play Services y mi emulador ya no ejecutaba mi aplicación.

Ahora he descubierto cómo actualizar mi emulador desde mi tableta transformadora. (No necesitará una tableta, ya que puede descargar los archivos a continuación).

Usé Titanium Backup para hacer una copia de seguridad de mi Asus Eee Pad Transformer (TF101) y luego tomé los archivos APK com.android.vending y com.google.android.gms de la copia de seguridad.

Los instalé en un emulador configurado con plataforma: 4.1.2, nivel de API: 16, CPU Intel / Atom x86) y mi aplicación Google Maps V2 funciona nuevamente.

Eso fue todo ... no se requirió ninguno de los otros pasos relacionados con / system / app.

Mi aplicación solo usa la API de Google Maps, sin duda, se requieren más pasos si usa otros servicios de Google Play.

Nuevos archivos para los últimos servicios de Google Play:

Las mismas instrucciones que antes: cree un nuevo emulador con cualquier CPU / ABI , un objetivo de API que no sea de Google (las versiones 10-19 funcionan) y emulación de GPU activada o desactivada, y luego instale los archivos:

adb install com.android.vending-20140218.apk
adb install com.google.android.gms-20140218.apk

Si está actualizando un emulador existente, es posible que deba desinstalar versiones anteriores de la siguiente manera:

adb uninstall com.android.vending
adb uninstall com.google.android.gms

Eso es todo.

danbrough
fuente
No importa si su emulador es x86 o ARM. Plataforma: 4.2 también está bien.
Dan Brough
1
Según developer.android.com/google/play-services/index.html . Los dispositivos con Android 2.2 (que es el nivel de API 8) deberían ser suficientes siempre que los dispositivos también tengan GL ES versión 2.
Jarl
1
Intenté instalar esos archivos, pero adb me mostró un mensaje de error de que los archivos ya estaban instalados. Intenté reinstalar, luego dijo que los certificados son inconsistentes. ¿Que debería hacer entonces?
huong
Pude desinstalar paquetes preinstalados con adb uninstall com.android.vendingy adb uninstall com.google.android.gms. Después de instalar los paquetes mencionados anteriormente, mi aplicación se ejecuta, pero veo EGL_emulation: eglSurfaceAttrib not implementedmensajes de advertencia en el registro y no hay ningún mapa visible en la aplicación. Este es, creo, un problema de emulador / GPU. Mi GPU es Radeon HD6870y estaba ejecutando Android 4.1.2 sin las API de Google en el emulador.
dvim
Con respecto a "EGL_emulation: eglSurfaceAttrib no implementado", quizás intente "Usar GPU de host" en las opciones de emulación.
Dan Brough
39

Pasé aproximadamente un día para configurar la nueva API de gmaps (Google Maps Android API v2) en el emulador de Android. Ninguno de los métodos que encontré en Internet me estaba funcionando correctamente. Pero aun así lo hice. Aquí es cómo:

  1. Crea un nuevo emulador con la siguiente configuración:

Ingrese la descripción de la imagen aquí

En las otras versiones no pude configurar debido a varios errores cuando instalé las aplicaciones necesarias.

2) Inicie el emulador e instale las siguientes aplicaciones:

  • GoogleLoginService.apk
  • GoogleServicesFramework.apk
  • Phonesky.apk

Puede hacer esto con los siguientes comandos:

2.1) adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
2.2) adb shell chmod 777 /system/app
2.3-2.5)adb push Each_of_the_3_apk_files.apk /system/app/

Enlaces para descargar archivos APK . Los he copiado de mi dispositivo Android rooteado.

3) Instale Google Play Services y Google Maps en el emulador. Tengo un error 491, si los instalo desde la tienda Google Play . Subí las aplicaciones al emulador y ejecuté la instalación localmente. (Puede usar adbpara instalar esto). Enlaces a las aplicaciones:

4) Ejecuté con éxito una muestra de demostración en el emulador después de estos pasos. Aquí hay una captura de pantalla:

mapas de Google

Paha
fuente
Creo que este método tiene algunos pasos innecesarios. Pruebe mi método de una de las otras respuestas con solo dos aplicaciones para instalar ...
Nemanja Kovacevic
Probé su método, pero al cargar aplicaciones en el directorio del sistema / aplicación, adb generó un error que decía que no hay suficiente espacio libre. La creación de un nuevo emulador con una gran cantidad de memoria no ayudó. En otras versiones del emulador, su método no funcionó.
Paha
1
En el paso 3) el comando de instalación es adb install com.google.android.apps.maps-1.apky adb install com.google.android.gms-2.apk.
sulai
Y asegúrese de obtener una versión del servicio Google Play que se adapte a sus necesidades. Puede descargarlos de papktop.com/tag/google-play-services-apk .
sulai
Solo asegúrese de estar siempre instalando la última versión de APK de Google Play, porque en el momento actual, Google Play v2, no le permitirá instalar la actualización (lo que genera el desagradable error 491) y esta actualización es necesaria para ejecutar aplicaciones de Google Maps.
Serhiy
29

Estoy respondiendo esta pregunta por segunda vez, porque la solución que probé y que no funcionó al principio ahora funciona, y puedo recrear los pasos para que funcione :)

También tuve la sensación de que la falta de Google Play Store es un culpable aquí, así que intenté instalar Google Play Store en el emulador con un consejo en este enlace y este enlace combinado. Tuve algunas dificultades, pero al final logré instalar Google Play Store y lo probé descargando alguna aplicación aleatoria. Pero la actividad de mapas siguió mostrando el mensaje con el botón "Actualizar". Ese botón me llevaría a la tienda, pero allí recibía un mensaje sobre "artículo no encontrado" y los mapas seguían sin funcionar. En ese momento me di por vencido.

Ayer, activé la misma aplicación de prueba por accidente y ¡funcionó! Estaba muy confundido, pero rápidamente hice una diferencia con el emulador donde está funcionando y una nueva limpia y he determinado dos aplicaciones en la que funciona en / data / app / directory: com.android.vending-1. apk y com.google.android.gms-1.apk. Esto es extraño ya que, cuando estaba instalando Google Play Store siguiendo las instrucciones de esos sitios, estaba presionando Phonesky.apk, GoogleServicesFramework.apk y GoogleLoginService.apk y en una carpeta / sistema / aplicación diferente.

De todos modos, ahora la API de Google Maps de Android v2 está funcionando en mi emulador. Estos son los pasos para hacer esto:


Crea un nuevo emulador

  • Para el dispositivo , elija "5.1" WVGA (480 x 800: mdpi) "
  • Para el objetivo , elija "Android 4.1.2 - API nivel 16".
  • Para "CPU / ABI", elija "ARM"
  • Deje el resto a los valores predeterminados

Estos son los ajustes que me funcionan. No sé por diferentes.


Inicie el emulador


instale com.android.vending-1.apk y com.google.android.gms-1.apk a través del comando de instalación de ADB


Google Maps debería funcionar ahora en tu emulador.

Nemanja Kovacevic
fuente
Aquí está el enlace a mi blog con la descripción de lo que he intentado para que esto funcione nemanjakovacevic.net/blog/2012/12/…
Nemanja Kovacevic
Desafortunadamente, la revisión 4 de los servicios de Google Play da un nuevo error: los servicios de Google Play están desactualizados. Requiere 2012100 pero encontrado 2010110
Ilja S.
3
Ok, si tiene servicios de juego cuarta revisión, mire la respuesta de @danbrough y descargue los apks especificados en el comentario: enlace
Ilja S.
1
tenga en cuenta que esto también funciona con x86, ¡lo que hace que el emulador sea mucho más ágil!
Cafeína
3

He creado una descripción (en alemán) de cómo hacer que funcione . Básicamente, necesita un emulador con al menos nivel de API 9 y sin API de Google. Luego, tendrás que obtener los APK de un dispositivo rooteado :

adb -d pull /data/app/com.android.vending-2.apk
adb -d pull /data/app/com.google.android.gms-2.apk

e instalarlos en el emulador:

adb -e install com.android.vending-2.apk
adb -e install com.google.android.gms-2.apk

Incluso puede ejecutar la aplicación nativa de Google Maps, si tiene un emulador con al menos nivel de API 14 y además instalar com.google.android.apps.maps-1.apk

Que te diviertas.

Kurt Huwig
fuente
2

Intenté ejecutar un Google Maps v2 de Android con un emulador y encontré muchas formas de hacerlo, pero ninguna de ellas funcionó para mí. Siempre tengo esta advertencia en el Logcat Google Play services out of date. Requires 3025100 but found 2010110y cuando quiero actualizar los servicios de Google Play en el emulador no pasa nada. El problema era que el APK com.google.android.gms no era compatible con la versión de la biblioteca en mi SDK de Android.

Instalé estos archivos "com.google.android.gms.apk", "com.android.vending.apk" en mi emulador y mi aplicación Google Maps v2 funcionó bien. No se requirió ninguno de los otros pasos relacionados con / system / app.

Adil
fuente
1
esos son los archivos para instalar: vending.apk y gms.apk
Adil
2

Esta aplicación no se ejecutará a menos que actualice Google Play Services. Lo he intentado durante tanto tiempo, pero aún así no obtuve el mapa ... Solo aparece una pantalla en blanco, incluso si modifiqué mi Servicio de Google Play dado por el comentario a continuación.


Verifique su archivo de manifiesto de servicios de reproducción y verifique el código de versión del archivo APK com.google.android.gms. A continuación, es "3136110". Descargue estos archivos APK e instálelos desde un indicador de DOS, pero antes de la instalación, ejecute su emulador de destino.

package="com.google.android.gms"
android:versionCode="3136110"
android:versionName="3.1.36 (673201-10)

Obtuve estos archivos APK de este enlace .

usuario
fuente
2

Resolví este problema siguiendo los siguientes pasos:

  • En emulador:

    Tienes que usar la última API Google APIs(Google Inc.)-API Level 19.

    Haz el resto de las cosas colocadas en la captura de pantalla.

    ingrese la descripción de la imagen aquí

  • Clave API:

    Cree una nueva clave API y verifique cuidadosamente la clave API de Google Map y la clave SHA.

  • Servicios de Google Play:

    Debe descargar la última versión de Google Play Services com.android.vending-4.8.20.apk . En ese sitio, si los servicios de Google Play no funcionaban, significa que puede encontrar muchos sitios en Internet con nombre com.android.vending 4.8.20.apk.

    puede ejecutar los servicios de Google Play mediante el símbolo del sistema adb install com.android.vending 4.8.20.apk.

    Nota: debe descargar los últimos servicios de Google Play porque año tras año la última versión se actualizará en Internet.

    salida :

    ingrese la descripción de la imagen aquí

Steve
fuente
1
@JJD Estoy editado, échale un vistazo. Funcionará. Gracias por señalarlo.
Steve
0

Después de actualizar a ADT 22.0.1, debido a las bibliotecas privadas de Android, el servicio de Google Maps estaba dando algún error y la aplicación se bloqueaba. Así que finalmente encontré la solución y funcionó para mí.

Simplemente instale la biblioteca de servicios de Google Play y luego vaya a google-play-service/libproject/google-play-services_libdesde https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b. Importe eso a su espacio de trabajo. Limpie su proyecto donde desea usar gogole-play-services-lib y luego compílelo nuevamente y vaya al Proyecto -> Propiedades -> Java BuildPath -> seleccione "Bibliotecas privadas de Android, Dependencias de Android, servicio de google-play"

En Propiedades, vaya a Android y luego elija cualquiera de las versiones y luego elija agregar y seleccione google-play-service-lib y luego presione Aplicar y finalmente Aceptar.

Por último, vaya al Proyecto -> Herramientas de Android -> Bibliotecas de soporte de Android. Acepte la licencia y después de la instalación ejecute su proyecto.

Funcionará bien.

Miel Shah
fuente
0

Desde Android SDK Manager, instale: Extras: Servicios de Google Play

Franck
fuente
0
 just change it to 

compile 'com.google.android.gms:play-services-maps:9.6.0'
compile 'com.google.android.gms:play-services-location:9.6.0'

esto funciona para mí la versión actual es 10.0.1

Jagapathi
fuente