Xamarin – Cross-Plattform-Entwicklung von Business Apps

Nikolay IshpekovMobile Services, Mobility

Apps sind heute nicht nur aus unserem Alltag nicht wegzudenken, sondern haben auch im Unternehmen ihren Platz gefunden. Mit sogenannten Business Apps können Unternehmen ihre Geschäftsprozesse mobilisieren und optimieren. Hier ein Beispiel

phones

Die größte Herausforderung bei der Entwicklung einer solchen App ist die Heterogenität der mobilen Plattformen. Da auf den meisten Smartphones  Android, iOS oder auch Windows Phone installiert ist, spielen diese drei Plattformen eine zentrale Rolle für die Entwicklung von Business Apps. Leider sind die unterschiedlichen mobilen Betriebssysteme inkompatibel zueinander.

In der Regel ist für jedes Betriebssystem eine eigene Entwicklungsinfrasturktur erforderlich.

Bspw. wird für die Entwicklung einer Android-App die Programmiersprache Java benötigt, für iOS-Apps wird Objective-C oder Swift vorausgesetzt und Windows Phone-Apps werden in C# entwickelt. Da der Smartphone Markt sich als unbeständig erwiesen hat, ist plattformgebundene App Entwicklung ein riskantes Unterfangen. Aus diesem Grund wird eine App selten nur für eine Plattform vorgesehen. D.h. die App muss mehrmals implementiert werden. Das ist mit hohen Kosten und Entwicklungszeiten verbunden.

Cross-Plattform-Entwicklung könnte hier Abhilfe schaffen. Dabei handelt es sich um Technologien, die App-Entwicklung gleichzeitig für mehrere Plattformen ermöglichen. Somit können Entwicklungskosten deutlich reduziert werden. Sollte man für die Entwicklung einer iOS-, einer Android- und einer Windows-Phone-Version einer App je 100 Stunden pro Plattform brauchen, könnte man mittels Cross-Plattform-Entwicklung z.B. für insgesamt 150 Stunden die drei Versionen erstellen.

Es gibt mehrere plattformübergreifende Technologien. Man kann sogenannte mobile Web-Applikationen (Web-Apps) entwickeln, die im mobilen Web-Browser ausgeführt werden, unabhängig von der Art des Betriebssystems. Web-Apps werden mit Web-Technologien (HTML5, JavaScript, CSS) implementiert.

Eine weitere Möglichkeit ist, hybride Apps zu erstellen. Das sind Apps die Web-Technologien und native Technologien kombinieren. Die Apps werden genauso, wie die nativen Apps in die plattformspezifischen App-Stores hochgeladen und ausgeführt werden können. Im Inneren haben hybride Apps einen fest eingebauten Web-Browser, in dem die ausgeführt werden. Apps, die auf Basis von Web-Technologien gebaut wurden, können allerdings nicht mit den nativ erstellten Apps mithalten. Die sehen ziemlich ähnlich aus und können „viel weniger“ als eine normale App. Solche Apps hinterlassen nicht den Eindruck, Teil der Plattform zu sein. Außerdem ist es erfahrungsgemäß nicht so einfach die Anwendung für alle Web-Browser verfügbar zu machen. D.h. sollte man eine App erstellen wollen, die den nativen Benutzeranforderungen entgegenkommen soll, kann man die Web-Technologien nicht wirklich gebrauchen. Somit bleiben native Apps in Sachen Performance und Usability ungeschlagen. Die Frage ist, wie kann ich aus einem Code-Stand mehrere Plattformen nativ bedienen? Die Antwort liefern Xamarin.

Während Apps auf anderen Plattformen (wie z.B. PhoneGap) auf Basis von Web Technologien erstellt werden und sie dann als native Apps „verpackt“, werden, werden die mit Xamarin erzeugten Apps tatsächlich zu nativem Code kompiliert.

Xamarin logo (dark bg)

Was ist Xamarin?

Xamarin ist ein Cross-Plattform-Framework, das auf das Open-Source-Projekt Mono (.NET für nicht Windows Plattformen) basiert. Es wird die Programmiersprache C# benutzt. Mit Xamarin und spezieller Xamarin.Forms erstellt man einmal eine App und die ist sofort ausführbar auf iOS, Android und Windows Phone. Das Beste daran ist, dass man immer noch die Vorteile des nativen Codes genießen kann.

Xamarin.iOS bietet die Möglichkeit, native iOS-Apps mit der Programmiersprache C# zu entwickeln. Der sogenannte Ahead-Of-Time (AOT) Compiler kompiliert Xamarin.iOS-Apps direkt zu ARM-Assemblercode. Das bedeutet, dass die mit Xamarin erstellten Apps, reine native iOS-Apps sind und man Zugriff auf alle iOS-APIs hat.

Ähnlich wie Xamarin.iOS bietet Xamarin.Android die Möglichkeit, Android-Apps in C# zu erstellen, wobei hier einen Just-In-Time (JIT) Compiler eingesetzt wird, der den C#-Code zur Laufzeit kompiliert.

Bei beiden Ansätzen gibt es einen automatisierten Binding-Generator, der die Benutzung von Objective-C- und Java-Code in einer Xamarin-App ermöglicht.

Xamarin.Forms ist eine Technologie, mit der Benutzeroberflächen in einem gemeinsamen Codeabschnitt einmal beschrieben und auf mehreren Plattformen dargestellt werden.

 

Xamarin Architektur

Die Nutzung von Xamarin ist mit Kosten verbunden. Es wird ein kostenpflichtiges Benutzerkonto benötigt. Es gibt verschiedene Arten von Accounts. Der günstigste von allem ist der Indie Account und kostet $ 25 im Monat. Mit diesem Konto kann man Xamarin.iOS und Xamarin.Android, sowie das wahrscheinlich wichtigste Feature von Xamarin, nämlich das Cross-Plattform-Werkzeug Xamarin.Forms benutzen. Für die professionelle Nutzung von Xamarin kommt man allerdings nicht an den Business Account herum. Es kostet $ 83 im Monat und man kann Xamarin in Visual Studio anbinden und somit nicht nur iOS- und Android-Apps, sondern auch Windows Phone Apps auf der Grundlage einer gemeinsamen Codebasis implementieren. Mit dem Enterprise Account ($ 158 im Monat) kommen viele weitere Features, wie die Anbindung einer verschlüsselten Datenbank.

Xamarin @ SUNATO

Für unsere Geschäftskunden mobilisieren wir seit Jahren Prozesse durch Apps für iOS, Android und Windows Phone. Dabei haben wir vor Xamarin pro Plattform jeweils eine eigenständige App entwickelt. Oft haben unsere Kunden Apps gleichzeitig für mehrere Plattformen entwickeln lassen.

Mit Xamarin und insbesondere Xamarin.Forms optimierne wir die App-Entwicklung für unsere Kunden, so dass wir App nur einmal entwickeln und auf mehreren Plattformen ausspeilen.

Ältere Apps lassen sich auf Xamarin migrieren, dabei müssen die Apps tatsächlich erneut in C# entwickelt werden.

clip_image004

Xamarin App-Pojekt

Der größte Mehrwert bei Xamarin-Entwicklung ist, dass die App-Pflege deutlich einfacher geworden ist. Jede Erweiterung der Applikation muss nur einmal implementiert werden und App-Versionen (iOS, Android, ggf. Windows Phone) haben die neue Funktionalität automatisch. Dementsprechend muss man im Falle eines Bugs, den nur einmal fixen und nicht für jede Plattform einzeln.

Es hat sich herausgestellt, dass die von Xamarin.Forms angebotenen Steuerelemente ausreichend sind, solange keine extra „ausgefallenen“ Features angefordert werden. Das heißt, der meiste Codeanteil kann plattformübergreifend genutzt werden. Sollte man sich eine Funktionalität wünschen, die nicht mit Xamarin.Forms zu realisieren ist, muss man es separat pro Plattform implementieren. Erfahrungsgemäß kommt es, allerdings, sehr selten zu so einer Situation, außerdem arbeitet das Team von Xamarin ständig daran ihr Produkt zu verbessern, so dass immer mehr Features durch Xamarin.Forms abgedeckt werden.

Darüber hinaus lassen sich NuGet Packages und Xamarin Komponenten zu jedem Xamarin Projekt hinzufügen und somit lässt sich jede Xamarin-App beliebig und unkompliziert erweitern. Zusätzlich kann man die Daten problemlos mit SQLite persistieren.

Die verschiedenen App-Versionen haben alle die gleiche Funktionalität, allerdings sehen die nicht zu 100% gleich aus (wie z.B. Web-Apps), da der C#-Code zum nativen Code kompiliert wird. D.h. aus der Perspektive eines Benutzers fühlt sich die App als Teil der konkreten Plattform an. Auf den nachfolgenden Bildern sieht man einen Vergleich zwischen iOS- und Android-Ansichten einer von uns entwickleten Xamarin-App. Links sind die iOS-Screenshots und rechts die von Android.

Navigationsmenü- der App:

iOS                                                                               Android

Simulator Screen Shot 15.10.2015 15.55.52    Screenshot_2015-10-15-15-52-33

Bar-Code-Scan:

iOS                                                                           Android

IMG_0041    Screenshot_2015-10-15-16-37-55

Abschließend lässt sich zusammenfassen, dass wir, die Sunato GmbH, davon überzeugt sind, dass Xamarin das richtige Werkzeug insbesondere im Bereich der Business Apps ist.