Wie erzeuge ich eine Xamarin-Bindung für AAR mit vielen Abhängigkeiten?

9

Ich versuche eine Xamarin-Bindung für Android zu generieren com.adobe.creativesdk.image Bibliothek

Das Problem ist, dass diese Bibliothek wie 20 Referenzen enthält und diese Referenzen sicher viel mehr enthält. Ich müsste den gesamten Baum untersuchen und alle Referenzen extrahieren, um sie dem Bindungsprojekt hinzuzufügen.

Sicherlich muss es einen einfacheren Weg geben, dies zu tun. Mir wurde gesagt, dass ich ein Bündel AAR erstellen könnte, das alle Referenzen mit Android Studio enthält, aber ich bin mir nicht sicher über Schritte, damit es funktioniert. Einige der Referenzen sind auch AAR.

Könnten Sie mir bitte den richtigen Weg zeigen, damit diese Bindung funktioniert?

    
Claudio Redi 04.05.2016, 17:56
quelle

2 Antworten

1

Ich hatte das gleiche Problem und habe es schließlich gelöst, indem ich einfach die Abhängigkeiten hinzugefügt habe. Viele können über die NuGet-Pakete hinzugefügt werden (Rechtsklick auf bindingproject und click add nuget packages ...), die gebräuchlichsten wie play services, gson okhttp3 etc. finden Sie hier. Wenn Sie, wie ich, einige ungewöhnliche Abhängigkeiten hatten, müssen Sie sie möglicherweise als bindende Projekte selbst hinzufügen.

Ich habe gelesen, dass Sie die aar / jar-Abhängigkeit direkt zum bindingproject hinzufügen und die Build-Aktion auf referenceJar oder embeddedReferenceJar setzen können, aber das hat bei mir nicht funktioniert. Ich bin relativ neu zu Xamarin, so bin ich nicht sicher, ob es nur nicht die Art und Weise, die es verwendet werden sollte, oder wenn es war, weil sie nicht automatisch aufgrund von Ausführungsfehler gebunden werden konnte (einige Fehler und Warnungen, die ich in der Metadatei beheben musste Ich habe später die Abhängigkeit jar / aar in ein eigenes Binding-Projekt eingefügt.)

Unabhängig davon, wie ich es zum Laufen gebracht habe, habe ich der Lösung ein neues Binding-Projekt hinzugefügt, in dem ich die Abhängigkeit jar / aar hinzugefügt und dann die benötigten Zeilen / Knoten in der Metadatei hinzugefügt habe, um es kompilieren zu lassen. Dann fügte ich einfach das Projekt "Abhängigkeitsbindung" als Referenz in mein aktuelles Bindungsprojekt ein.

Das fühlt sich mehr wie ein Workaround an als eine tatsächliche Lösung, aber zumindest habe ich es zum Laufen gebracht, also hoffentlich kann es Ihnen helfen.

    
Joachim Haglund 06.07.2016 13:40
quelle
1

Bindungsbibliotheken haben immer ihre eigenen Vorbehalte, aber ich werde einige Verallgemeinerungen machen, um Sie in Ordnung zu halten.

  1. Überprüfen Sie die beteiligten Abhängigkeiten und ob einige von ihnen bereits auf Nuget sind, VERWENDEN SIE DIESE. Dinge wie Android Support Libraries, Google Play APIs, IBM SDKs usw. Die meisten von ihnen haben bereits Bindungen und sind in Nuget.

  2. Vergessen Sie nicht, die Versionsnummern Ihrer Abhängigkeiten mit denen in Nuget zu vergleichen. Vielleicht ist Ihre .aar-Bibliothek tatsächlich aktueller als die Bindung auf Nuget.

  3. Trennen Sie große Bibliotheken. Suchen Sie den Rest Ihrer Abhängigkeiten, die nicht in Nuget enthalten sind, die relativ groß sind, und erstellen Sie dann separate Android-Bibliotheksprojekte für jede Bibliothek. Üblicherweise werden die Binding-APIs mit großen Bibliotheken als Abhängigkeiten auseinanderfallen, so dass es viel einfacher ist (und sauberere IMO), separate Projekte für sie zu erstellen und dann Projektreferenzen zu Ihrer Endbibliothek hinzuzufügen.

  4. Trennen Sie Ihre jars von aars . Normalerweise sind Ihre .aar -Dateien die großen, die sowieso ihre eigenen Bindungen erhalten und in # 3 laufen, aber jar -Abhängigkeiten sollten ReferenceJar Build Actions verwenden.

  5. Spiele mit deinem MetaData.xml . Dies kann lange dauern, aber die Binding-APIs sind nicht perfekt. Verwende die MetaData und andere Dateien, um sie nach deinen Wünschen zu säubern.

Einige andere Dinge, die helfen könnten:

  • Ссылка (VS-Plugin zum Erstellen von Bindebibliotheken aus Abhängigkeitsgruppen. Unvollkommen, aber ein großartiges Werkzeug für den Einstieg. Vergessen Sie nicht, Ihre .jar und .aar Dateien in Ihren Jars Ordner zu verschieben, da dies aus irgendeinem Grund zum Projektstamm hinzugefügt wird)
  • Ссылка (etwas Gutes verstehen Möglichkeiten, Ihre MetaData.xml -Datei zu aktualisieren)
  • Ich würde mich auch in GitHub um einige bestehende Bindings-Projekte für Android-Bibliotheken vergleichbarer Größe kümmern, die wie AWS-Dienste oder andere Apache-Bibliotheken aussehen
SuavePirate 06.12.2016 14:19
quelle