2010-09-25 25 views
19

Mi aplicación simplemente consiste en un mapa con una superposición, pero cuando creo mi MapView, mis aplicación se bloquea con un NoClassDefFoundError. Estoy usando el Google API AVD que coincide con mi objetivo, pero aparentemente sigo haciendo algo mal. ¿Algunas ideas?API de Google Maps para Android da una NoClassDefFoundError

EDITAR: En caso de que ayude, mi NoClassDefFoundError se queja de [generic]. Puedo entender por qué no hay definiton clase para [generic], pero no estoy seguro de por dónde que viene.

Además, una ClassNotFoundException posterior se queja de com.google.android.maps.MapView in loader dalvik.system.PathClassLoader[/data/app/mathphreak.cellmap-1.apk], y luego continúa causando un NoClassDefFoundError diferente para java.lang.NoClassDefFoundError: com.google.android.maps.MapView.

Respuesta

1

Podría haber dos cosas.

i) Asegúrese de haber definido todas sus clases de actividad en la clase AndroidManifest.xml.

ii) Asegúrese de que está compilando su proyecto de Android usando "Google APIs" en lugar de "Android 2.x". Si compila con las API de Google solo, agregará clases de Google Maps.

+0

Gracias @Sharj he aplicado todos las respuestas anteriores, pero su truco hizo el trabajo. –

+0

@AdnanAmjad De nada. – Sharj

50

Asegúrese de que ha incluido la siguiente línea en el manifiesto de aplicación:

<uses-library android:required="true" android:name="com.google.android.maps" /> 

y asegurarse de que está en el lugar correcto. Mi problema (tenía mensajes de error similares) era que había puesto esto allí pero, al igual que el permiso de usos, estaba justo debajo del manifiesto del elemento raíz, cuando de hecho se supone que el elemento uses-library debe ubicarse debajo de la aplicación elemento. En caso de que yo no era lo suficientemente claro ver la parte: Configuración del manifiesto de la aplicación de Sameers link.

+0

No funciona para mí en el emulador de Gennymotion :( – Jackie

+0

@Jackie, lo siento, no puedo ayudarte. A primera vista, parece que debes encontrar una forma de vincular la máquina virtual con una cuenta de Google real, pero Honestamente no tengo idea ... Entonces, ¿por qué no Google arriba: genymotion mapas NoClassDefFoundError y resolverlo, publicar una respuesta aquí y en las numerosas preguntas acerca de este tema específico y cosechar la fama. O al menos ir a votar todas esas preguntas :) – Timo

+1

Gracias @Timo, He resuelto el problema. Simplemente instalando google maps desde PlayStore. Supongo que el dispositivo debe tener mapas de Google Maps para usar Map v2 – Jackie

12

que tenían el mismo problema y me fijo gracias a la respuesta Timo Lehto pero poner esta cadena

<uses-library android:required="true" android:name="com.google.android.maps" /> 

después de la etiqueta de solicitud de apertura (al principio)

<application 
     android:hardwareAccelerated="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <uses-library 
      android:name="com.google.android.maps" 
      android:required="true" /> 

     <activity ... 
+0

@ Matroska: gracias por la excelente respuesta ... +1 –

1

una cosa más que cheque,

  • Si tiene dos conjuntos de bibliotecas para los mapas. Entonces no funciona. Por favor, compruebe la ruta de compilación.

Espero, esto puede funcionar para alguien.

2

que tenían el mismo problema y lo resolvió cambiando en el manifiesto:

<activity android:name=".GpsActivity" ></activity> 

a

<activity android:name="GpsActivity" ></activity> 

el "punto" es la diferencia