Come faccio riferimento a file jar esterni in una directory comune (non librerie) per la costruzione del progetto Android utilizzando formica?

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

Domanda

Vorrei costruire diversi progetti Android che fanno riferimento allo stesso file jar utilizzando formica. Non voglio copiare il file jar per ogni directory libs nel progetto (a causa di come l'albero di controllo di origine è impostato). Le risposte I trovare qui dire "metterli nella directory libs" che non risolve questo problema.

Quindi la domanda è, come faccio a configurare il mio Android script di build formica fare riferimento a un vaso comune in una directory separata al di fuori del progetto (non in "librerie")?

È stato utile?

Soluzione

Nel sdk, ci sono dei file di formiche sotto tools/ant. In main_rules.xml, è possibile trovare il seguente sezione di codice:

<!-- 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>

In questo modo il codice di Ant determina dove ottenere i vasi da. Si potrebbe sovraccaricare il valore di jar.libs.dir nei vostri build.properties da allora viene letto prima di questa sezione e sarebbe sovraccaricare il valore. Indicando che in una directory comune si intende utilizzare farà quello che lei suggerisce. Potrebbe essere necessario giocare con lui un po 'per farlo funzionare nel modo desiderato.

Un avvertimento è che io non sono sicuro se questo avrà un impatto negativo di altre attività del ciclo di vita di generazione.

Altri suggerimenti

Sembra che gli strumenti SDK più recenti rendono più facile da realizzare. Ho un maestro librerie cartella che tutti i miei progetti Android quota e ho appena aggiunte questo al file ant.properties per farlo sembrare di un livello per quelle librerie.

jar.libs.dir=../libs

Come per la domanda qui e la mia risposta presa da qui , la soluzione proposta non funziona fin d'ora. Fino a quando il bug depositato è fisso. La soluzione, come indicato nella risposta di riferimento, viene copiato sotto.


I aggiungere questo al mio modello custom_rules.xml e sembra funzionare bene. Ho dovuto è solo un paio di righe che aggiungere il percorso del file ant.properties finché non avremo una soluzione migliore.

<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>

Se si usa Linux, basta fare link simbolici dei file jar esterni, poi metterli tutti in libs. Ant lavoro volere bene.

A cura

Assicurarsi posto tutti i collegamenti simbolici direttamente in libs (non sottodirectory). Sono sicuro che questo può essere ri-config da script ant. Ma io non sono a conoscenza con la formica: -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top