2016-07-21 7 views
3

Ich entwickelte ein Android-SDK, um unsere erholsame API zu verbrauchen. Ich habe Bibliotheken von Drittanbietern wie Retrofit2 und Rxandroid in meinem SDK verwendet.Wie kann man ein Android SDK mit Abhängigkeiten von Drittanbietern freigeben?

dependencies 
{ 
    compile 'io.reactivex:rxandroid:1.2.1' 
    compile 'com.squareup.retrofit2:retrofit:2.0.2' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' 
} 

Ich habe eine aar-Datei an meinen Kunden freigegeben. Seine App importierte meine aar-Datei und nutzte direkt meinen Service, der von Retrofit2 implementiert wurde, um APIs zu konsumieren. Das Problem ist, dass seine App auch retrofit2 und rxandroid Abhängigkeiten in seinen Abhängigkeiten enthalten muss. Gibt es eine Möglichkeit, meinen Kunden meinen Service direkt nutzen zu lassen, ohne Abhängigkeiten in seinen Abhängigkeiten hinzuzufügen? weil ich nicht möchte, dass mein Kunde weiß, welche Bibliotheken ich in meinem SDK verwendet habe.

Vielen Dank im Voraus.

Antwort

1

Soweit ich weiß, können Sie keine aars in einem aar enthalten. Sie haben keine Konfigurationsdateien, die angeben, welche Abhängigkeiten sie benötigen. Sie können entweder

  1. Streifen der Quellcode aus den Bibliotheken Sie verwenden, und kompilieren Sie es mit Ihren aar

  2. Betrachten zu bintray oder Maven Central Repository Hochladen

Nummer zwei mehr bevorzugt, da Auf diese Weise müssen alle Ihre Kunden nur einen Link wie compile 'com.abc.efg:version' enthalten, um alle Abhängigkeiten zu erfassen. Es ist auch eine viel bessere Option, da es Möglichkeiten gibt, mit Versionskonflikten umzugehen (zB mit exclude group).

Stellen Sie sich vor, wenn Ihr Kunde eine andere SDK verwendet, die eine andere Version von Retrofit einzieht. Wenn Ihnen die aar mit der ersten Methode übergeben wurde, können sie das Projekt aufgrund von Versionskonflikten überhaupt nicht erstellen. Aber mit der zweiten Version können sie einfach tun

compile ('com.abc.efg:version') { exclude group: 'com.squareup.retrofit2' } 

und frei von all diesen Kopfschmerzen sein. Ein echtes Beispiel ist das Facebook SDK. Es zieht Google Play-Dienste ein, aber die Leute nehmen das oft als eine Abhängigkeit für ihr Projekt auf und stoßen auf Probleme wie this.