Was ist Xamarin?
Xamarin ist allen voran eine Software Firma aus San Francisco. Gegründet wurde die Firma im Jahre 2011 von den Mono*-Entwicklern. Anfangs 2016 wurde die Firma allerdings von Microsoft übernommen.
Spricht man von Xamarin, meint man meistens die gleichnamige Software. Es gibt mehrere Produkte, die den Namen Xamarin beinhalten, später mehr dazu.
Grundsätzlich dient Xamarin dazu, mit der Programmiersprache C# oder anderen .NET-Sprachen iOS-, Android- und Windows-Apps zu entwickeln.
Der grosse Vorteil von Xamarin ist, dass für alle drei Plattformen nahezu derselbe Quellcode verwendet werden kann.
* Mono ist eine opensource Implementierung von Microsofts .NET Framework, mit der die Entwicklung von plattformunabhängiger Software ermöglicht wird.
Produkte
Xamarin ist in folgenden Produkten verfügbar:
Xamarin Platform
Bis zu der Version 3 war die Kernkomponente "Xamarin Platform" auch als "klassisches Xamarin" bezeichnet. In diesem Produkt sind unter anderem die beiden Komponenten "Xamarin.iOS" und "Xamarin.Android" enthalten. Mit diesen wird es möglich, native Apps für iOS und Android in C# zu entwickeln, für Windows selbstverständlich auch.
Mit "Xamarin Platform" ist es nur möglich, überall denselben Quellcode zu benutzen. Das heisst, die grafische Benutzeroberfläche muss nach wie vor für jede Plattform unabhängig designt werden, weil nicht jedes Betriebssystem gleich aussieht und es daher auch unterschiedliche Controls sowie Navigationsparadigmen gibt.
Hauptvorteil von "Xamarin Platform" ist also nur der Code in einheitlicher Programmiersprache.
Xamarin (klassisch) Gemeinsamer Quellcode (C#) Getrenntes GUI |
Xamarin.Forms
Seit der dritten Xamarin Version ist "Xamarin.Forms" integriert. Mit dieser Komponente wurde nun auch eine Lösung für plattformunabhängige Benutzeroberflächen eingeführt.
Das UI wird zunächst plattformunabhängig in C# definiert und anschliessend je nach Plattform in die entsprechenden Controls übersetzt.
Durch die Abstraktion steht natürlich nur der grösste gemeinsame Nenner aller Plattformen zur Verfügung. Steuerelemente, die plattformspezifisch sind, können daher nicht verwendet werden.
Neben den Standardcontrols wie Buttons, Textfelder etc. gibt es auch noch komplexere Elemente wie etwa DatePickers, ListViews usw. Die Deklaration der Oberfläche geschieht entweder im Code selber oder erfolgt in XAML (eine von Microsoft entwickelte allgemeine Beschreibungssprache für die Oberflächengestaltung von Anwendungen).
Die Namensgebung ist in Xamarin etwas verwirrend. Man spricht von vier verschiedenen Kategorien:
Pages: Die oberste Hierarchie in der Gestaltung. Die eigentlichen App-Seiten, hier befinden sich alle anderen Elemente.
Views: Standardcontrols - Buttons, Textfelder etc.
Layouts: Containerelemente - GridLayout, StackLayout usw.
Cells: Spezielle Elemente zum Beschreiben, wie Elemente (z.B. in einer Tabelle) gezeichnet werden.
Xamarin.Forms: Gemeinsamer Quellcode (C#) Gemeinsames GUI (C#) |
In der folgenden Grafik ist zu sehen, wie unterschiedlich die einzelnen Benutzeroberflächen auf den verschiedenen Plattformen schlussendlich aussehen:
![]() |
von links: iOS, Android & Windows Phone |
Xamarin für Visual Studio
Um Applikationen mit Xamarin entwickeln zu können, gibt es eine Erweiterung für Visual Studio.
Man kann so zwar in der gewohnten IDE entwickeln, jedoch gibt es bei Xamarin.Forms noch keinen richtigen Designer, das heisst man muss das GUI mit XAML beschreiben.
Für das klassische Xamarin gibt es bereits eine Art Designer, der aber nicht so umfangreich ist, wie der von Visual Studio gewohnte Designer.
Xamarin Studio
Xamarin Studio ist eine eigenständige IDE für die mobile-App-Entwicklung. Es enthält einen Debugger, einen C#-Compiler, und Werkzeuge für die Programmierung grafischer Benutzeroberflächen für iOS und Android.
Xamarin Studio war früher für beide, nun nur noch für Mac-Geräte verfügbar, da Windows-Benutzer die Visual Studio Version benutzen sollen.
Xamarin Test Cloud
Ein Problem, das bei der Entwicklung von mobilen Apps fast zwangsläufig vorkommt, ist das Testen auf den verschiedenen Endgeräten. Insbesondere bei plattformunabhängigen Apps ergibt sich in Kombination mit den verschiedenen Geräten und den verschiedenen Plattformen (inklusive der verschiedenen Versionen) eine ziemlich grosse Anzahl an Testfällen. Mit den integrierten Emulatoren in Xamarin werden zwar schon einige Geräte abgedeckt, aber es ist hier immer noch von einer sehr kleinen Menge die Rede. Und hier kommt die "Xamarin Test Cloud" ins Spiel.
Die Test Cloud ermöglicht, automatisierte UI-Tests zu schreiben, die sich dann auf physikalischen, von der Cloud zur Verfügung gestellten Testgeräten ausführen lassen. Die "Xamarin Test Cloud" bietet über 1'800 solcher Testgeräte an.
Fazit
Da wir in der Schule nur wenige Lektionen in unserem Team Zeit hatten, konnten wir leider nicht so viele praktische Erfahrung mit der Software sammeln. Dazu kommt, dass es vergleichsweise ein recht grosser Aufwand ist, bis Xamarin vollständig installiert ist und problemlos läuft.
Grundsätzlich finde ich die Idee von Xamarin sehr gut, da so praktisch jeder Windows-Entwickler für alle wichtigen Plattformen mit relativ wenig Aufwand entwickeln kann.