2015-06-10 9 views
9

Ich habe ein Android-Bibliothek (MyLib genannt), die auf der Maven-Repo (, wie Gson Nachrüst, etc.) auf andere Bibliothek abhängt.Wie spezifiziert man Abhängigkeiten in einer Bibliothek?

MyLib 
| 
|-- Retrofit 
|-- Gson 
|-- ... 

MyLib ist mit einer aar Datei gepackt.

Das Ziel ist es, eine aar Bibliothek zu veröffentlichen, die in eine Android App aufgenommen werden können (so genannte MeineAnw) ohne ein zweites Mal unter Angabe der Abhängigkeiten, die MyLib Anwendungen.

MyApp 
| 
|-- MyLib 
| |-- Retrofit 
| |-- gson 
| |-- ... 

Das ist meine build.gradle Datei für MyLib

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.squareup.retrofit:retrofit:1.9.0' 
    compile 'com.google.code.gson:gson:2.3.1' 
} 

Nun, wenn ich MeineAnw ohne Abhängigkeitsproblem aufbauen will und laufen, ich hatte die folgende Build verwenden .gradle für MyApp (wenn ich keine nachrüste und gson wie Deps, eine Laufzeit ex Aufnahme wird geworfen, weil die Deps nicht verfügbar sind).

dependencies { 
    compile('[email protected]') 

    compile 'com.squareup.retrofit:retrofit:1.9.0' 
    compile 'com.google.code.gson:gson:2.3.1' 
} 

Ich will nicht die Abhängigkeiten in MeineAnw angeben, die innerhalb MyLib verwendet werden, Wie soll ich meine build.gradle Dateien schreiben?

Thansk im Voraus

+0

Wenn MyLib lokal ist, sollten Sie kompilieren Projekt (': MyLib') –

+0

Ja, MyLib ist lokal, aber in einem aar verpackt. MyLib und MyApp sind nicht im selben Projekt. Es ist zwei verschiedene Projekte. – reevolt

+0

Sie können immer auf einen anderen Ordner außerhalb des Projekts verweisen –

Antwort

2

Wenn ein aar auf eine Maven-Repository (lokal oder remote) zu veröffentlichen ist und es compile ([email protected]) transitive Abhängigkeiten verwendet werden ausgeschaltet.

Um transitive Abhängigkeiten für eine aar Bibliothek zu aktivieren:

Can an AAR include transitive dependencies?

Dies funktioniert mit aar Bibliotheken, die auf einem entfernten veröffentlicht oder lokal:

compile ('com.mylib:mylib:[email protected]'){ 
     transitive=true 
} 

Sie mehr darüber hier lesen maven repository, In Ihrem Fall klingt es so, als ob die Bibliothek nicht einmal in einem lokalen maven-Repository veröffentlicht wird. Ich kann keine definitive Information finden, ob es unter Ihren Umständen funktionieren wird, aber Sie sollten es versuchen.

+1

Ich bin jetzt in der Lage, eine Pom-default.xml-Datei zu erzeugen, die deps enthält, wenn ich die aar-Bibliothek zur Veröffentlichung in einem lokalen Repo (mit maven und maven-publish gradle plugins) erstelle. Aber diese Pom-Datei ist nicht im Archiv enthalten (sie ist nur im Build-Ordner sichtbar, aber nicht im Archiv enthalten).Wie kann ich es in das aar-Archiv einbetten? – reevolt

+0

@BrentM, ist die gleiche Sache in der Frage erwähnt möglich, wenn die AAR-Datei im Verzeichnis libs von Android-Anwendung vorhanden ist: kompilieren (Name: 'library_name', ext: 'aar') Ich verstehe, dass Sie nicht gefunden haben jede definitive Information für diesen Anwendungsfall. Aber gibt es ein Update, das Sie diesbezüglich haben? Vielen Dank! – garnet