In Eclipse kann kein Android-Bibliotheksprojekt in einem anderen Android-Projekt referenziert werden


104

Während ich diese Frage schrieb, konnte ich sie lösen. Wiederholen Sie sie hier zum Nutzen anderer. Hier ist das anfängliche Problem:

Ich habe ein sehr einfaches Bibliotheksprojekt erstellt, auf das ich in einem anderen Projekt verweisen möchte. Ich habe dies zuvor ohne Probleme getan, bin mir also nicht sicher, warum es diesmal nicht funktioniert. Ich habe:

  1. Kennzeichnete das Bibliotheksprojekt über Projekteigenschaften. Die default.propertiesDatei hat diesen Satz:android.library=true

  2. In meinem anderen Projekt wurde über Projekteigenschaften ein Verweis auf mein Bibliotheksprojekt hinzugefügt. Die default.propertiesDatei hat die Referenz wie erwartet hinzugefügt, dhandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. Das grüne Häkchen für das referenzierte Bibliotheksprojekt beginnt grün und wechselt dann zu einem roten Kreuz.

Dies impliziert, dass im Bibliotheksprojekt etwas nicht stimmt / fehlt, aber ich weiß nicht was. Mein Bibliotheksprojekt ist bei dieser Gelegenheit VIEL einfacher als das vorherige, das ich erstellt habe.


Diese Lösung hat in meinem Fall geholfen: stackoverflow.com/questions/9283040/… Ich hoffe, es hilft jemandem
Abeer Sul

Antworten:


160

OK Hier ist die Lösung, die ich gefunden habe, als ich in meinem Dateisystem nach der Datei default.properies des referenzierenden Projekts (nicht der Bibliothek) gesucht habe. Obwohl sich das referenzierende Projekt im selben Eclipse-Arbeitsbereich wie das Bibliotheksprojekt befand, befanden sich die tatsächlichen Dateien an einer anderen Stelle im Dateisystem, dh sie befanden sich nicht im selben übergeordneten Ordner des Bibliotheksprojekts. Sobald ich das referenzierende Projekt im selben physischen Ordner wie das Bibliotheksprojekt abgelegt hatte, ging alles in Ordnung.

Ich denke, dass dies etwas mit Android zu tun haben muss, der Ameisen unter der Decke benutzt.

Bearbeiten: Der Projektname muss mit dem Ordnernamen im Dateisystem übereinstimmen. Was Sie in den Projekteigenschaften-> Android-> Bibliotheksreferenz sehen, ist ein relativer Dateisystempfad.


3
Ich möchte auch hinzufügen, dass symbolische Links dafür nicht in Ordnung sind. Ich hatte alle meine Projekte im selben Ordner an einem anderen Ort gespeichert (wo ich die gesicherten Daten ablege) und dann eine Reihe symbolischer Links in meinem Arbeitsbereich-Ordner zu diesen Ordnern. Sie befanden sich also an beiden Stellen alle im selben Ordner, aber die Verwendung symbolischer Links hat alles durcheinander gebracht. Nachdem ich den realen Ordner als Basisarbeitsbereich geladen hatte, war alles in Ordnung.
Zulaxia

7
+1 Um dieses SCHRECKLICHE Verhalten der Eclipse / ADT-Kombination zu artikulieren. Nur zu Ihrer Information, selbst wenn beide Projekte in demselben physischen Ordner abgelegt werden, hilft dies nicht, wenn sich dieser Ordner zufällig auf einer Samba-Freigabe befindet . Ugrrr ...
an00b

20
Manchmal entfernt Eclipse die Referenz, startet Eclipse neu und fügt sie erneut hinzu. Jetzt sollte es funktionieren.
Warpzit

Dies war ein Problem für meine Projekte, die zu demselben Arbeitsbereich gehörten und sich dort befanden. Das Projekt wurde im selben Arbeitsbereich wie die Bibliothek importiert und alles hat einwandfrei funktioniert. Danke für die Antwort.
Jayshil Dave

Überprüfen Sie, ob sich Ihr Arbeitsbereich und Ihre Bibliothek im selben Ordner befinden. Es wurde der Fehler gemacht, ADT erneut herunterzuladen, und es wurde ein Projekt unter dem Arbeitsbereich C: \ users im Gegensatz zu meinem eigentlichen Arbeitsbereich erstellt. Überprüfen Sie erneut, ob sich Ihr Projekt UND Ihre Bibliothek im selben Arbeitsverzeichnis befinden!
Garbit

11

Stellen Sie sicher, dass beide Projekte im selben Arbeitsbereich vorhanden sind. Stellen Sie beim Importieren der Projekte sicher, dass das Kontrollkästchen "Projekt in Arbeitsbereich kopieren" aktiviert ist.


1
Wie kann ich dasselbe Bibliotheksprojekt für ein anderes Projekt verwenden? Wenn ich das tue, zeigt es das rote Farbkreuzsymbol. @Karthik
Shylendra Madda

10

Das gleiche Problem tritt auf, wenn sich Ihr Bibliotheksprojekt in einer anderen Partition als Ihr aktueller Arbeitsbereich befindet. Ich habe gerade das gleiche Problem. Meine Git-Quelle befindet sich in C: und ich verschiebe meinen Arbeitsbereich einfach nach D: und alles beginnt zu kollabieren.


4
Wenn sich das Haupt- und das Bibliotheksprojekt auf verschiedenen Laufwerken befinden , kann Eclipse den Referenzpfad anscheinend nicht von absolut nach relativ auflösen, und Eclipse ist darüber nicht erfreut (grünes Häkchen wird rotes Kreuz).
Pang

arbeitete auch für mich. Ich habe das referenzierte Projekt im selben Laufwerk (H :) ersetzt und jetzt ist es in Ordnung
Tobia Zambon

4

Der einfachste Weg, um die Pfade der Bibliothekspfade korrekt zu machen, besteht darin, die Bibliothek über die GUI von Eclipse hinzuzufügen, wie im folgenden Screenshot gezeigt, und Eclipse dafür zu sorgen, dass die richtigen relativen Pfade in project.properties eingefügt werden. Es ist eine übliche Einrichtung, Ihre Bibliotheksprojekte in Verzeichnissen zu hosten, die sich stark von Ihren Hauptprojekten unterscheiden, die die Bibliothek verwenden. Diese Methode funktioniert, wenn sich das "libary-Projekt" und das Projekt, das es verwendet, im selben Eclipse- "Arbeitsbereich" befinden (sie müssen sich nicht im selben übergeordneten Ordner befinden): Geben Sie hier die Bildbeschreibung ein


4
Das Problem ist, dass sich die Bibliothek und das Projekt auf verschiedenen Laufwerken / Partitionen befinden ... siehe die Fehlerlisten oben. Ihre ist in Ordnung, weil Ihr Bibliothekspfad relative Pfade anstelle von DOS-vollständigen Pfaden
anzeigt

3

Bitte stellen Sie sicher, dass das Bibliotheksprojekt als "Ist Bibliothek" markiert ist - klicken Sie mit der rechten Maustaste auf das Bibliotheksprojekt - Eigenschaften - Android - aktivieren Sie das Kontrollkästchen "Ist Bibliothek" - in project.properties des Bibliotheksprojekts sollten Sie einen neuen Eintrag haben: "android .library = true. Fügen Sie es nun dem gewünschten Projekt hinzu, wie im folgenden Beitrag beschrieben (der Beitrag mit integriertem Bild - von Nilesh Pawar).


1
Das hat bei mir gut funktioniert. Der verwirrende Teil ist meiner Meinung nach die Position dieses Kontrollkästchens "Ist Bibliothek". Es ist nicht intuitiv, dass dies tatsächlich das Ziel des aktuellen App- / Bibliotheks-Builds auswählt und kein Optionsschalter für die einzuschließenden Bibliotheken.
EtienneSky


2

Noch eine Bemerkung zum gleichen Thema.

Für mich befanden sich die beiden Projekte im selben übergeordneten Ordner und waren beide lokal im Arbeitsbereich. Selbst dann geschah das Problem noch.

Ich habe die Datei "project.properties" bearbeitet und den absoluten Pfad (mit Schrägstrichen '/' für Trennzeichen) des Bibliotheksprojekts angegeben. Gespeichert und geschlossen. Gehen Sie dann zum Dialogfeld mit den Projekteigenschaften, entfernen Sie die Bibliothek (auf der immer noch das Kreuzsymbol angezeigt wird, jedoch mit dem ABS-Pfad) und fügen Sie sie wie gewohnt wieder hinzu. Überraschenderweise ist das Problem behoben und das Projekt wird kompiliert und ausgeführt.

Das ist wirklich seltsam und muss ein Fehler mit dem ADT sein. Ich verwende ADT Version 20.0.2


+1. Dieses Problem trat beim Wechseln von Bibliotheken mit denselben Namen auf. Sieht aus wie eine Sonnenfinsternis (oder ADT), die versucht, auf die alte zu verweisen, und schlägt fehl. Eclipse-Neustart hilft. (Ubuntu 12.04, Eclipse Indigo, ADT 21.0.0)
Luten

2

Wenn Entwickler auf Facebook oder ein anderes Bibliotheksprojekt verweisen, bereinigen Sie das Projekt zunächst von eclipse-> project-> clean project. die den Fehler des roten Kreuzes im Referenzbildschirm zulassen wollen.


2

Für mich starte ich einfach die Eclipse neu und die hinzugefügte Bibliothek funktioniert einwandfrei.

Ich meine, es zeigt zum ersten Mal rote Markierungen nach dem Hinzufügen des Bibliotheksprojekts. Obwohl sich das Eclipse-Hauptprojekt und das Bibliotheksprojekt im selben Arbeitsbereichsordner befinden und sich keine Ressourcendateien außerhalb des Projektordners befinden.

Sie können also versuchen, Ihre Eclipse neu zu starten. Viel Spaß beim Codieren ....


1

Problemumgehung für mich war zu

  1. Erstellen Sie einen neuen Arbeitsbereich
  2. Bibliotheksprojekt in diesen Arbeitsbereich importieren
  3. Importieren Das gewünschte Projekt in diesem Arbeitsbereich
  4. Wenn sowohl Projekt als auch Bibliothek dieselbe Zielversion des Android-Betriebssystems haben
  5. Referenzbibliotheksprojekt in meinem Projekt

löste mein Problem


Das Erstellen eines neuen Arbeitsbereichs löste das Problem ebenfalls. Sie müssen auch die Projekte löschen.
Omer Cansizoglu

1

Ich hatte dort das gleiche Problem, als ich versuchte, meinen Arbeitsbereich so zu ändern, dass dies meine Lösung ist:

  1. Importieren und kopieren Sie alle Projektdaten einschließlich des Bibliotheksprojekts in den Arbeitsbereich
  2. Löschen Sie die alte Projektreferenz, indem Sie mit der rechten Maustaste auf das Projekt -> Eigenschaften -> Android -> Bibliothek klicken, eine beschädigte Bibliothek auswählen (damit ich sie nenne) und dann Entfernen auswählen
  3. Bereinigen Sie zuerst das Projekt (um Ihre Projekteigenschaften zu aktualisieren).
  4. Gehen Sie zu Bibliotheksprojekt Eigenschaften -> Android -> Bibliothek und überprüfen Sie die Bibliothek ist, wenn sie nicht auf Übernehmen und dann auf OK klickt
  5. Wenn das Bibliotheksprojekt bereits aktiviert ist, deaktivieren Sie es zuerst und bereinigen Sie anschließend das Bibliotheksprojekt. Führen Sie anschließend Schritt 4 erneut aus
  6. Gehen Sie zu dem Projekt, in dem sich die Bibliothek befinden soll, und klicken Sie mit der rechten Maustaste auf das Projekt -> Eigenschaften -> Android -> Bibliothek. Fügen Sie dann das Bibliotheksprojekt hinzu (es sollte vorhanden sein) und klicken Sie auf Übernehmen und dann auf OK
  7. Wenn es immer noch nicht sauber erscheint, das Projekt noch einmal sauber und das sollte reichen

1

Starten Sie einfach Ihre Sonnenfinsternis neu. Es ist mein Problem zu lösen


0

Wenn Sie sich den Referenzpfad vorher und nachher ansehen, kommt er von "C: / workspace / mylib" und geht zu "../../mylib", wenn er an die richtige Stelle kopiert wird, ziemlich interessant.


0

Zu Ihrer Information,

Was für mich funktioniert hat, war, die 'Bibliothek'-Projekte (die eigentlichen Projekte) aus meinem Arbeitsbereich zu löschen (ohne die Dateien zu löschen) und sie dann mit dem Assistenten erneut zu importieren (vorhandenes Android-Projekt aus dem Quellcode importieren).


Arbeitete auch für mich. Gerade entfernt und wieder importiert die Projekte (als 'bestehendes Eclipse-Projekt')
Neromancer

0

Vielen Dank für die Veröffentlichung der Frage. Ich hatte genau das gleiche Problem bei der Integration von Facebook in meine Android-Anwendung. Ich habe das Problem behoben, indem ich mein Entwicklungsprojekt auf dasselbe Windows-Laufwerk verschoben habe, auf dem sich das Bibliotheksprojekt befand. Irgendwie kann Eclipse den Speicherort des Bibliotheksprojekts nicht richtig aus der Datei default.properties lesen, wenn es sich auf einem anderen Laufwerk befindet.


0

Ähnlich wie in Sufi Khans Beitrag habe ich dieses Problem auch mit einem Neustart gelöst. Mein Fall unterschied sich darin, dass ich beim ersten Zugriff auf Eigenschaften-> Android und Hinzufügen der Bibliothek ein schönes grünes Häkchen bekam. Als ich den Dialog schloss, zeigte Eclipse immer noch Klassenfehler an, die nicht gefunden wurden. Als ich die Eigenschaften erneut überprüfte, sah ich das rote X. Aber Mr. Kahns Lösung (löschen Sie die fehlerhafte Bibliothek, starten Sie Eclipse neu, fügen Sie die Bibliothek erneut hinzu) funktionierte einwandfrei.

Ich verwende die 0702-Version des ADT-Bundles (beginnt mit "Cluster", reimt sich auf "Ente").


0

Ich folgte der akzeptierten Antwort, musste aber auch sicherstellen, dass meine Datei "project.properties" lesbar war.

Wenn die Datei schreibgeschützt ist (in die Quellcodeverwaltung eingecheckt), wird sie von Eclipse nicht bearbeitet. Das Hinzufügen der Bibliotheksreferenz ist erfolgreich, aber die Änderung wird nach dem Klicken auf OK nicht beibehalten.

Wenn durch Schließen des Einstellungsfensters und erneutes Öffnen die gerade hinzugefügte Bibliothek entfernt wird, ist dies möglicherweise Ihre Lösung.


0

Falls Ihr Bibliotheksprojekt immer noch nicht angezeigt wird, fügen Sie in den Eigenschaften Ihres Bibliotheksprojekts ein Bibliotheksflag hinzu

Fügen Sie android.library = true hinzu

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.