Xamarin Bindungsbibliothek, ein iOS-Teil (2/3)

Xamarin Bindungsbibliothek, ein iOS-Teil (2/3)
7/2/2022

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.

1.    iOS Bindungen Bibliothek

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.

1.1. Native Bibliothek auf Ihren Mac herunterladen

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.

 

1.2. ÜberprüfenSie die auf Ihrem Mac installierten SDKs

Ö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:


 1.3. DasObjective Sharpie Tool herunterladen und installieren

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.

 

1.4. ObjektivSharpie Befehl ausführen

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


1.5. .frameworkOrdner einbinden und ApiDefinitions.cs ersetzen

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

1.6. Behebungvon Build-Fehlern, die vom Compiler durch Änderung der Datei ApiDefinitions.cserzeugt wurden

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.

 

1.7. Achtung! iOS statische Bibliothek

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.

Projektdialog Neue Bindungsbibliothek in Visual Studio für Mac
Leeres Bindings Library Projekt in Visual Studio für Mac

 

 

 


Teilen:
Luboš ist ein erfahrener .NET-Entwickler (Web und mobile Anwendungen), der mit SQL und DevOps bestens vertraut ist. Er hat zahlreiche Webanwendungen entwickelt, die weltweit von der Industrie und der akademischen Welt genutzt werden. Er hat einen Bachelor-Abschluss in angewandter Physik und Astrophysik. Er spielt gerne Bowling und Geige und fährt E-Mountainbike und Ski.

Article collaborators

SABO Newsletter icon

SABO NEWSLETTER

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

SABO Mobile IT

Für unsere Kunden aus der Industrie entwickeln wir spezialisierte Software zur Umsetzung von Industry 4.0. IoT, Machine Learning und Künstliche Intelligenz ermöglichen uns, signifikante Effizienzsteigerungen bei unseren Kunden zu erzielen.
Über uns