Library.apk konnte nicht gefunden werden!

73

Ich habe es geschafft, meine Anwendung ziemlich gut umzustrukturieren, sodass sich bis auf einige Methoden in einer abgeleiteten Aktivitätsklasse alles in einem Bibliotheksprojekt befindet.

Es funktioniert wunderbar, außer dass die Eclipse-Konsole ( nicht LogCat!) Die folgende Fehlermeldung ausgibt:

[2011-06-13 19:54:08 - MyLibrary] Could not find MyLibrary.apk!

Ich habe beide Projekte (Bibliothek und Anwendung) bereinigt , Eclipse neu gestartet und die Projekte neu erstellt, aber diese seltsame Fehlermeldung bleibt bestehen.

Was bedeutet diese Fehlermeldung? (vor allem angesichts der Tatsache, dass alles in Ordnung zu sein scheint)

Wie werde ich es los?

UPDATE : Ich habe versucht, das Projekt zu entfernen und es dann gemäß dem folgenden Vorschlag erneut zu importieren. Es hat nicht geholfen. Ich fand dann diesen Thread , der mir dabei half zu erkennen, dass ich <uses-library>in der AndroidManifest.xml der Anwendung einen Verweis auf MyLibrary hatte. Ich habe es gelöscht, das Projekt bereinigt und neu erstellt. Das Problem besteht weiterhin.

Ich vermute jetzt, dass dies ein "echtes Problem" ist, z. B. eine Fehlkonfiguration einiger Pfade oder etwas anderes von meiner Seite. Was könnte es sein?

an00b
quelle

Antworten:

162

Ich habe die Ursache des Problems gefunden!

Es stellt sich heraus, dass "Sie mit der neuen Bibliotheksfunktion die Android-Projekte, von denen Sie abhängig sind, nicht im Abschnitt" Java-Erstellungspfad "der Eigenschaften angeben. Sie tun dies im Abschnitt " Android "der Eigenschaften ".

Also musste ich nur das Anwendungsprojekt aufrufen Properties, auf die ProjectsRegisterkarte klicken, mein eigenes Bibliotheksprojekt auswählen und auf die RemoveSchaltfläche klicken . Das ist es. Kein Problem mehr.

Wählen Sie in Eclipse Java EE die Projekteigenschaften aus, wählen Project ReferencesSie das FacebookSDK aus und überprüfen Sie es (siehe Bildschirmaufnahme).Geben Sie hier die Bildbeschreibung ein

Vielen Dank an Lance Nanek !

an00b
quelle
3
Ich habe es satt und es löst das fragliche Problem. Wenn ich jedoch jetzt eine "Open Declaration" für eine in meiner Bibliothek definierte Klasse mache, wird die Datei MyClass.class geöffnet und die Datei MyClass.java geöffnet. Eine weitere SO-Frage zum Öffnen von .class anstelle von .java ( stackoverflow.com/questions/9682074/… ) schlägt vor, das Bibliotheksprojekt als Projektreferenz in den Erstellungspfad aufzunehmen! Es scheint also nicht möglich zu sein, beide Probleme gleichzeitig zu beheben? (Mit Eclipse 4.2.0, JDT 3.8.0, ADT 20.0.3)
Herr Grumps
3
Ich fand die Formulierung hier etwas verwirrend, aber es ist die richtige Antwort. Lance Nanek beschreibt klarer, wie man zu "Java Build Paths" geht, die Registerkarte "Projekte" auswählt und die Bibliothek von dort entfernt.
Alan Moore
5
Danach removekann meine App keine Symbole in meiner Bibliothek finden. Dies hilft: Mit dieser neuen Bibliotheksfunktion geben Sie die Android-Projekte, von denen Sie abhängig sind, nicht im Abschnitt Java Build Path der Eigenschaften an. Sie tun dies in Android sectionden Eigenschaften.
BillHoo
1
Danach kann ich keine Facebook-Klassen mehr in mein Projekt importieren. Eclipse kann sie nicht finden
LeSam
1
Nachdem Sie die Schritte der Antwort des OP ausgeführt haben, müssen Sie mit der rechten Maustaste auf Ihr App-Projekt klicken, auf Eigenschaften klicken, auf Android klicken und im Abschnitt Bibliothek auf die Schaltfläche Hinzufügen klicken und Ihr Bibliotheksprojekt hinzufügen. Dann sollte alles wie erwartet funktionieren, ohne dass Fehlermeldungen angezeigt werden.
Ban-Geoengineering
4

Das ist interessant ... Ich habe nicht ganz getan, was in der Antwort angegeben ist.

Ich habe ein separates Android-Projekt namens " ConnectionHandler ", das eine Verbindung zu einem Webservice herstellt, um Informationen abzurufen. Dieses Projekt enthält keine Aktivitätsklassen. (In diesem Fall müssten Sie Änderungen an der AndroidManifest-Datei in Ihrer Hauptanwendung vornehmen und die folgenden Anweisungen befolgen.)

Um mein separates ConnectionHandler-Projekt als Bibliothek zu verwenden, musste ich Folgendes tun:

  1. In der Hauptanwendung> Projekteigenschaften auswählen> Gehen Sie zu Java Build Path> Jars hinzufügen> Wählen Sie den Ordner bin von ConnectionHandler aus> wählen Sie connectionhandler.jar
  2. Im ConnectionHandler-Projekt> Projekteigenschaften auswählen> Android> isLibrary überprüfen
  3. In der Hauptanwendung> Projekteigenschaften auswählen> Gehen Sie zu Android> Verweis auf ConnectionHandler hinzufügen im Abschnitt Bibliothek.

Dies funktioniert für mich und ich kann eine Verbindung zu meinem Webservice herstellen, obwohl ich in meiner Hauptanwendung keine Quelldateien dafür habe. Alles ist in meinem ConnectionHandler-Glas enthalten, auf das verwiesen wird.

Hoffe das hilft jemandem ...

Ryvianstyron
quelle
2

Heute wurde diese Fehlermeldung in der Konsolenansicht von Eclipse angezeigt, aber es stellte sich heraus, dass dies nicht das Problem war. Meine Anwendung wurde auf meinem Gerät erstellt und installiert und lief sogar für den Bruchteil einer Sekunde (bis sie abstürzte). So sah meine Konsolenansicht in Eclipse aus:

[2013-06-03 09:42:25 - my-android] Android Launch!
[2013-06-03 09:42:25 - my-android] adb is running normally.
[2013-06-03 09:42:25 - my-android] Performing com.my.android.activity.MainActivity activity launch
[2013-06-03 09:42:25 - my-android] Uploading my-android.apk onto device '650rfs2e'
[2013-06-03 09:42:31 - my-android] Installing my-android.apk...
[2013-06-03 09:42:35 - my-android] Success!
[2013-06-03 09:42:36 - my-other-android] Could not find my-other-android.apk!
[2013-06-03 09:42:36 - android-SherlockFragment] Could not find android-SherlockFragment.apk!
[2013-06-03 09:42:36 - my-android] Starting activity com.my.android.activity.MainActivity on device 650rfs2e
[2013-06-03 09:42:36 - my-android] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.my.android/.activity.MainActivity }

Bei genauer Betrachtung meines LogCat wurde jedoch eine dumme Ausnahme von einem Fragment ausgelöst, das ich zu initialisieren versuchte. Nachdem ich mein Fragment repariert hatte (das eine NPE auslöste), funktionierte alles einwandfrei, auch wenn meine Konsole mir immer noch sagt, dass diese Bibliotheks-APKs nicht gefunden werden können.

Rodrigo-Silveira
quelle
1

Haben Sie versucht, das Projekt zu entfernen, ohne es von der Festplatte zu löschen und das Projekt erneut zu importieren? Das schien für mich zu funktionieren, als ich dieses Problem hatte.

Novazero
quelle
2
Wollen Sie damit sagen, dass das Programmieren heutzutage eher wie Voodoo und weniger wie Wissenschaft geworden ist? :) Ich werde Ihren Vorschlag versuchen und zurückmelden. In der Zwischenzeit +1 für den Versuch zu helfen.
an00b
Ich habe nur versucht, das Anwendungsprojekt zu entfernen und es dann erneut zu importieren. Es hat nicht geholfen . Ich werde jetzt versuchen, das Bibliotheksprojekt zu entfernen ...
an00b
Ich habe gerade versucht, das Bibliotheksprojekt ebenfalls zu entfernen und es dann erneut zu importieren. Es hat nicht geholfen . Ich vermute jetzt, dass dies ein echtes Problem ist , z. B. eine Fehlkonfiguration einiger Pfade oder etwas anderes von meiner Seite. Was könnte es sein?
an00b
0

Wenn Sie die Eclipse-Einstellungen verwenden, werden möglicherweise überall Bibliotheken hinzugefügt. Ich hatte eine referenzierte lib in den Ordnern / libs und referenzierte Bibliotheken. Ich musste sie von diesen Speicherorten entfernen oder löschen und unter Android-Abhängigkeiten einfügen (mithilfe von Einstellungen -> Android und Durchsuchen des Kontrollkästchens "Bibliothek").

Das richtige Layout für mein Projekt: http://www.pasteall.org/pic/show.php?id=34513

darKoram
quelle
0

Für mich war der Grund dafür, dass das Bibliotheksprojekt und das Hauptprojekt dasselbe Paket hatten. Der einfachste Weg, das Paket zu ändern, ist zu right click on the library project > Android Tools > Rename Application Package.

Jarett Millard
quelle
0

Die Lösung für dieses Problem bestand für mich darin, fehlerhafte Einträge aus der Manifest-Datei der Bibliotheksprojekte zu entfernen.

Der Absturz würde nur zur Laufzeit auftreten, wenn er die erste Verwendung meines Bibliotheksprojekts traf. Sobald ich die Eigenschaft Anwendungsname geändert habe, um die richtige Anwendungsklasse für das Projekt wiederzugeben, das das Bibliotheksprojekt verwendet hat, hat es funktioniert

Shane
quelle