wake-up-neo.com

Google Maps Android API v2 - Beispielcode stürzt ab

Ich versuche, den Beispielcode von Android 'Google Maps Android API v2' zum Laufen zu bringen. Ich bekomme das Projekt fehlerfrei aufgebaut. Wenn ich jedoch versuche, die App auf meinem Galaxy Nexus (verbunden mit USB an meinen Laptop) auszuführen, stürzt die App sofort ab.

  • Ich habe in der AndroidManifest.xml meinen eigenen API-Schlüssel für Maps eingegeben
  • Ich habe gegen Android 4.1.2 gebaut

Dies ist die Protokollierung:

Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) 
Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
VFY: replacing opcode 0x1c at 0x000d 
Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x41ac9930) 
FATAL EXCEPTION: main 
Java.lang.ExceptionInInitializerError
at Java.lang.Class.newInstanceImpl(Native Method)
at Java.lang.Class.newInstance(Class.Java:1319)
at Android.app.Instrumentation.newActivity(Instrumentation.Java:1054)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2097)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2230)
at Android.app.ActivityThread.access$600(ActivityThread.Java:141)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1234)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:137)
at Android.app.ActivityThread.main(ActivityThread.Java:5039)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:793)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:560)
at dalvik.system.NativeStart.main(Native Method) 
Caused by: Java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
at com.example.mapdemo.MainActivity.<clinit>(MainActivity.Java:97)
... 15 more

Hat jemand einen Tipp, wie man das löst oder was ich falsch mache?

43
alexx

Folgen Sie dem Bettlaken sehr, sehr sorgfältig:
https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

Ich denke insbesondere, dass Sie Folgendes tun müssen:

  • Importieren Sie die tatsächliche Quelle für das Projekt "google-play-services_lib" und verknüpfen Sie es als Android -Bibliothek .
    • Führen Sie dies über Projekt -> Eigenschaften -> Android -> Bibliothek, Hinzufügen -> google-play-services_lib durch (Sie können mit der rechten Maustaste auf Ihr Projekt klicken und Eigenschaften auswählen und dann Android auswählen). 
    • Fügen Sie not es als abhängiges Projekt über den "Java Build Path" für Ihr Projekt hinzu. Das hat für mich nicht funktioniert.
  • Fügen Sie die google-play-services.jar und Android-support-v4.jar in einen "libs" -Ordner des Beispielprojekts ein und fügen Sie sie als "Externe externe JARs" in "Buildpfad -> Buildpfad konfigurieren -> Bibliotheken" hinzu. .

Ich fand diesen zweiten Schritt notwendig, da ich beim Versuch, den Beispielcode zu verwenden, genau den gleichen Fehler wie Sie traf. Der erste Schritt war notwendig, um eine NoClassDefFoundError in com.google.Android.gms.R$styleable in meinem realen Projekt zu vermeiden. 

Ich musste auch einen sauberen Build durchführen und die App vom Gerät deinstallieren (von einem früheren Testversuch), bevor der Beispielcode funktioniert hat.

78
Dan J

Folgen Sie den Anweisungen des nächsten Beispielcodes von Google.

Überspringen Sie den Abschnitt "4" und folgen Sie den Anweisungen unten:

  • Fügen Sie Ihrem Projekt einen neuen Ordner mit dem Namen "libs" hinzu.
  • Kopieren Sie das google-play-services.jar-Formular:

    "Android-SDK-Ordner\extras\google\google_play_services\libproject\google-play-services_lib\libs"

    in den "libs" Ordner -> Rechtsklick auf dieses Jar in diesem Ordner -> Erstellungspfad -> Zum Erstellungspfad hinzufügen. 

  • Kopieren Sie das Android-support-v4.jar-Formular:

    "Android-SDK-Ordner\Extras\Android\Support\V4"

    in den "libs" Ordner -> Rechtsklick auf dieses Jar in diesem Ordner -> Erstellungspfad -> Zum Erstellungspfad hinzufügen.

Wo "Android-sdk-Ordner" normalerweise so aussieht: "C:\Benutzer\Benutzername\Android-sdks"

26
David

Ich hatte das gleiche Problem. Ich habe folgendes getan, um das Problem zu beheben.

  1. Gehen Sie zu "Eigenschaften" des Projekts. 
  2. Wählen Sie "Java Build Path" aus. 
  3. Wählen Sie die Registerkarte "Bestellen und Exportieren" 
  4. Hier sollten die Pfade und Abhängigkeiten des ausgewählten Projekts "src" und "gen" angezeigt werden. 

Die Reihenfolge, in der sie aufgelistet wurden, war "src" und dann "gen".

DANN "überprüfen" Sie jeden der aufgeführten Artikel

siehe: NoClassDefFoundError für Code in einer Java-Bibliothek unter Android

14
John Oleynik

Dies geschieht aufgrund vieler Verwirrung beim Importieren von Projekten. Die Dokumente https://developers.google.com/maps/documentation/Android/intro#sample_code Sagen, dass Sie an keiner Stelle "Projekte in den Arbeitsbereich kopieren" und zum Abrufen der Beispiele auswählen sollten Laufen ist das, woran Sie sich halten müssen. Wählen Sie diese Option nicht für die Play-Services und Samples - lassen Sie sie dort, wo sie sind. 

Nachdem Sie beide importiert haben, überprüfen Sie Folgendes:

  1. Klicken Sie mit der rechten Maustaste auf das MainActivity-Projekt, und wählen Sie Eigenschaften aus
  2. Gehen Sie zu Android und vergewissern Sie sich, dass neben google-play-services-lib .__ ein grünes Häkchen angezeigt wird. Die play services-Bibliothek sollte niemals als Dose hinzugefügt werden, sondern als Android-Bibliothek.
  3. Gehen Sie zu Java Build Path und importieren Sie externes jar (Android-support-v4.jar) im Abschnitt Bibliotheken
  4. [WICHTIG] Rufen Sie im Java-Erstellungspfad die Option zum Bestellen und Exportieren auf, und stellen Sie sicher, dass neben Android-support-v4.jar ein Häkchen angezeigt wird (dies geschieht standardmäßig nicht und daher wird der von Ihnen erwähnte Fehler angezeigt oben)
  5. Stellen Sie sicher, dass Sie das Projekt bereinigen und erstellen, nachdem Sie Änderungen vorgenommen haben, damit Sie nicht versuchen, Dinge zu beheben, die funktionieren, aber einfach nicht gepusht wurden.
2
kaskader
  1. Folgen Sie den Anweisungen des Beispielcodes von Google. 
  2. Legen Sie den Java-Erstellungspfad wie folgt fest:enter image description here
1
nguyên
  1. Probieren Sie denselben Beispielcode im neuen Arbeitsbereich aus.

  2. Sie können auch das Beispielkartenprojekt und das Google play services-lib-Projekt (/ extras/google_google_play_services/libproject/google-play-services_lib) kopieren und einfügen und in den neuen Arbeitsbereich einfügen.

  3. Vergessen Sie nicht, die ERSTE DÜNDCHEN-DATEI VON SDK nach dem Hinzufügen hinzuzufügen. ("Android-support-v4.jar" befindet sich in "/extras/Android/compatibility/v4/Android-support-v4.jar" in Ihrem "Android-sdk" -Distrikt.)
0
beginner

Ich hatte das gleiche Problem und konnte es nicht lösen. Schließlich nahm ich den Ordner mit den Beispielprojekten von einem anderen Computer, kopierte ihn in meinen Ordner und lud das neue Projekt, das ich vom anderen Computer genommen hatte. Dann funktioniert alles gut. Ich habe versucht, das Problem durch einen Vergleich von zwei Beispielprojekten nachzuverfolgen, konnte dies jedoch nicht. Jedenfalls funktionieren die neuen Beispielprojekte, die ich von der anderen Maschine genommen habe, einwandfrei.

0
Nalaka

Ich hatte ein ähnliches Problem ... Die Datei 'import-summary.txt' hatte die Antwort ... In meinem Fall hatte ich das Eclipse-Projekt in einen Pfad mit einem Leerzeichen im Pfadnamen importiert. Dies verursacht ein Problem mit dem Assistenten Neuer Pfad erstellt. Projekt erneut importiert. Dann Build/Rebuild Project . Keine Probleme.

0
user2380177