2015-07-31 12 views
5

Ich habe an einer Android-Bibliothek (einem API-Client) gearbeitet, die Retrofit und Joda DateTime verwendet.Lokale AAR-Datei verwaltet keine Abhängigkeiten

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

Nun, da die Bibliothek, die ich in eine AAR-Datei kompilierte abgeschlossen ist, und ich möchte es in einer Anwendung verwenden, so dass ich hinzugefügt, um es in dem Libs Verzeichnis der Anwendung und enthalten in der Datei build.gradle etwa so:

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

Allerdings, wenn ich versuche, den API-Client aus der Bibliothek zu initialisieren, stürzt die Anwendung, wenn es darum geht, Objekte aus RetroFit oder Datetime (zum Beispiel retrofit.RestAdapter) zu nennen. Es sieht so aus, als ob Gradle nicht die Abhängigkeiten von der AAR-Bibliothek liest und somit Retrofit und DateTime nicht in meiner Anwendung installiert. Ich habe versucht, den transitive=true Parameter auf meiner AAR-Datei zu verwenden, hilft nicht.

Anderer Punkt, der helfen könnte, ich habe versucht, eine POM-Datei zu erzeugen, und die Abhängigkeiten erscheinen auch nicht darin. Es sieht so aus, als ob da wirklich etwas los ist und ich bleibe vollkommen dabei.

Die einzige Problemumgehung, die ich finden konnte, ist, die Abhängigkeiten von der AAR-Datei zur build.gradle-Datei der Anwendung manuell hinzuzufügen, aber es macht keinen Sinn, ich nehme an, Gradle kann Abhängigkeiten selbst importieren!

Grüße,

Gyoo.

Antwort

5

Es ist wie Gradle sieht liest nicht die Abhängigkeiten von der AAR Bibliothek

Das ist, weil es keine Abhängigkeiten in einer AAR-Datei sind.

Ich habe versucht, eine POM-Datei und die Abhängigkeiten werden nicht in sie entweder

Dann erzeugt es ein Problem gibt, wie Sie die POM-Datei generieren. Außerdem, AFAIK, müssten Sie den AAR und seine POM-Datei in einem Repository ablegen, damit Gradle das POM erkennt und die Abhängigkeitsinformationen darin verwendet.

+1

@Gyoo: FWIW, [hier ist eine meiner Bibliotheken] (https://github.com/commonsguy/cwac-presentation), die eine Abhängigkeit von [einer anderen meiner Bibliotheken] hat (http: // github. com/commonsguy/cwac-Layouts). Ich benutze das "maven" -Plugin und seine 'uploadArchives'-Aufgabe, um das POM zu generieren und es zusammen mit dem AAR in ein lokales Repository zu kopieren (das ich dann mit meinem eigenen öffentlichen Artefakt-Repository auf Amazon S3 synchronisiere). – CommonsWare

Verwandte Themen