Freigeben über


Teil 1 – Grundlegendes zur mobilen Xamarin-Plattform

Die Xamarin-Plattform besteht aus vielen Elementen, mit denen Sie Anwendungen für iOS und Android entwickeln können:

  • C#-Sprache – Ermöglicht Ihnen die Verwendung einer vertrauten Syntax und anspruchsvoller Features wie Generics, LINQ und der Parallel Task Library.
  • Mono .NET Framework – Bietet eine plattformübergreifende Implementierung der umfangreichen Features im .NET Framework von Microsoft.
  • Compiler – Erzeugt je nach Plattform eine systemeigene App (z. B. iOS) oder eine integrierte .NET-Anwendung und Laufzeit (z. B. Android). Der Compiler führt auch viele Optimierungen für die mobile Bereitstellung durch, z. B. das Verknüpfen nicht verwendeter Code.
  • IDE-Tools – Mit Visual Studio auf Mac und Windows können Sie Xamarin-Projekte erstellen, erstellen und bereitstellen.

Da es sich bei der zugrunde liegenden Sprache um C# mit .NET Framework handelt, können Projekte strukturiert werden, um Code freizugeben, der auch für Windows Telefon bereitgestellt werden kann.

Im Hintergrund

Obwohl Xamarin es Ihnen ermöglicht, Apps in C# zu schreiben und denselben Code auf mehreren Plattformen freizugeben, ist die tatsächliche Implementierung auf jedem System unterschiedlich.

Kompilierung

Die C#-Quelle macht ihren Weg in eine systemeigene App auf unterschiedliche Weise auf jeder Plattform:

  • iOS – C# ist vorab (AOT) zur ARM-Assemblysprache kompiliert. Das .NET Framework ist enthalten, wobei nicht verwendete Klassen beim Verknüpfen entfernt werden, um die Anwendungsgröße zu verringern. Apple lässt die Laufzeitcodegenerierung unter iOS nicht zu, sodass einige Sprachfeatures nicht verfügbar sind (siehe Xamarin.iOS-Einschränkungen ).
  • Android – C# wird in IL kompiliert und mit MonoVM + JIT'ing verpackt. Nicht verwendete Klassen im Framework werden während der Verknüpfung entfernt. Die Anwendung wird parallel mit Java/ART (Android Runtime) ausgeführt und interagiert mit den systemeigenen Typen über JNI (siehe Xamarin.Android-Einschränkungen ).
  • Windows – C# wird in il kompiliert und von der integrierten Laufzeit ausgeführt und erfordert keine Xamarin-Tools. Durch das Entwerfen von Windows-Anwendungen, die Xamarins Leitfaden folgen, ist es einfacher, den Code unter iOS und Android wiederzuverwenden. Die Universelle Windows-Plattform verfügt auch über eine .NET Native-Option, die sich ähnlich wie die AOT-Kompilierung von Xamarin.iOS verhält.

Die Linkerdokumentation für Xamarin.iOS und Xamarin.Android enthält weitere Informationen zu diesem Teil des Kompilierungsprozesses.

Die Laufzeit "Kompilierung" – dynamisches Generieren von Code mit System.Reflection.Emit – sollte vermieden werden.

Der Kernel von Apple verhindert die dynamische Codegenerierung auf iOS-Geräten, weshalb code on-the-fly nicht in Xamarin.iOS funktioniert. Ebenso können die Features der dynamischen Sprachlaufzeit nicht mit Xamarin-Tools verwendet werden.

Einige Spiegelungsfeatures funktionieren (z. B. MonoTouch.Dialog verwendet sie für die Spiegelungs-API), aber nicht für die Codegenerierung.

Plattform-SDK-Zugriff

Xamarin macht die vom plattformspezifischen SDK bereitgestellten Features mit vertrauter C#-Syntax leicht zugänglich:

  • iOS – Xamarin.iOS macht Apples CocoaTouch SDK-Frameworks als Namespaces verfügbar, auf die Sie von C# verweisen können. Beispielsweise kann das UIKit-Framework, das alle Benutzeroberflächensteuerelemente enthält, in eine einfache using UIKit; Anweisung eingeschlossen werden.
  • Android – Xamarin.Android macht Googles Android SDK als Namespaces verfügbar, sodass Sie mit einer using-Anweisung auf einen beliebigen Teil des unterstützten SDK verweisen können, z using Android.Views; . B. für den Zugriff auf die Steuerelemente der Benutzeroberfläche.
  • Windows – Windows-Apps werden mit Visual Studio unter Windows erstellt. Projekttypen umfassen Windows Forms, WPF, WinRT und die Universelle Windows-Plattform (UWP).

Nahtlose Integration für Entwickler

Die Schönheit von Xamarin ist, dass trotz der Unterschiede unter der Haube, Xamarin.iOS und Xamarin.Android (gekoppelt mit den Windows-SDKs von Microsoft) eine nahtlose Erfahrung zum Schreiben von C#-Code bieten, der auf allen drei Plattformen wiederverwendet werden kann.

Geschäftslogik, Datenbanknutzung, Netzwerkzugriff und andere allgemeine Funktionen können einmal geschrieben und auf jeder Plattform wiederverwendet werden, was eine Grundlage für plattformspezifische Benutzeroberflächen bietet, die als systemeigene Anwendungen aussehen und ausführen.

Verfügbarkeit der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE)

Die Xamarin-Entwicklung kann in Visual Studio entweder auf einem Mac oder unter Windows erfolgen. Die von Ihnen ausgewählte IDE wird von den Plattformen bestimmt, auf die Sie abzielen möchten.

Da Windows-Apps nur unter Windows entwickelt werden können, ist für die Erstellung für iOS, Android und Windows Visual Studio für Windows erforderlich. Es ist jedoch möglich, Projekte und Dateien zwischen Windows- und Mac-Computern freizugeben, sodass iOS- und Android-Apps auf einem Mac erstellt werden können und freigegebener Code später einem Windows-Projekt hinzugefügt werden kann.

Die Entwicklungsanforderungen für jede Plattform werden im Anforderungshandbuch ausführlicher erläutert.

iOS

Für die Entwicklung von iOS-Anwendungen ist ein Mac-Computer erforderlich, auf dem macOS ausgeführt wird. Sie können Visual Studio auch zum Schreiben und Bereitstellen von iOS-Anwendungen mit Xamarin in Visual Studio verwenden. Für Build- und Lizenzierungszwecke ist jedoch weiterhin ein Mac erforderlich.

Die Xcode-IDE von Apple muss installiert werden, um den Compiler und simulator zum Testen bereitzustellen. Sie können kostenlos auf Ihren eigenen Geräten testen, aber um Anwendungen für die Verteilung (z. B. den App Store) zu erstellen, müssen Sie dem Entwicklerprogramm von Apple beitreten (99 USD pro Jahr). Jedes Mal, wenn Sie eine Anwendung einreichen oder aktualisieren, muss sie von Apple überprüft und genehmigt werden, bevor sie für Kunden zum Herunterladen zur Verfügung gestellt wird.

Code wird mit der Visual Studio-IDE geschrieben, und Bildschirmlayouts können programmgesteuert erstellt oder mit Xcode auf einem Mac bearbeitet werden.

Ausführliche Anweisungen zum Einrichten finden Sie im Xamarin.iOS-Installationshandbuch .

Android

Für die Entwicklung von Android-Anwendungen müssen die Java- und Android-SDKs installiert werden. Die SDKs stellen den Compiler, den Emulator und andere Tools bereit, die zum Erstellen, Bereitstellen und Testen erforderlich sind. Java, das Android SDK von Google und die Tools von Xamarin können alle unter Windows und macOS installiert und ausgeführt werden. Die folgenden Konfigurationen werden empfohlen:

  • Windows 10 mit Visual Studio 2019
  • macOS Mojave (10.11+) mit Visual Studio 2019 für Mac

Xamarin bietet ein einheitliches Installationsprogramm, das Ihr System mit den erforderlichen Java-, Android- und Xamarin-Tools (einschließlich eines visuellen Designers für Bildschirmlayouts) konfiguriert. Ausführliche Anweisungen finden Sie im Installationshandbuch für Xamarin.Android.

Sie können Anwendungen auf einem echten Gerät ohne Lizenz von Google erstellen und testen, aber um Ihre Anwendung über einen Store (z. B. Google Play, Amazon oder Barnes & Noble) zu verteilen, kann eine Registrierungsgebühr an den Betreiber fällig werden. Google Play veröffentlicht Ihre App sofort, während die anderen Stores einen Genehmigungsprozess ähnlich wie Apples haben.

Windows

Windows-Apps (WinForms, WPF oder UWP) werden mit Visual Studio erstellt. Sie verwenden Xamarin nicht direkt. C#-Code kann jedoch für Windows, iOS und Android freigegeben werden. Besuchen Sie das Dev Center von Microsoft, um mehr über die tools zu erfahren, die für die Windows-Entwicklung erforderlich sind.

Erstellen der Benutzeroberfläche (UI)

Ein wesentlicher Vorteil der Verwendung von Xamarin besteht darin, dass die Benutzeroberfläche der Anwendung systemeigene Steuerelemente auf jeder Plattform verwendet, wodurch Apps erstellt werden, die von einer anwendung, die in Objective-C oder Java geschrieben wurde (für iOS bzw. Android), nicht unterscheiden können.

Beim Erstellen von Bildschirmen in Ihrer App können Sie entweder die Steuerelemente im Code anordnen oder vollständige Bildschirme erstellen, indem Sie die für jede Plattform verfügbaren Designtools verwenden.

Programmgesteuertes Erstellen von Steuerelementen

Jede Plattform ermöglicht das Hinzufügen von Benutzeroberflächensteuerelementen zu einem Bildschirm mithilfe von Code. Dies kann zeitaufwändig sein, da es schwierig sein kann, das fertige Design zu visualisieren, wenn Hartcodieren von Pixelkoordinaten für Steuerpositionen und -größen.

Das programmgesteuerte Erstellen von Steuerelementen bietet jedoch Vorteile, insbesondere für iOS zum Erstellen von Ansichten, die die Größe ändern oder anders in den Bildschirmgrößen i Telefon und iPad gerendert werden.

Visual Designer

Jede Plattform verfügt über eine andere Methode zum visuellen Gestalten von Bildschirmen:

  • iOS – Storyboards enthalten mehrere Ansichten und Steuerelemente und können in der Datei aufgerufen werden. Storyboarddatei , die in Ihrem Projekt enthalten ist.
  • Android – Xamarin bietet einen Android-Benutzeroberflächen-Designer für Drag-and-Drop für Visual Studio.
  • Windows – Microsoft stellt in Visual Studio und Blend einen Benutzeroberflächen-Designer für drag-and-drop bereit. Die Bildschirmlayouts werden als gespeichert. XAML-Dateien.

Diese Screenshots zeigen die visuellen Bildschirmdesigner, die auf jeder Plattform verfügbar sind:

These screenshots show the visual screen designers available on each platform

In allen Fällen können auf die elemente, die Sie visuell erstellen, in Ihrem Code referenziert werden.

Überlegungen zur Benutzeroberfläche

Ein wichtiger Vorteil der Verwendung von Xamarin zum Erstellen plattformübergreifender Anwendungen besteht darin, dass sie systemeigene UI-Toolkits nutzen können, um dem Benutzer eine vertraute Benutzeroberfläche zu präsentieren. Die Benutzeroberfläche wird auch so schnell wie jede andere systemeigene Anwendung ausgeführt.

Einige Benutzeroberflächenmetaphern funktionieren auf mehreren Plattformen (z. B. alle drei Plattformen verwenden ein ähnliches Bildlauflisten-Steuerelement), damit Ihre Anwendung jedoch nach Bedarf plattformspezifische Benutzeroberflächenelemente nutzen kann. Beispiele für plattformspezifische UI-Metaphern sind:

  • iOS – hierarchische Navigation mit soft back button, tabs on the bottom of the screen.
  • Android – Hardware-/Systemsoftware-Zurück-Schaltfläche, Aktionsmenü, Registerkarten oben auf dem Bildschirm.
  • Windows – Windows-Apps können auf Desktops, Tablets (z. B. Microsoft Surface) und Smartphones ausgeführt werden. Windows 10-Geräte verfügen z. B. über hardwarebasierte Schaltfläche "Zurück" und Live-Kacheln.

Es wird empfohlen, die Designrichtlinien zu lesen, die für die von Ihnen gewünschten Plattformen relevant sind:

Wiederverwendung von Bibliotheken und Code

Die Xamarin-Plattform ermöglicht die Wiederverwendung von vorhandenem C#-Code auf allen Plattformen und die Integration von Bibliotheken, die nativ für jede Plattform geschrieben wurden.

C#-Quelle und -Bibliotheken

Da Xamarin-Produkte C# und .NET Framework verwenden, können viele vorhandene Quellcode (sowohl Open Source- als auch interne Projekte) in Xamarin.iOS- oder Xamarin.Android-Projekten wiederverwendet werden. Häufig kann die Quelle einfach zu einer Xamarin-Lösung hinzugefügt werden und funktioniert sofort. Wenn ein nicht unterstütztes .NET Framework-Feature verwendet wurde, sind möglicherweise einige Optimierungen erforderlich.

Beispiele für C#-Quelle, die in Xamarin.iOS oder Xamarin.Android verwendet werden können, sind: SQLite-NET, NewtonSoft.JSON und SharpZipLib.

Objective-C Bindungen + Bindungsprojekte

Xamarin stellt ein Tool namens "btouch " bereit, mit dem Bindungen erstellt werden können, mit denen Bibliotheken in Xamarin.iOS-Projekten verwendet werden können Objective-C . Ausführliche Informationen dazu, wie dies erfolgt, finden Sie in der Dokumentation zu BindungstypenObjective-C.

Beispiele für Objective-C Bibliotheken, die in Xamarin.iOS verwendet werden können, sind: RedLaser-Barcodescans, Google Analytics und PayPal-Integration. Open-Source Xamarin.iOS-Bindungen sind auf GitHub verfügbar.

JAR-Bindungen + Bindungsprojekte

Xamarin unterstützt die Verwendung vorhandener Java-Bibliotheken in Xamarin.Android. Weitere Informationen zur Verwendung einer Java-Bibliothek finden Sie in der Dokumentation zur Bindung einer Java-Bibliothek. JAR-Datei von Xamarin.Android.

Open-Source Xamarin.Android-Bindungen sind auf GitHub verfügbar.

C über PInvoke

Die Technologie "Platform Invoke" (P/Invoke) ermöglicht das Aufrufen von Methoden in systemeigenen Bibliotheken sowie die Unterstützung für systemeigene Bibliotheken, um den Rückruf in verwaltetem Code zu ermöglichen.

Die SQLite-NET-Bibliothek verwendet beispielsweise Anweisungen wie folgt:

[DllImport("sqlite3", EntryPoint = "sqlite3_open", CallingConvention=CallingConvention.Cdecl)]
public static extern Result Open (string filename, out IntPtr db);

Dies bindet an die native C-Language SQLite-Implementierung in iOS und Android. Entwickler, die mit einer vorhandenen C-API vertraut sind, können eine Reihe von C#-Klassen erstellen, um der nativen API zuzuordnen und den vorhandenen Plattformcode zu verwenden. Es gibt eine Dokumentation zum Verknüpfen nativer Bibliotheken in Xamarin.iOS, ähnliche Prinzipien gelten für Xamarin.Android.

C++ über CppSharp

Miguel erklärt CXXI (jetzt CppSharp genannt) auf seinem Blog. Eine Alternative zur direkten Bindung an eine C++-Bibliothek besteht darin, einen C-Wrapper zu erstellen und über P/Invoke an diesen zu binden.