2016-04-28 13 views
18

Wir machen eine Bibliothek, hauptsächlich für unsere API, die wir unseren externen Entwicklern das Leben erleichtern würden.Transitive Abhängigkeiten für lokale aar-Bibliothek

So haben wir neue Bibliothek Projekt erstellt und Retrofit und einige andere Bibliotheken als Abhängigkeiten. Jetzt

dependencies { 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'com.google.code.gson:gson:2.6.2' 
    compile 'com.squareup.retrofit2:retrofit:2.0.1' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.1' 
    compile 'com.squareup.okhttp3:okhttp:3.2.0' 
} 

, wenn wir es bauen, produziert es aar Datei.

Aber jetzt, wenn wir die aar Datei zu libs Verzeichnis abgelegt und als Abhängigkeit gesetzt, wir haben immer noch die gleiche Abhängigkeit in build.gradle-Datei des Benutzers zu setzen, die saugen. Es sollte aus der Bibliothek genommen werden, oder?

repositories { 
    flatDir { 
     dirs 'libs' 
    } 
} 

dependencies { 
    compile(name: 'ourlibrary', ext: 'aar') { 
     transitive = true; 
    } 
} 

Wie transitive = true Arbeit machen?

+0

Auf der Suche nach einer Lösung für genau das gleiche Problem, wie hast du das gemacht? – yongsunCN

+0

hi, kannst du das Problem lösen? – Shrikant

Antwort

30

Die aar Datei enthält nicht die verschachtelt (oder transitive) Abhängigkeiten und haben keine pom-Datei, die die Abhängigkeiten von der Bibliothek verwendet wird, beschreibt.

Wenn Sie eine AAR-Datei mit einem Repo flatDir importieren, müssen Sie die Abhängigkeiten auch in Ihrem Projekt angeben.

In Ihrem Fall löst das Hinzufügen von transitive=true Ihr Problem aus den oben beschriebenen Gründen nicht auf.

Sie sollten ein Maven Repository verwenden (Sie müssen die Bibliothek in einem privaten oder öffentlichen Maven Repo veröffentlichen), Sie werden nicht das gleiche Problem haben.
In diesem Fall lädt Gradle die Abhängigkeiten mit der Pom-Datei herunter, die die Abhängigkeitenliste enthält.

+0

könnten Sie näher ausführen "Sie müssen die Abhängigkeiten auch in Ihrem Projekt angeben" – TejjD

+1

Endlich hier angekommen. Es scheint, dass Sie es irgendwo veröffentlichen müssen, um die "transitive" Arbeit zu machen. –

+1

Ich habe Tage damit verbracht ... vielen Dank! – suomi35

Verwandte Themen