2014-09-01 8 views
5

Qualcuno può spiegare cosa significa il team di strumenti Android in questo breve paragrafo citato di seguito?Spiegare la strategia delle dipendenze transitive descritta nella documentazione di Android Build System

In particolare: Che cos'è "somelib.jar"?

Stanno suggerendo, che creo un nuovo sottoprogetto che ha solo dipendenze, lo chiamo "progettoA" quindi il progetto pubblica "projectA.jar"? (usando artifacts.add ("default", file ('projectA.jar'))

Il comportamento desiderato che desidero è pubblicare "projectA.jar" insieme alle sue dipendenze senza causare alcuna "definizione di più file dex" errori

http://tools.android.com/tech-docs/new-build-system/tips#TOC-Handling-transitive-dependencies-for-local-artifacts-jars-and-aar-

Citazione:.

Se si dispone di un barattolo o biblioteca locale AAR che si desidera utilizzare in più di un progetto, non si può semplicemente fare riferimento direttamente come un locale dipendenza. Questo è il bec ause il plug-in Android si lamenterà se lo stesso trova lo stesso file jar quando esegue il dex del progetto e tutte le sue dipendenze da . (Si noti che al momento non è possibile utilizzare un file di dominio locale anche se si fa riferimento solo una volta).

Un modo per risolvere questo problema è distribuire l'artefatto in un repository. Mentre è possibile, potrebbe non essere comodo a causa del sovraccarico di gestione di tale repository.

Un'altra opzione è creare un nuovo sottoprogetto Gradle e rendere questo artefatto del progetto il file jar o aar che si desidera riutilizzare . Quindi puoi semplicemente fare in modo che altri sottoprogetti di Gradle dipendano dallo questo nuovo sottoprogetto.

In questo nuovo sotto-progetto, è sufficiente creare un build.gradle con il seguente:

configurations.create ("default")

artifacts.add ("default", il file ('somelib .jar '))

risposta

0

A mio parere, questo è principalmente utilizzato per il modulo di libreria.

Se un modulo di libreria dipende da somelib.jar, un altro modulo di applicazione che dipende dal modulo di libreria dipende anche da somelib.jar, quindi potrebbero verificarsi errori di "più file dex".

Come "punte" dire, il problema può essere risolto da creare un modulo semplice, che è in grado di pubblicare *.jar o *.aar e usata solo per essere dipendeva da altri moduli, con solo la dipendenza *.jar s. Con questo, l'output *.aar del modulo libreria non includerà lo somelib.jar.

Problemi correlati