Android Ant baut auf einem Projekt mit zwei Quellordnern auf

8

Ich habe ein Projekt mit einem verknüpften Quellordner. Dieses Projekt hängt von einem anderen Projekt (Remote-Service) ab. Die aidl-Dateien und die über die Remote-Schnittstelle übergebenen Klassen befinden sich in einem common_src -verknüpften Ordner, der von beiden Projekten gemeinsam genutzt wird. Dies funktioniert gut mit Eclipse-Builds (eine Quelldatei, zwei Projekte, Änderungen in einem Projekt werden in der anderen reflektiert, so wie es sein sollte).

Ich möchte jetzt einen Ant-Build von der Kommandozeile aus machen. Ich habe es geschafft, ein anderes Projekt mit einem einzelnen src-Verzeichnis aufzubauen, das über alle Ziele hinweg das Beispiel build.xml von den SDK-Tools verwendet. Es importiert ant_rules_r3.xml automatisch und sobald die source.dir und out.dir in build.properties definiert sind, ist alles ziemlich schmerzlos.

Wenn ich mich dem Projekt mit den Ordnern src und common_src widme, kann ich es nicht erstellen. Zuerst habe ich das Kompilier-Ziel und alle, von denen es abhängt, in die build.xml oberhalb der Setup-Aufgabe ausgeschnitten und eingefügt. Ich habe das Element common_src zum build.properties hinzugefügt und definiert und die letzte Zeile, die unten angezeigt wird, zu -compile target (kopiert von ant_rules_r3.xml ) in build xml :

hinzugefügt %Vor%

das hat es im Build-Prozess weitergebracht - es könnte die .java-Dateien in common_src finden, aber nicht in den .aidl-Dateien. Keine Überraschung wurde mir klar, da die Hilfe ein separates Ziel ist. Ich fügte dann

hinzu %Vor%

an das -aidl-Ziel in der Build-XML und fehlgeschlagen mit:

%Vor%

Das hat mich also wirklich festgefressen. Idealerweise würde ich nur die Datei build.properties so modifizieren, dass sie common_src enthält, und sie an die Datei ant_rules_r3.xml übergeben, aber ich kann mir keine Lösung vorstellen. Ich wäre sehr dankbar, wenn jemand vorschlagen könnte, wie es gemacht werden kann.

    
NickT 03.11.2010, 14:41
quelle

6 Antworten

6

Nur für den Fall, dass Interesse besteht, dachte ich, ich würde meine eigene Frage beantworten, die jetzt gelöst ist.

1) Ich habe den common_src in der build.properties

definiert

2) Die Zeile

hinzugefügt %Vor%

in einem überschriebenen Kompilierungsziel in der Datei build.xml über dem Setup (plus alle Ziele außer Kraft setzen, auf die es durch Ausschneiden / Einfügen aus der Datei ant_rules_r3.xml angewiesen war) 3) Hinzugefügt ein neues Ziel 'aidl2' das gleiche wie 'aidl' in build.xml aber mit der Zeile

<source path="${common_src}" anstelle von

%Vor%

Made aidl hängt von aidl2 ab. Überschreibe alle Ziele, von denen die Hilfe abhing.

Ich habe auch Zeilen wie:

hinzugefügt %Vor%

in die Datei build.xml, die die Eingabe von Passwörtern automatisiert. Ich habe schließlich ein install_release-Ziel hinzugefügt, um einen automatischen Befehl zum Erstellen, Löschen und Installieren von Befehlen zu erstellen.

    
NickT 06.11.2010, 12:10
quelle
16

Ich hatte ein ähnliches Problem, aber es scheint für mich durch die folgende Einstellung in meiner Datei build.properties gelöst worden zu sein:

%Vor%

Ich habe einen relativen Pfad verwendet, um meine src mit other_project zu verknüpfen, aber Sie sollten einen absoluten Pfad verwenden können. Wenn Sie dies tun, sollten Sie es stattdessen in local.properties einfügen.

Hinweis: Gemäß den Kommentaren in build.properties, wenn meine SDK-Version & lt; 2.0 würde ich stattdessen verwenden:

%Vor%     
kmorey 28.06.2011 04:41
quelle
6

Ich kann keinen Kommentar abgeben, da ich nicht genug Reputation habe, aber wenn ein Quellordner mit vorherigen Antworten arbeitet, schlägt es später beim Erstellen von jar fehl:

%Vor%

Der fehlerhafte Teil befindet sich im Gebäude des jar, das source.absolute.dir als eine Datei verwendet, die für ant ungültig ist.

Aber ich habe momentan keine Problemumgehung und ich verstehe nicht, warum andere es geschafft haben, es zum Laufen zu bringen ... (Ich benutze auch sdk r20)

    
mba 31.08.2012 17:33
quelle
2

Fügen Sie ; separierte Liste von Quellen zu Ihrem ant.properties hinzu (vergessen Sie nicht, auch default src einzubeziehen):

%Vor%

Oben funktioniert die Android SDK-Tools-Version 20.0.3+ (Projektziel: Android 2.2+, API-Level: 8+).

    
Mirek Rusin 28.08.2012 15:33
quelle
0

Hier ist die Lösung:

Aktualisieren Sie Ihre Datei build.xml für mehr als eine source.dir

Ссылка

    
user2732600 30.08.2013 10:43
quelle
0

Zumindest bei späteren Versionen der Build-Tools besteht das Problem darin, dass der in diese Eigenschaft eingegebene Wert in ein <property name="source.absolute.dirs" location="source.dirs"/> übergeben wird. Das location -Attribut kann nicht mit Doppelpunkt / Semikolon getrennten Pfaden umgehen.

Die Lösung ist sehr einfach, benutze einfach:

%Vor%

usw., im Gegensatz zu:

%Vor%     
Ytai 10.01.2014 06:51
quelle

Tags und Links