Dans Eclipse, impossible de référencer un projet de bibliothèque Android dans un autre projet Android


104

Pendant que j'écrivais cette question, j'ai réussi à la résoudre, alors répétez-la ici pour le bénéfice des autres. Voici le problème initial:

J'ai créé un projet de bibliothèque très simple que je souhaite référencer dans un autre projet. Je l'ai fait auparavant sans problème, donc je ne sais pas vraiment pourquoi cela ne fonctionne pas cette fois. J'ai:

  1. Marquage du projet de bibliothèque via les propriétés du projet. Le default.propertiesfichier a cet ensemble:android.library=true

  2. Dans mon autre projet, j'ai ajouté une référence à mon projet de bibliothèque via les propriétés du projet. Le default.propertiesfichier a la référence ajoutée comme prévu ieandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. La coche verte en regard du projet de bibliothèque référencé commence en vert puis se transforme en croix rouge.

Cela implique qu'il doit y avoir quelque chose de mal / manquant dans le projet de bibliothèque mais je ne sais pas quoi. Mon projet de bibliothèque à cette occasion est BEAUCOUP plus simple que le précédent que j'ai créé.


Cette solution a aidé dans mon cas: stackoverflow.com/questions/9283040/ ... J'espère que cela aide quelqu'un
Abeer Sul

Réponses:


160

OK Voici la solution que j'ai trouvée en cherchant le fichier default.properies du projet de référencement (pas la bibliothèque) dans mon système de fichiers. Bien que le projet de référencement se trouve dans le même espace de travail Eclipse que le projet de bibliothèque, les fichiers réels se trouvent ailleurs dans le système de fichiers, c'est-à-dire qu'ils ne sont pas dans le même dossier parent du projet de bibliothèque. Dès que j'ai placé le projet de référencement dans le même dossier physique que le projet de bibliothèque, tout s'est bien passé.

Je suppose que cela doit être quelque chose à voir avec Android utilisant une fourmi sous les couvertures.

Modifier: le nom du projet doit correspondre au nom du dossier sur le système de fichiers. Ce que vous voyez dans les propriétés du projet-> Android-> Library Reference est un chemin d'accès relatif au système de fichiers.


3
Je souhaite également ajouter que les liens symboliques ne conviennent pas pour cela. J'avais tous mes projets stockés dans le même dossier les uns que les autres dans un emplacement différent (où je place les choses que je veux sauvegarder), puis un tas de liens symboliques dans mon dossier d'espace de travail vers ces dossiers. Ils étaient donc tous dans le même dossier l'un que l'autre aux deux endroits, mais l'utilisation de liens symboliques a tout gâché. Une fois que j'ai chargé le vrai dossier comme espace de travail de base, tout allait bien.
Zulaxia le

7
+1 Pour articuler ce comportement HORRIBLE du combo Eclipse / ADT. Juste pour info, même placer les deux projets dans le même dossier physique n'aide pas si ce dossier se trouve sur un partage Samba . Ugrrr ...
an00b

20
Parfois, Eclipse supprime la référence, redémarre eclipse et ajoute à nouveau, maintenant cela devrait fonctionner.
Warpzit

C'était un problème pour mes projets appartenant et situés dans le même espace de travail. Importé le projet dans le même espace de travail que la bibliothèque et tout a bien fonctionné. Merci d'avoir répondu.
Jayshil Dave

Vérifiez que votre espace de travail et votre bibliothèque se trouvent au même emplacement de dossier. J'ai commis l'erreur de retélécharger ADT et j'ai créé un projet sous l'espace de travail C: \ users par opposition à mon espace de travail réel. Inutile de dire, vérifiez à nouveau que votre projet ET votre bibliothèque sont dans le même répertoire de travail!
Garbit

11

Assurez-vous que les deux projets sont présents dans le même espace de travail. Pour ce faire, lors de l'importation des projets, assurez-vous que la case "Copier le projet dans l'espace de travail" est cochée.


1
Comment puis-je utiliser le même projet de bibliothèque dans un autre projet. Si je le fais, il montre le symbole de la croix de couleur rouge .. @Karthik
Shylendra Madda

10

le même problème se produira si votre projet de bibliothèque est dans une partition différente de votre espace de travail actuel. J'ai le même problème en ce moment. Ma source git est en C: et je déplace simplement mon espace de travail vers D: et tout commence à s'effondrer.


4
Si les projets principal et de bibliothèque sont sur des lecteurs différents , il semble qu'Eclipse ne puisse pas résoudre le chemin de référence de l'absolu au relatif, et Eclipse n'en est pas satisfait (la coche verte se transforme en croix rouge).
Pang

a fonctionné pour moi aussi. J'ai remplacé le projet référencé dans le même lecteur (H :) et maintenant c'est ok
Tobia Zambon

4

Le moyen le plus simple d'obtenir les chemins des chemins de bibliothèque corrects consiste à utiliser l'interface graphique d'Eclipse pour ajouter la bibliothèque comme indiqué dans la capture d'écran suivante et laisser Eclipse se charger de placer les chemins relatifs corrects dans project.properties. C'est une configuration courante pour héberger vos projets de bibliothèque dans des répertoires très différents de vos projets principaux qui utilisent la bibliothèque. Cette méthode fonctionnera si le "projet de bibliothèque" et le projet qui l'utilise sont dans le même "espace de travail" éclipse (ils "n'ont pas besoin" d'être dans le même dossier parent): entrez la description de l'image ici


4
Le problème est que la bibliothèque et le projet sont sur des lecteurs / partitions différents ... voir les listes de bogues ci-dessus. Le vôtre est très bien parce que le chemin de votre bibliothèque montre des chemins relatifs au lieu des chemins complets DOS ...
kenyee

3

Veuillez vous assurer que le projet de bibliothèque est marqué comme "Est une bibliothèque" - cliquez avec le bouton droit sur le projet de bibliothèque - propriétés - Android - cochez la case "Est une bibliothèque" - dans project.properties du projet de bibliothèque, vous devriez avoir une nouvelle entrée: "android .library = true. Maintenant, ajoutez-le dans le projet que vous voulez comme décrit dans l'article ci-dessous (l'article avec l'image intégrée - de Nilesh Pawar).


1
Cela a très bien fonctionné pour moi. La partie déroutante est que je pense que l'emplacement de cette case à cocher «Est une bibliothèque». Il n'est pas intuitif que cela sélectionne réellement la cible de la version actuelle de l'application / bibliothèque et non un commutateur d'option pour les bibliothèques à inclure.
EtienneSky


2

Encore une observation sur la même question.

Pour moi, les deux projets se trouvaient dans le même dossier parent et étaient tous deux locaux dans l'espace de travail. Même alors, le problème se posait toujours.

J'ai édité le fichier "project.properties" et mis le chemin absolu (avec des barres obliques '/' pour séparateur) du projet de bibliothèque. Sauvegardé et fermé. Ensuite, je suis allé dans la boîte de dialogue des propriétés du projet, j'ai supprimé la bibliothèque (qui affichait toujours l'icône de croix mais avec un chemin abs) et l'a rajoutée comme d'habitude. Étonnamment, le problème est résolu et le projet se compile et s'exécute.

C'est vraiment étrange et cela doit être un bug avec l'ADT. J'utilise la version 20.0.2 d'ADT


+1. Face à ce problème lors du changement de bibliothèques avec les mêmes noms. On dirait qu'éclipse (ou ADT) tente de faire référence à l'ancien et échoue. Le redémarrage d'Eclipse aide. (Ubuntu 12.04, Eclipse Indigo, ADT 21.0.0)
Luten

2

lorsque le développeur fait référence à Facebook ou à tout autre projet de bibliothèque, nettoyez tout d'abord le projet de eclipse-> projet-> projet propre. qui veulent permettre l'erreur de croix rouge dans l'écran de référencement.


2

Pour moi, je viens de redémarrer l'éclipse et la bibliothèque ajoutée fonctionne bien.

Je veux dire la première fois qu'il montre des marques rouges après l'ajout du projet de bibliothèque. Bien que le projet principal et le projet de bibliothèque eclipse se trouvent dans le même dossier d'espace de travail et qu'aucun fichier de ressources ne se trouve en dehors du dossier du projet.

Ainsi, vous pouvez essayer de redémarrer votre éclipse. Bon codage ....


1

La solution de contournement pour moi était de

  1. Créer un nouvel espace de travail
  2. Importer un projet de bibliothèque dans cet espace de travail
  3. Importer le projet souhaité dans cet espace de travail
  4. Avoir à la fois le projet et la bibliothèque projeter la même version cible du système d'exploitation Android
  5. Projet de bibliothèque de référence dans mon projet

a résolu mon problème


La création d'un nouvel espace de travail a également résolu le problème. Vous devez également effacer les projets.
Omer Cansizoglu

1

J'ai eu le même problème là-bas lorsque j'essaye de changer mon espace de travail, voici ma solution:

  1. importer et copier toutes les données du projet, y compris le projet de bibliothèque dans l'espace de travail
  2. supprimez l'ancienne référence de projet en faisant un clic droit sur le projet -> Propriétés -> Android -> Bibliothèque, et sélectionnez la bibliothèque corrompue (pour que je l'appelle) et choisissez Supprimer
  3. nettoyer d'abord le projet (pour actualiser les propriétés de votre projet)
  4. allez dans Propriétés du projet de bibliothèque -> Android -> Bibliothèque et vérifiez la bibliothèque si ce n'est pas le cas, cliquez sur Appliquer puis sur OK
  5. si le projet de bibliothèque est une bibliothèque est déjà coché, décochez-le d'abord, puis Nettoyez le projet de bibliothèque, puis refaites l'étape 4
  6. allez au projet dans lequel vous voulez que la bibliothèque se trouve puis faites un clic droit sur le projet -> Propriétés -> Android -> Bibliothèque, Ajouter puis choisissez le projet de bibliothèque (il devrait être là) et cliquez sur Appliquer puis sur OK
  7. s'il n'apparaît toujours pas, nettoyez le projet une fois de plus et cela devrait faire


0

Quand vous regardez le chemin de référence avant et après, il vient de ie "C: / workspace / mylib" et va à "../../mylib" une fois copié au bon endroit, assez intéressant.


0

FYI,

Ce qui a fonctionné pour moi était de supprimer les projets de `` bibliothèque '' (les projets réels) de mon espace de travail (sans supprimer les fichiers), puis de les réimporter à l'aide de l'assistant (importer le projet Android existant à partir du code source).


A également travaillé pour moi. Je viens de supprimer et réimporter les projets (en tant que `` projet d'éclipse existant '')
Neromancer

0

Merci d'avoir posé la question. J'ai eu exactement le même problème lors de l'intégration de Facebook avec mon application Android. J'ai résolu le problème en déplaçant mon projet de développement sur le même lecteur Windows dans lequel se trouvait le projet de bibliothèque. D'une manière ou d'une autre, Eclipse est incapable de lire correctement l'emplacement du projet de bibliothèque à partir du fichier default.properties s'il se trouve dans un lecteur différent.


0

Semblable à l'article de Sufi Khan, j'ai également résolu ce problème avec un redémarrage. Mon cas différait en ce que lorsque j'ai accédé pour la première fois à Propriétés-> Android et ajouté la bibliothèque, j'avais une belle coche verte. Lorsque j'ai fermé la boîte de dialogue, Eclipse affichait toujours des erreurs de type de classe introuvable. Quand j'ai vérifié à nouveau les propriétés, j'ai vu le X rouge. Mais la solution de M. Kahn (supprimer la mauvaise bibliothèque, redémarrer Eclipse, ajouter à nouveau la bibliothèque) fonctionnait bien.

J'utilise la version 0702 du bundle ADT (commence par "cluster", rime avec "duck").


0

J'ai suivi la réponse acceptée mais j'ai également dû m'assurer que mon fichier "project.properties" était lisible.

Si le fichier est en lecture seule (archivé dans le contrôle de code source), eclipse ne le modifiera pas. L'ajout de la référence de bibliothèque réussira, mais la modification ne sera pas conservée après avoir cliqué sur OK.

Si la fermeture de la fenêtre des préférences et la réouverture supprime la bibliothèque que vous venez d'ajouter, cela peut être votre solution.


0

Si votre projet de bibliothèque n'apparaît toujours pas, essayez d'ajouter un indicateur de bibliothèque dans les propriétés de votre projet de bibliothèque

Ajouter android.library = true

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 edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library=true
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.