Im vorherigen Teil haben wir gelernt, wie man eine Bindungsbibliothek für Android erstellt. Jetzt wollen wir uns auf die iOS-Version konzentrieren. Für die iOS-Bibliothek benötigt der Entwickler einen Mac. Es gibt Anforderungen, die es unmöglich machen, diesen Teil auf einem Windows-PC auszuführen.
Bei der Erstellung einer Bindungsbibliothek für ein Xamarin.iOS Projekt ist der Ansatz anders und wir müssen Visual Studio für Mac verwenden und ein neues Projekt vom TypBindungsbibliothek erstellen (siehe Abbildung 6).
Die neue leere iOS Bindungsbibliothek (Abbildung 7) besteht aus dem Ordner Native References, unter dem die ursprüngliche Bibliothek eines Drittanbieters im Format "[Packagename].framework"abgelegt werden sollte, dem Ordner Resources für möglicheBild-/Datei-/Schriftressourcen und der wichtigsten Datei ApiDefinitions.cs. Die Datei ist jetzt leer, wird aber C#-Schnittstellen für alle Objekte in der ursprünglichen nativen Bibliothek enthalten.
Nachdem das leereProjekt erstellt wurde, führen Sie die folgenden Schritte aus, um die iOS-Bindungsbibliothek vorzubereiten:
1) LadenSie die native Bibliothek auf Ihren Mac herunter
2) ÜberprüfenSie die auf Ihrem Mac installierten SDKs
3) LadenSie das Tool Objective Sharpie herunter und installieren Sie es (siehe Referenz[8])
4) Objektive Sharpie Befehl ausführen
5) BindenSie den Ordner .framework ein und ersetzen Sie die Datei ApiDefinitions.cs imProjekt durch die im vorherigen Schritt erstellte Datei
6) Korrektur von Build Fehlern, die vom Compiler erzeugt wurden, durch Änderung der Datei ApiDefinitions.cs
Schauen Sie sich nun jeden Schritt genauer an.
Suchen Sie dieBibliothek online, die Sie in Ihrer Xamarin.iOS-App verwenden möchten, undladen Sie sie in einen beliebigen Ordner herunter. Gehen Sie zum Ordner[Packagename].framework. Er sollte die Unterverzeichnisse "Header"und "Modules" zusammen mit anderen Bibliotheksdateien enthalten.
Öffnen Sie dasTerminal und führen Sie den Befehl aus:
{% c-block language="xml" %}
xcodebuild -showsdks
{% c-block-end %}
Sie sollten eineAusgabe wie diese erhalten:
Laden Sie aufIhrem Mac dieses sehr nützliche Tool herunter und installieren Sie es -Sharpie. Mit diesem Tool wird eine ApiDefinitions.cs-Datei für den nativen Bibliotheks Header .h-Datei erstellt. Ich vermute, dass es fast unmöglich ist, ohne Sharpie eine echte iOS Bindungsbibliothek zu erstellen.
Gehen Sie also auf https://aka.ms/objective-sharpie und installieren Sie das .pkg-Paket auf Ihrem Mac.
Öffnen Sie dasTerminal und gehen Sie zum Ordner mit der in Schritt 1) heruntergeladenen nativen Bibliothek.
Führen Sie den Befehl sharpie wie folgt aus:
{% c-block language="xml" %}
sharpie bind-sdk iphoneos14.5 ./Usercentrics.framework/Headers/Usercentrics.h -namespaceUsercentrics -scope Usercentrics.framework/Headers -c -F
{% c-block-end %}
Infolgedessen werden zwei Dateien erzeugt - ApiDefinitions.cs und StructsAndEnums.cs.
Öffnen Sie dieiOS-Bindungsbibliothek Lösung in Visual Studio für Mac und klicken Sie mit der rechten Maustaste auf den Ordner "Native References" und wählen Sie "Add Native Reference". Wählen Sie den .framework Ordner und bestätigen Sie.
Wenn Sie nun versuchen, das Projekt zu erstellen, werden immer einige Erstellungsfehler angezeigt. Je nach Komplexität der gebundenen nativen Bibliothek kann die Datei ApiDefinitions.cs tausendeoder hunderttausende von Zeilen enthalten. Es ist außerhalb des Rahmens diesesArtikels, um auf alle Fehler, die auftreten können, einzugehen. Aber ich empfehle Ihnen, diesen großartigen Beitrag hier [9] zu lesen.
Nachdem Sie alle Build und Native Linker Errors behoben haben, erhalten Sie die endgültige.dll-Bibliothek, die als Referenz in das Xamarin.iOS-Projekt aufgenommen werden kann, und alle in ApiDefinitions.cs definierten APIs können nun verwendet werden.
Jede iOS-Bindungsbibliothek, die durch den obigen Prozess erstellt wird, verwendet die Originalbibliothek als statische ObjectiveC-Bibliothek (.a-Datei). Dies führt zu Problemen, wennSie versuchen, sie in einer iOS-App zu verwenden, die von Microsoft HotRestart [10]erstellt und auf einem Windows-Rechner bereitgestellt wurde. Sie erhalten einen Laufzeitfehler in den Teilen der App, die die Drittanbieter API verwenden.