Wie beziehe ich mich auf externe JAR -Dateien in einem gemeinsamen Verzeichnis (nicht LIBS), um das Android -Projekt mit ANT zu erstellen?

StackOverflow https://stackoverflow.com/questions/5312478

Frage

Ich möchte mehrere Android -Projekte erstellen, die auf die gleichen JAR -Dateien mit ANT verweisen. Ich möchte die JAR -Datei nicht in jedes LIBS -Verzeichnis im Projekt kopieren (aufgrund der Einrichtung des Quellvertretungsbaums). Das Antworten ich finden Hier sagen Sie "Setzen Sie sie in das LIBS -Verzeichnis", das dieses Problem nicht löst.

Die Frage ist also, wie ich meine Android Ant Build -Skripte so konfigurieren kann, dass sie auf ein gemeinsames Glas in einem separaten Verzeichnis außerhalb des Projekts (nicht in "Libs") verweisen?

War es hilfreich?

Lösung

Im SDK gibt es Ant -Dateien unter tools/ant. Im main_rules.xml, Sie finden den folgenden Codeabschnitt:

<!-- Directory for the third party java libraries -->
<property name="jar.libs.dir" value="libs" />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<!-- create a path with all the jar files, from the main project and the
     libraries -->
<path id="jar.libs.ref">
    <fileset dir="${jar.libs.absolute.dir}" includes="*.jar" />
    <path refid="project.libraries.jars" />
</path>

Auf diese Weise bestimmt der Ameisen -Build -Code, woher die Gläser holen sollen. Sie könnten den Wert von überladen jar.libs.dir In Ihrem Build.Properties, da dies vor diesem Abschnitt gelesen wird und den Wert überlastet. Wenn Sie auf ein gemeinsames Verzeichnis hinweisen, möchten Sie das verwenden, was Sie vorschlagen. Möglicherweise müssen Sie mit ihm etwas spielen, damit es so funktioniert, wie Sie es möchten.

Eine Einschränkung ist, dass ich mich nicht sicher bin, ob sich dies negativ auf andere Aktivitäten zum Lebenszyklus auswirken wird.

Andere Tipps

Es sieht so aus, als ob die neueren SDK -Tools dies einfacher zu erreichen können. Ich habe einen Master -Libs -Ordner, den alle meine Android -Projekte teilen, und ich habe dies einfach zu dem hinzugefügt ant.properties Datei, damit es eine Ebene für diese LIBs nachschlagen lässt.

jar.libs.dir=../libs

Gemäß der Frage hier Und meine Antwort stammt von hier, Die angebotene Lösung funktioniert ab sofort nicht. Bis der eingereichte Fehler behoben ist. Die Lösung, wie in der Referenzantwort erwähnt, wird unten kopiert.


Ich füge das zu meinem hinzu custom_rules.xml Vorlage und es scheint gut zu funktionieren. Ich nahm an, dass es nur ein paar Zeilen mehr sind, als dem Pfad zum Hinzufügen zu dem hinzuzufügen ant.properties Datei, bis wir eine bessere Lösung erhalten.

<target name="-pre-compile">
    <path id="project.all.jars.path">
    <path path="${toString:project.all.jars.path}"/>
    <fileset dir="${jar.libs.dir}">
        <include name="*.jar"/>
    </fileset>
    </path>
</target>

Wenn Sie Linux verwenden, erstellen Sie einfach symbolische Links der externen JAR -Dateien, dann platzieren Sie sie alle in libs. Ameise wird gut funktionieren.

Bearbeitet

Stellen Sie sicher, dass alle symbolischen Links direkt in libs (keine Unterverzeichnisse). Ich bin mir sicher, dass dies durch Ant-Skript neu gestalten kann. Aber ich bin mit Ant :-) nicht vertraut

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top