2015-07-31 33 views
5

Pracowałem nad biblioteką Android (klient API), która korzysta z Retrofit i Joda DateTime.Lokalny plik AAR nie zarządza zależnościami

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

teraz, że biblioteka jest zakończona Skompilowałem go do pliku AAR i chcę go używać w aplikacji, więc dodałem go do folderu libs wniosku i włączyła ją w pliku build.gradle tak:

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

jednak gdy próbuję zainicjować klienta API z biblioteki, awarii aplikacji, jeśli chodzi o powołanie obiektów z modernizowanych lub DateTime (na przykład retrofit.RestAdapter). Wygląda na to, że Gradle nie odczytuje zależności z biblioteki AAR, dlatego nie instaluje Retrofit i DateTime w mojej aplikacji. Próbowałem użyć parametru transitive=true w moim pliku AAR, nie pomaga.

Inny punkt, który może pomóc, próbowałem wygenerować plik POM, a zależności również się w nim nie pojawiają. Wygląda na to, że naprawdę coś się z tym dzieje i jestem całkowicie na tym.

Jedynym sposobem obejścia tego problemu jest ręczne dodanie zależności z pliku AAR do pliku build.gradle aplikacji, ale nie ma to sensu, zakładam, że Gradle może zaimportować zależności samodzielnie!

Pozdrawiam,

Gyoo.

Odpowiedz

5

Wygląda Gradle nie czyta zależności od biblioteki AAR

to dlatego, że nie ma żadnych zależności w pliku AAR.

Próbowałem wygenerować plik POM, a zależności nie występują w nim zarówno

Wtedy pojawia się problem, w jaki sposób generujesz plik POM. Dodatkowo, AFAIK, musisz umieścić plik AAR i jego plik POM w repozytorium, aby Gradle rozpoznał POM i użył informacji o zależnościach wewnątrz niego.

+1

@Gyoo: FWIW, [tutaj jest jedna z moich bibliotek] (https://github.com/commonsguy/cwac-presentation), która jest zależna od [innej mojej biblioteki] (http: // github. com/commonsguy/cwac-layouts). Używam wtyczki 'maven' i jej' uploadArchives' do generowania POM i kopiowania go wraz z AAR do lokalnego repozytorium (które następnie synchronizuję z moim własnym publicznym repozytorium artefaktów na Amazon S3). – CommonsWare