‘Open Declaration’ dans Eclipse navigue vers des fichiers de classe plutôt que vers des fichiers sources pour les bibliothèques Android

J’ai deux projets Android ‘A’ et ‘B’. «B» dépend de «A» et est une bibliothèque. Chaque fois que je suis dans le projet ‘B’ et que j’appuie sur ‘Open Declaration’ pour un fichier source Java qui réside dans ‘A’, Eclipse navigue vers le fichier de classe au lieu du fichier source. Cela a bien sûr plusieurs inconvénients!

J’ai regardé le chemin de construction du projet ‘B’ pour voir si la bibliothèque référencée ‘A’ avait le chemin correct vers son projet source, ce qui est le cas.

Quelqu’un sait comment résoudre ce problème?

Voici les fichiers .classpath et project.properties pour chaque projet:

ProjectA .classpath

        

ProjectA project.properties

 # This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file must be checked in Version Control Systems. # # To customize properties used by the Ant build system use, # "ant.properties", and override values to adapt the script to your # project structure. # Project target. target=android-8 android.library=true 

ProjectB .classpath

         

ProjectB project.properties

 # This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file must be checked in Version Control Systems. # # To customize properties used by the Ant build system use, # "ant.properties", and override values to adapt the script to your # project structure. # Project target. target=android-8 android.library.reference.1=../ProjectA 

Vous pouvez importer le projet de bibliothèque non seulement en tant que librairie Android (c’est ainsi que cela est censé être fait), mais également en tant que projet lié dans le menu “Chemin de construction Java” habituel. Ensuite, veillez à déplacer cette importation vers le haut (au moins davantage que l’entrée “Projets de bibliothèque”) dans l’onglet “Commander et exporter”.

Cela fonctionne, mais c’est un hack et c’est sale. Ce n’est pas ainsi que cela est censé être fait … et lorsque vous déployez l’application sur le téléphone, Eclipse écrira un message d’erreur dans la console en indiquant qu’un apk est introuvable.

Pourtant, je trouve plus pratique que le lien vers le fichier de classe.

Je ne sais pas ce qui se passe. Mes collègues au bureau utilisent la même configuration que moi, et ils n’ont pas ce problème, mais il semble que nous ne sums pas les seuls à avoir ce problème: http://code.google.com/p/android/issues/detail ? id = 20731

J’ai eu le même problème lorsque ma version du projet de bibliothèque A était dans “Propriétés> Chemin de construction Java> Bibliothèques”, mais pas dans “Propriétés> Chemin de construction Java> Projets”.

Le problème a été résolu après que j’ai fait ce qui suit:

  1. Supprimez “Projets de bibliothèque” de “Propriétés> Chemin de construction Java> Bibliothèques”, qui a été ajouté par “Propriétés> Chemin de construction Java> Bibliothèques” (je ne suis pas sûr si cette étape est nécessaire, mais c’est ce que j’ai fait).
  2. Ajoutez le projet A à “Propriétés> Chemin de génération Java> Projets”.
  3. Redémarrez Eclipse (Indigo). Eclipse recrée en quelque sorte les projets de bibliothèque dans “Propriétés> Chemin de construction Java> Bibliothèques”

Le .classpath devrait avoir les éléments suivants:

  

Naviguer dans les fichiers de classe n’était pas le plus ennuyant, mais casser des fichiers de classe au lieu de fichiers java pendant le débogage me rendait folle avant que ce problème ne soit résolu.

Ce qui a fonctionné pour moi: déplacer les projets de lib dans l’onglet Order and Export – juste en dessous de /src et /gen du projet principal.

Ma première supposition serait que vous ayez un JAR avec les classes de A sur le chemin de compilation de B. Vérifiez l’onglet Bibliothèques. Pouvez-vous nous montrer vos fichiers .classpath et project.properties?

La solution suivante fonctionne pour moi:

Accédez au projet de bibliothèque Android (dans votre cas, il s’agit du paramètre A) -> Chemin de construction Java -> Ordre et exportation, assurez-vous que la première entrée est le dossier source de la bibliothèque (A). Nettoyez ensuite le projet de bibliothèque et le projet cible. Maintenant ça marche très bien.