Freigeben über


Binden von iOS Swift-Bibliotheken

Wichtig

Wir untersuchen derzeit die Nutzung benutzerdefinierter Bindungen auf der Xamarin-Plattform. Nehmen Sie an dieser Umfrage teil, um zukünftige Entwicklungsarbeiten zu unterstützen.

Die iOS-Plattform zusammen mit ihren nativen Sprachen und Tools entwickelt sich ständig weiter, und es gibt viele Bibliotheken von Drittanbietern, die mit den neuesten Angeboten entwickelt wurden. Die maximale Wiederverwendung von Code und Komponenten ist eines der wichtigsten Ziele der plattformübergreifenden Entwicklung. Die Möglichkeit, mit Swift erstellte Komponenten wiederzuverwenden, ist für Xamarin-Entwickler immer wichtiger geworden, da ihre Beliebtheit bei Entwicklern weiter wächst. Möglicherweise sind Sie bereits mit dem Prozess des Bindens regulärer Objective-C Bibliotheken vertraut. Es ist jetzt eine zusätzliche Dokumentation verfügbar, die den Prozess des Bindens eines Swift Frameworks beschreibt, sodass sie von einer Xamarin-Anwendung auf die gleiche Weise verwendet werden können. Der Zweck dieses Dokuments besteht darin, einen allgemeinen Ansatz zum Erstellen einer Swift-Bindung für Xamarin zu beschreiben.

Übergeordnete Vorgehensweise

Mit Xamarin können Sie eine beliebige native Bibliothek von Drittanbietern binden, sodass sie von einer X-Anwendung verwendet werden kann. Swift ist die neue Sprache, und das Erstellen einer Bindung für Bibliotheken, die mit dieser Sprache erstellt wurden, erfordert einige zusätzliche Schritte und Tools. Diese Vorgehensweise umfasst die folgenden vier Schritte:

  1. Erstellen der nativen Bibliothek
  2. Vorbereiten der Xamarin-Metadaten, wodurch Xamarin-Tools C#-Klassen generieren können
  3. Erstellen einer Xamarin-Bindungsbibliothek mit der nativen Bibliothek und den Metadaten
  4. Verwenden der Xamarin-Bindungsbibliothek in einer Xamarin-Anwendung

In den folgenden Abschnitten werden diese Schritte mit weiteren Details erläutert.

Erstellen der nativen Bibliothek

Der erste Schritt besteht darin, ein natives Swift Framework mit Objective-C erstelltem Header bereit zu haben. Diese Datei ist ein automatisch generierter Header, der gewünschte Swift-Klassen, -Methoden und -Felder verfügbar macht, sodass sie sowohl für als auch Objective-C für C# über eine Xamarin-Bindungsbibliothek zugänglich sind. Diese Datei befindet sich innerhalb des Frameworks unter dem folgenden Pfad: <FrameworkName.framework>/Headers/<FrameworkName-Swift.h>. Wenn die verfügbar gemachte Schnittstelle über alle erforderlichen Member verfügt, können Sie mit dem nächsten Schritt fortfahren. Andernfalls sind weitere Schritte erforderlich, um diese Member verfügbar zu machen. Der Ansatz hängt davon ab, ob Sie Zugriff auf den Quellcode des Swift-Frameworks haben:

  • Wenn Sie Zugriff auf den Code haben, können Sie die erforderlichen Swift-Member mit dem @objc -Attribut dekorieren und einige zusätzliche Regeln anwenden, um die Xcode-Buildtools darüber zu informieren, dass diese Member für die Welt und den Objective-C Header verfügbar gemacht werden sollten.
  • Wenn Sie nicht über den Quellcodezugriff verfügen, müssen Sie ein Swift-Proxyframework erstellen, das das ursprüngliche Swift-Framework umschließt und die öffentliche Schnittstelle definiert, die von Ihrer Anwendung mithilfe des @objc -Attributs erforderlich ist.

Vorbereiten der Xamarin-Metadaten

Im zweiten Schritt werden API-Definitionsschnittstellen vorbereitet, die von einem Bindungsprojekt zum Generieren von C#-Klassen verwendet werden. Diese Definitionen können manuell oder automatisch vom Objective Sharpie-Tool und der oben erwähnten automatisch generierten <FrameworkName-Swift.h-Headerdatei> erstellt werden. Sobald die Metadaten generiert wurden, sollten sie manuell überprüft und überprüft werden.

Erstellen der Xamarin.iOS-Bindungsbibliothek

Der dritte Schritt besteht darin, ein spezielles Projekt zu erstellen: Xamarin.iOS-Bindungsbibliothek. Es verweist auf die Frameworks und die Metadaten, die im vorherigen Schritt erstellt wurden, sowie auf alle zusätzlichen Abhängigkeiten, auf die das jeweilige Framework angewiesen ist. Außerdem wird die Verknüpfung der nativen Frameworks mit der Xamarin.iOS-Anwendung behandelt, auf die verwiesen wird.

Verwenden der Xamarin-Bindungsbibliothek

Der vierte und letzte Schritt besteht darin, auf die Bindungsbibliothek in einer Xamarin.iOS-Anwendung zu verweisen. Es reicht aus, die Verwendung der nativen Bibliothek in Xamarin.iOS-Anwendungen für iOS 12.2 und höher zu aktivieren. Für anwendungen, die auf eine niedrigere Version abzielen, sind einige zusätzliche Schritte erforderlich:

  • Fügen Sie Swift dylib-Abhängigkeiten für die Laufzeitunterstützung hinzu. Ab iOS 12.2 und Swift 5.1 wurde die Sprache ABI (Application Binary Interface) stabil und kompatibel. Aus diesem Grund muss jede Anwendung, die auf eine niedrigere iOS-Version abzielt, swift dylibs-Abhängigkeiten enthalten, die vom Framework verwendet werden. Verwenden Sie das NuGet-Paket SwiftRuntimeSupport , um die erforderlichen dylib-Abhängigkeiten automatisch in das resultierende Anwendungspaket einzuschließen.
  • Fügen Sie den SwiftSupport-Ordner mit signierten Dylibs hinzu, der vom AppStore während des Uploadvorgangs überprüft wird. Das Paket sollte signiert und mithilfe von Xcode-Tools an den AppStore connect verteilt werden, andernfalls wird es automatisch abgelehnt.

Exemplarische Vorgehensweise

Im obigen Ansatz werden die allgemeinen Schritte beschrieben, die zum Erstellen einer Swift-Bindung für Xamarin erforderlich sind. Es gibt viele untergeordnete Schritte und weitere Details, die beim Vorbereiten dieser Bindungen in der Praxis berücksichtigt werden müssen, z. B. die Anpassung an Änderungen in den nativen Tools und Sprachen. Das Ziel besteht darin, Ihnen ein besseres Verständnis dieses Konzepts und der übergeordneten Schritte in diesem Prozess zu ermöglichen. Eine ausführliche schrittweise Anleitung finden Sie in der Dokumentation zu Xamarin Swift Binding Exemplarische Vorgehensweise .