web-dev-qa-db-fra.com

API Google Maps Android v2 - Exemple de crash de code

J'essaie de faire fonctionner le exemple de code d'Android 'Google Maps Android API v2'. Je construis le projet sans erreurs. Cependant, lorsque j'essaie d'exécuter l'application sur mon Galaxy Nexus (connecté à USB sur mon ordinateur portable), l'application se bloque immédiatement.

  • J'ai renseigné ma propre clé API Maps dans le fichier AndroidManifest.xml
  • J'ai construit contre Android 4.1.2

C'est la journalisation:

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

Quelqu'un a-t-il une idée de la façon de résoudre ceci ou de ce que je pourrais mal faire?

43
alexx

Suivez la feuille de berceau très, très attentivement:
https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

En particulier, je pense que vous devez:

  • Importez la source réelle du projet "google-play-services_lib" et associez-la en tant que bibliothèque Android .
    • Faites ceci via Projet -> Propriétés -> Android -> Bibliothèque, Ajouter -> google-play-services_lib (vous pouvez cliquer avec le bouton droit de la souris sur votre projet et choisir Propriétés, puis sélectionner Android). 
    • Faites pas ajoutez-le en tant que projet dépendant via le "chemin de construction Java" de votre projet, cela n'a pas fonctionné pour moi.
  • Ajoutez les fichiers google-play-services.jar et Android-support-v4.jar dans un dossier "libs" du projet exemple, puis ajoutez-les en tant que "JAR externes externes" dans "Chemin de construction -> Configurer le chemin de construction -> Bibliothèques". .

J'ai trouvé que cette deuxième étape était nécessaire car je rencontrais exactement la même erreur que vous lorsque vous essayez d'utiliser le code exemple. La première étape était nécessaire pour éviter une NoClassDefFoundError dans com.google.Android.gms.R$styleable dans mon projet réel. 

Je devais également effectuer une construction propre et désinstaller l'application du périphérique (d'une tentative de test précédente) avant que l'exemple de code ne fonctionne.

78
Dan J

Suivez le code d’échantillon suivant de Google.

Passez à la section "4" et suivez les instructions ci-dessous:

  • Ajouter un nouveau dossier à votre projet nommé "libs"
  • Copiez le formulaire google-play-services.jar:

    "Android-sdk-folder\extras\google\google_play_services\libproject\google-play-services_lib\libs"

    dans le dossier "libs" -> cliquez avec le bouton droit de la souris sur ce fichier dans le dossier -> Chemin de construction -> Ajouter au chemin de construction. 

  • Copiez le formulaire Android-support-v4.jar:

    "Android-sdk-folder\extras\Android\support\v4"

    dans le dossier "libs" -> cliquez avec le bouton droit de la souris sur ce fichier dans le dossier -> Chemin de construction -> Ajouter au chemin de construction.

Où "Android-sdk-folder" ressemble généralement à: "C:\Utilisateurs\Nom_utilisateur\Android-sdks"

26
David

J'ai eu le même problème, j'ai fait ce qui suit pour résoudre le problème.

  1. Allez dans "Propriétés" du projet. 
  2. Sélectionnez "Chemin de construction Java" 
  3. Sélectionnez l'onglet "Commander et exporter" 
  4. Vous devriez voir les chemins et les dépendances "src" et "gen" du projet sélectionné ici. 

L'ordre dans lequel ils ont été listés était d'abord "src", puis "gen", je les change, de sorte que le dossier "gen" soit construit avant le "src"

ALORS "Vérifier" chacun des éléments énumérés

voir: NoClassDefFoundError pour le code dans une bibliothèque Java sur Android

14
John Oleynik

Cela est dû à beaucoup de confusion sur la manière d'importer des projets. Les docs https://developers.google.com/maps/documentation/Android/intro#sample_code Indiquent que vous ne devez pas sélectionner "Copier les projets dans l'espace de travail" à aucun moment et pour obtenir les exemples. c'est ce que vous devez respecter. Ne sélectionnez pas cette option pour les services de lecture et les échantillons, laissez-les là où ils se trouvent. 

Après avoir importé les deux, vérifiez les points suivants:

  1. Cliquez avec le bouton droit sur le projet MainActivity et choisissez les propriétés.
  2. Allez sur Android et assurez-vous que vous voyez une coche verte à côté de google-play-services-lib (La librairie de services de jeu ne devrait jamais être ajoutée sous forme de fichier .jar, mais plutôt en tant que bibliothèque Android).
  3. Accédez au chemin de construction Java et importez le fichier JAR externe (Android-support-v4.jar) dans la section des bibliothèques.
  4. [IMPORTANT] Allez dans Order and Export dans le chemin de construction Java et assurez-vous que la case Android-support-v4.jar est cochée (cela n'arrivera pas par défaut et c'est pourquoi vous voyez l'erreur mentionnée. au sommet)
  5. Assurez-vous de nettoyer et de construire le projet après avoir apporté des modifications, de sorte que vous n'essayiez pas de résoudre les problèmes qui fonctionnaient, mais que vous n'ayez tout simplement pas été poussés.
2
kaskader
  1. Suivez exemple d'instructions de code by google. 
  2. Et définissez le chemin de génération Java comme suit:enter image description here
1
nguyên
  1. Essayez le même exemple de code dans le nouvel espace de travail.

  2. Même si vous pouvez copier et coller les exemples de projet de carte et de projet google play services-lib (/ extras/google/google_play_services/libproject/google-play-services_lib,) et les coller dans le nouvel espace de travail.

  3. Après n’oubliez pas d’ajouter le FICHIER JAR REQUIS DU SDK. ("Android-support-v4.jar" se trouve dans "/extras/Android/compatibility/v4/Android-support-v4.jar" sous votre répertoire "Android-sdk".)
0
beginner

J'ai fait face au même problème et je n'ai pas pu résoudre. Enfin, j'ai pris le dossier des exemples de projets d'une autre machine, je l'ai copié dans la mienne et chargé le nouveau projet que j'ai pris de l'autre machine. Alors tout fonctionne bien. J'ai essayé de suivre le problème en comparant 2 exemples de projets mais je n'ai pas pu. Quoi qu'il en soit, les nouveaux exemples de projets que j'ai pris sur l'autre machine fonctionnent bien.

0
Nalaka

J'ai eu à peu près le même problème… .. Le fichier 'import-summary.txt' avait la réponse… .. Dans mon cas, j'avais importé le projet Eclipse dans un chemin avec un espace dans le chemin. Cela pose un problème avec l'assistant . Nouveau chemin créé. Projet ré-importé. Puis Build/Rebuild Project .. Pas de problèmes.

0
user2380177