2015-07-31 9 views
5

Ho lavorato su una libreria Android (un client API) che utilizza Retrofit e Joda DateTime.Il file AAR locale non gestisce le dipendenze

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.2.0' 
    compile 'com.squareup.retrofit:retrofit:1.9.0' 
    compile 'joda-time:joda-time:2.8.1' 
} 

Ora che la libreria è completata ho compilato in un file AAR e voglio usarlo in un'applicazione, così ho aggiunto alla cartella libs dell'applicazione e incluso nel file build.gradle in questo modo:

dependencies { 
    compile(name:'s3papiandroidclient', ext:'aar') 
    //Some other things 
} 

Tuttavia, quando cerco di inizializzare il client API dalla libreria, l'applicazione si blocca quando si tratta di chiamare gli oggetti da retrofit o DateTime (per esempio, retrofit.RestAdapter). Sembra che Gradle non legga le dipendenze dalla libreria AAR, quindi non installa Retrofit e DateTime nella mia applicazione. Ho provato a usare il parametro transitive=true sul mio file AAR, non aiuta.

Altro punto che potrebbe essere d'aiuto, ho provato a generare un file POM e anche le dipendenze non appaiono in esso. Sembra che ci sia davvero qualcosa in corso con questi e io sono completamente bloccato su questo.

L'unica soluzione che ho trovato è quella di aggiungere manualmente le dipendenze dal file AAR al file build.gradle dell'app, ma non ha senso, presumo che Gradle possa importare le dipendenze da solo!

Cordiali saluti,

Gyoo.

risposta

5

Sembra Gradle non legge le dipendenze dalla libreria AAR

Questo è perché non ci sono dipendenze in un file AAR.

ho cercato di generare un file POM e le dipendenze non compaiono in esso sia

Poi c'è un problema nel modo in cui si sta generando il file POM. Inoltre, AFAIK, avresti bisogno di mettere la AAR e il suo file POM in un repository, in modo che Gradle riconosca il POM e utilizzi le informazioni sulla dipendenza al suo interno.

+1

@Gyoo: FWIW, [ecco una delle mie librerie] (https://github.com/commonsguy/cwac-presentation) che ha una dipendenza [un'altra delle mie librerie] (http: // github. com/commonsguy/CWAC-layout). Io uso il plugin 'maven' e il suo task 'uploadArchives' per generare il POM e copiarlo più l'AAR in un repository locale (che poi sincronizzo con il mio repository di risorse pubbliche su Amazon S3). – CommonsWare

Problemi correlati