2014-11-09 11 views
9

Qui è la mia struttura del progetto di sviluppo:Come rilasciare una AAR con un'altra dipendenza del progetto della libreria Android?

 
projectFolder 
    | 
    +--App 
    | 
    +--MyLib 
    | 
    +--Libraries 
     | 
     +--LibA 

MyLib dipende LibA, ho confezionato MyLib come AAR e rilasciarlo per un repo Maven, ma quando includo MyLib in un altro progetto (TestProj) come dipendenza AAR remota, ottengo costruire errore (non è possibile risolvere la dipendenza di LibA, LibA non è incluso con il rilascio di MyLib), Questa è la build.gradel nella cartella app di TestProj:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile ('xxx.xxxxxx:yyyyy:[email protected]'){ 
     transitive = true 
    } 
} 

E qui è la build.gradle di MyLib:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':Libraries:LibA') 
} 

Come posso rilasciare MyLib con LibA già impacchettato nella RAA?

+0

Correndo nello stesso problema. Qualche fortuna? – lostintranslation

+0

@lostintranslation, invio una risposta, spero che aiuti. – FlyingHorse

risposta

4

Rispondere personalmente alla domanda. finalmente ho cambiato il build.gradle in MyLib a:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    provided project(':Libraries:LibA') 
} 

così LibA saranno utilizzati solo nel processo di generazione di MyLib, TestProj non chiedere la LibA dipendenza più al momento della compilazione. NOTA che ciò potrebbe causare NoClassDefFoundError in fase di esecuzione, quindi è necessario comunicare ai ragazzi che hanno utilizzato la libreria di includere la stessa LibA in build.gradle del progetto.

In un primo momento, ero alla ricerca di un metodo per confezionare LibA con MyLib, ma sembra diffcile.

Vedere questa domanda: Android Studio how to package single AAR from multiple library projects?

+0

Il POM di MyLib dovrebbe avere la LibA dichiarata come dipendenza, che dovrebbe risolvere il problema. –

+0

LibA è un progetto di libreria e non è su Maven central, se altre persone desiderano utilizzare MyLib, come può risolvere automaticamente la dipendenza? – FlyingHorse

+0

Dovrebbe essere pubblicato su un repository Maven pubblico o interno. Se questo è un progetto OSS, Bintray offre un repository personale Maven gratuitamente. –

Problemi correlati