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.
@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