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
:
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.
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
definiert2) 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
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.
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%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)
Fügen Sie ;
separierte Liste von Quellen zu Ihrem ant.properties
hinzu (vergessen Sie nicht, auch default src
einzubeziehen):
Oben funktioniert die Android SDK-Tools-Version 20.0.3+ (Projektziel: Android 2.2+, API-Level: 8+).
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%