2010-09-25 15 views
19

Meine App besteht nur aus einer Karte mit einem Overlay, aber wenn ich meine MapView erstellen, stürzt meine App mit einem NoClassDefFoundError ab. Ich benutze den Google API AVD, der zu meinem Ziel passt, aber anscheinend mache ich immer noch etwas falsch. Irgendwelche Ideen?Google Maps Android API gibt eine NoClassDefFoundError

EDIT: Falls es hilft, beschwert sich mein NoClassDefFoundError über [generic]. Ich kann verstehen, warum es keine Klassenbestimmung für [generic] gibt, aber ich bin nicht sicher, woher das kommt.

Auch eine spätere ClassNotFoundException beschwert sich von com.google.android.maps.MapView in loader dalvik.system.PathClassLoader[/data/app/mathphreak.cellmap-1.apk], und das verursacht dann einen anderen NoClassDefFoundError für java.lang.NoClassDefFoundError: com.google.android.maps.MapView.

Antwort

1

Es könnte zwei Dinge geben.

i) Stellen Sie sicher, dass Sie alle Ihre Aktivitätsklassen in der Klasse AndroidManifest.xml definiert haben.

ii) Stellen Sie sicher, dass Sie Ihr Android-Projekt mit "Google APIs" anstelle von "Android 2.x" kompilieren. Wenn Sie nur mit Google APIs kompilieren, werden Google Maps-Klassen hinzugefügt.

+0

Dank @Sharj ich alle angewendet haben die Antworten oben, aber dein Trick hat den Job erledigt. –

+0

@AdnanAmjad Sie sind willkommen. – Sharj

50

Achten Sie darauf, die folgende Zeile in der Anwendung manifestieren aufgenommen haben:

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

und sicherstellen, dass es an der richtigen Stelle. Mein Problem (hatte ähnliche Fehlermeldungen) war, dass ich das hier drin hatte, aber wie die Verwendungen-Berechtigung stuff es nur unter dem Root-Element-Manifest war, wenn in der Tat das Uses-Bibliothek-Element unter der Anwendung platziert werden soll Element. Falls ich nicht klar genug war, sehen Sie sich den Teil an: Konfigurieren Sie das Anwendungsmanifest von Sameers link.

+0

Es funktioniert nicht für mich auf Gennymotion Emulator :( – Jackie

+0

@Jackie, tut mir leid, ich kann Ihnen nicht helfen. Auf den ersten Blick scheint es möglicherweise müssen Sie eine Möglichkeit finden, die virtuelle Maschine mit einem tatsächlichen Google-Konto verknüpfen, aber ehrlich gesagt habe ich keine Ahnung .. Also warum nicht Google: gennymotion maps NoClassDefFoundError und finde es heraus, posten eine Antwort hier und auf die zahlreichen SO Fragen zu diesem speziellen Thema und ernten den Ruhm. Oder zumindest gehen vote up all diese Fragen :) – Timo

+1

Danke @Timo, Ich löste das Problem. Einfach durch die Installation von Google Maps aus PlayStore. Ich denke, Gerät muss Google Maps verwenden Karte v2 – Jackie

12

hatte ich das gleiche Problem und ich regelte es dank Timo Lehto Antwort, aber diese Saite setzen

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

nach der Eröffnung Anwendung Tag (am Anfang)

<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: Vielen Dank für eine gute Antwort .. +1 –

1

Eine weitere Sache zu überprüfen,

  • Wenn Sie zwei Sätze von Bibliotheken für Karten haben. Dann funktioniert es nicht. Bitte überprüfen Sie den Build-Pfad.

Hoffe, dies kann für jemanden funktionieren.

2

Ich hatte das gleiche Problem, und ich löste es im Manifest zu ändern:

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

zu

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

der "Punkt" ist der Unterschied

Verwandte Themen