Estoy probando la nueva API de Google Maps V2 para Android y recibo este mensaje cuando se inicia la aplicación:
Esto se ejecuta en un emulador 4.1.
Aquí está mi AndroidManifest.xml
archivo:
<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:
android
google-maps
android-mapview
google-maps-android-api-2
soren.qvist
fuente
fuente
Respuestas:
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 ...
fuente
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:
com.google.android.gms-20140218.apk
com.android.vending-20140218.apk
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:
Si está actualizando un emulador existente, es posible que deba desinstalar versiones anteriores de la siguiente manera:
Eso es todo.
fuente
adb uninstall com.android.vending
yadb uninstall com.google.android.gms
. Después de instalar los paquetes mencionados anteriormente, mi aplicación se ejecuta, pero veoEGL_emulation: eglSurfaceAttrib not implemented
mensajes 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 esRadeon HD6870
y estaba ejecutando Android 4.1.2 sin las API de Google en el emulador.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:
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:
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
adb
para 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:
fuente
adb install com.google.android.apps.maps-1.apk
yadb install com.google.android.gms-2.apk
.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
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.
fuente
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 :
e instalarlos en el emulador:
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.
fuente
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 2010110
y 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.
fuente
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.
Obtuve estos archivos APK de este enlace .
fuente
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.
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 :
fuente
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_lib
desdehttps://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.
fuente
Encontré una buena solución que te permite probar tu aplicación en el emulador y tampoco requiere que vuelvas a la versión anterior de la biblioteca. Vea una respuesta a la pregunta de Stack Overflow Ejecutando Google Maps v2 en el emulador de Android .
fuente
Desde Android SDK Manager, instale: Extras: Servicios de Google Play
fuente
esto funciona para mí la versión actual es 10.0.1
fuente