2010-06-18 4 views
5

Ich versuche, eine Android-Anwendung mit einer Android-Bibliothek Projektabhängigkeit in Eclipse einzurichten. Ich habe ein Projekt namens AnTest und ein Bibliotheksprojekt namens AnLib eingerichtet. Ich habe einen Verweis auf AnLib in den Projekteigenschaften von AnTest bereitgestellt. Jetzt versuche ich auf einen Bibliothekscode (eine statische öffentliche Methode) von AnTest zu verweisen. Eclipse wirft "com.anlib.Hello kann nicht in einen Typ aufgelöst werden".Android-Bibliothek: Ressourcen werden zusammengeführt, Code ist nicht

Und es ist nicht, dass die Referenz baumelt - ich kann die Ressourcen ordnungsgemäß zusammengeführt sehen. Aber innerhalb von AnTest ist die einzige Klasse im Paket com.anlib "R".

Bitte, was mache ich falsch? Ein sehr grundlegender Schritt muss fehlen ...

BEARBEITEN: Ich habe AnLib zum Java-Buildpfad/Projekte in den Projekteigenschaften von AnTest hinzugefügt. Jetzt kompiliert es, aber das Ausführen wirft eine NoClassDefFoundError-Ausnahme ...

+0

Haben Sie das mit 'ant' probiert? Wenn ja, und es kompiliert, ist es wahrscheinlich ein Eclipse-Projekt-Setup-Problem, in diesem Fall würde es helfen, wenn Sie einige Details zu Ihrer Einrichtung veröffentlichen könnten. –

+0

Soweit ich verstehe, dauert die richtige Einrichtung von ant für Android-Projekte eine Weile. Es ist nicht einfach Java, was mit Ressourcen, Signieren, etc. Vorerst möchte ich Eclipse eigenen Build-System bleiben. –

Antwort

5

Nachdem ich mir die Beispielprojekte (TicTacToe) genau angeschaut habe, habe ich etwas unter dem Klassenpfad bemerkt. Es ist ein mit den Bibliotheksquellen verknüpfter Ordner. Projekteigenschaften der App, Java-Build-Pfad, unter "Quelle" klicken Sie auf "Link-Quelle", geben Sie einen Pfad zur Bibliothek \ src.

Es gibt schließlich keine Magie.

EDIT: die NDK (JNI-basierte, native) Bibliotheken werden auch nicht standardmäßig abgeholt. Muss einen verlinkten Ordner namens "libs" zu den entsprechenden Bibliotheken im Bibliotheksprojekt erstellen.

EDIT2: das Verhalten nativer Bibliotheken scheint von der Version von ADT und/oder Eclipse abhängig zu sein. Auch Assets werden nicht zusammengeführt, aber dieses letzte Bit ist tatsächlich dokumentiert.

EDIT3: Unter den neuesten Android-Tools sind Bibliotheken nicht mehr als verknüpfte Quellen implementiert. Bitte ignorieren Sie diese Antwort; es war zu der Zeit wahr und relevant, aber jetzt ist es nicht so.

+0

vielen dank, diese info kann nirgendwo gefunden werden! ... – tbruyelle

0

Ich habe diese Einrichtung, aber ohne Ressourcen in der "Bibliothek" -Projekt. Mein Hauptprojekt ist ein Android-Projekt, aber die "Bibliothek" ist nur ein Standard-Java-Projekt. Dies scheint gut zu funktionieren.

Unter dem Build-Pfad (Registerkarte "Projekte") für das Android-Hauptprojekt habe ich das Bibliotheksprojekt hinzugefügt.

Die .project Datei sieht das Bibliotheksprojekt wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
    <name>DataExchange</name> 
    <comment></comment> 
    <projects> 
    </projects> 
    <buildSpec> 
     <buildCommand> 
      <name>org.eclipse.wst.common.project.facet.core.builder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     <buildCommand> 
      <name>org.eclipse.jdt.core.javabuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     <buildCommand> 
      <name>org.eclipse.wst.validation.validationbuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
    </buildSpec> 
    <natures> 
     <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> 
     <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> 
     <nature>org.eclipse.jdt.core.javanature</nature> 
     <nature>org.eclipse.wst.common.project.facet.core.nature</nature> 
    </natures> 
</projectDescription> 

Die .project Datei sieht wie folgt aus Android-Projekt:

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
    <name>Project</name> 
    <comment></comment> 
    <projects> 
    </projects> 
    <buildSpec> 
     <buildCommand> 
      <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     <buildCommand> 
      <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     <buildCommand> 
      <name>org.eclipse.jdt.core.javabuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     <buildCommand> 
      <name>com.android.ide.eclipse.adt.ApkBuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
    </buildSpec> 
    <natures> 
     <nature>com.android.ide.eclipse.adt.AndroidNature</nature> 
     <nature>org.eclipse.jdt.core.javanature</nature> 
    </natures> 
</projectDescription> 

ich tun nichts Besonderes darüber hinaus, dass nicht bei der Einrichtung erinnern das oben.

+1

Entschuldigung, das ist für meine Situation nicht relevant. Ich möchte, dass Ressourcen und Code zusammengeführt werden. –

+0

Gibt es irgendwo, dass es angezeigt wurde, sollte dies funktionieren? In Eclipse sehe ich nur Verweise auf das Android-Projekt, das ein vollwertiges Projekt und keine Bibliothek zu sein scheint. Wenn Sie einen Link zu einer Seite oder einem Projekt haben, das dies erwähnt, kann es uns helfen, Fehler zu beheben. – mbafford

+0

Hier: http://developer.android.com/intl/de/guide/developing/eclipse-adt.html # libraryProject Mein ADT ist anscheinend neu genug; Ich kann das Kästchen "Ist eine Bibliothek" setzen und Abhängigkeiten herstellen. Eklipse Ganymed, falls es darauf ankommt. –