Cross Plattform App-Entwicklung mit Xamarin

Bei der Entwicklung von Mobile Apps gibt es mittlerweile verschiedenste Herangehensweisen. Wir setzen seit Jahren einen Schwerpunkt auf Cross Plattform-Entwicklung, was heutzutage neben Native Apps und PWAs der Standard in der Branche ist. Dabei nutzen wir hauptsächlich Xamarin respektive Xamarin.Forms. Wieso das so ist, erklären wir euch im Folgenden:

Was ist Cross Platform-Entwicklung?

Für jedes Unternehmen, welches das Projekt “Mobile App” angeht, stellt sich früher oder später die Frage, für welche Betriebssysteme man die App verfügbar machen möchte. Soll man die App nur iPhone-Nutzern zugänglich machen? Oder vielleicht nur Android-Usern? Beiden? Was ist eigentlich mit Windows Phone? Und existiert Blackberry eigentlich noch?

Ein Blick auf die Verteilung der Marktanteile macht schnell klar, dass die beiden Tech-Giganten Google und Apple den Markt unter sich aufteilen. Kombiniert kommen sie mit ihren Mobilen Betriebssystemen Android und iOS in der Schweiz auf 98.2% Marktanteil. Ein Blick auf die Zahlen der letzten drei Jahre zeigt, dass sich dieses Quasi-Duopol eher noch stärker festigt als dass Konkurrenz auszumachen wäre:

Die Antwort auf die eingangs gestellte Frage nach dem Betriebssystem, für welches man seine App am besten entscheidet lautet dementsprechend so gut wie immer: iOS und Android.

Nun gibt es verschiedene Herangehensweisen dafür, eine App für 2 Plattformen zu entwickeln, die alle ihre Vor- und Nachteile haben. Am weitesten verbreitet sind die folgenden:

Native App

Eine Native App ist eine Anwendung, die nur für eine spezifische Plattform entwickelt wurde. Dies bedeutet, dass die iOS-App komplett unabhängig von der Android-App programmiert wird. Es gelangen also zwei separate Entwickler-Teams zum Einsatz, die beide mehr oder weniger gelöst voneinander in den jeweiligen Programmiersprachen (Swift und Objective-C für iOS, Java für Android) arbeiten. So erreicht man zwar die höchstmögliche Performance, allerdings ist die Entwicklung der App durch die Doppelspurigkeit relativ zeit- und ressourcenintensiv.

Cross Platform

Das Bedürfnis, eine App so effizient wie möglich für mehrere Betriebssysteme zu veröffentlichen, ist natürlich nicht ganz neu. Kein Wunder also, gibt es seit einigen Jahren Frameworks (sprich: Entwicklungsumgebungen), die genau dafür da sind. Anstatt dass man also eine App zwei mal in zwei verschiedenen Programmiersprachen entwickeln muss hat man dank dem Cross Platform Framework eine gemeinsame Code-Basis. Von dieser Basis kann man dann je nach Framework und Projekt zwischen 70% und weit über 90% des gesamten Codes für beide Plattformen nutzen.

Es ist also möglich, die Software unabhängig vom Betriebssystem zu schreiben und am Ende für die Implementierung auf iOS oder Android nur relativ geringfügige plattformspezifische Anpassungen vorzunehmen.

Dies führt zu einer enormen Zeitersparnis, sowohl in der Initialen Entwicklung als auch im Unterhalt respektive bei der Implementierung von Updates oder neuen Features.

Was ist Xamarin?

Xamarin wurde bereits 2011 mit dem Ziel gegründet, mobile Software zu vertreiben. Seit 2016 gehört das Unternehmen zu Microsoft, mit dessen Unterstützung es zu einem der weltweit am meisten verwendeten Cross Plattform-Frameworks aufstieg.

Xamarin gibt es in zwei Versionen, Xamarin.Platform sowie Xamarin.Forms. Forms ist dabei eine Erweiterung des Frameworks, die konsequent auf Cross Plattform-Entwicklung ausgelegt ist. Man könnte Xamarin.Forms als Abstraktion zwischen den Plattformen bezeichnen, mit welcher Buttons oder andere UI-Layers per API angesteuert werden können. Dadurch kann auch UI Code zwischen den Plattformen geteilt werden und muss nur einmal geschrieben werden. Dadurch steigt der Anteil geteilter Code auf bis über 95%, was offensichtlich sehr viel effizienter ist.

Xamarin.Platform vs. Xamarin.Forms. Quelle: microsoft

Effizienz-Steigerung hin oder her. Die Arbeit mit Xamarin ist auch für Entwickler angenehmer, da ein Projekt von A bis Z mit C# geschrieben werden kann und nicht mehrere unterschiedliche Programmiersprachen eingesetzt werden müssen.

Vorteile von Xamarin

Die Entwicklung mit Cross Plattform-Frameworks im Allgemeinen und mit Xamarin.Forms im Speziellen bringt einige Vorteile mit sich. Ein Überblick:

Shared Code Base

  • bis zu 95% des Codes kann für beide Plattformen verwendet werden
  • dadurch deutlich tiefere Kosten für Entwicklung und Wartung und
  • vereinfachter Update-Prozess

Native Performance & User Experience

  • Kaum Unterschiede bezüglich Performance gegenüber Native Apps
  • User Experience entspricht der Plattform
  • vollständiger Support von Hardware und Geräte-Funktijonen

Hohe Flexibilität

  • Cross-platform Implementation mit Möglichkeit, bei Bedarf trotzdem beliebig auf plattformspezifische Fälle einzugehen

Etablierte Plattform

  • Xamarin existiert seit 2011, Xamarin.Forms seit 2014
  • Grosse Entwickler-Community
  • Gute Auswahl an Plugins und Komponenten
  • Grosse Learning-Datenbank

Schnelleres Troubleshooting

  • Xamarin Analytics erfasst automatisch das Nutzerverhalten nach Plattform und Device, womit das Aufspüren von Bugs relativ einfach ist

Nachteile von Xamarin

Wo Licht ist, ist natürlich auch Schatten, weshalb wir uns nicht vor den Nachteilen von Xamarin verschliessen möchten. Die Arbeit mit dem beliebten Cross Plattform-Framework hat auch seine Nachteile:

  • Plugins sind nicht immer up-to-date
  • Plattformspezifische Spezialfälle sind teilweise nicht für Xamarin.Forms verfügbar
  • Updates von Betriebssystemen (iOS / Android) sind zeitversetzt verfügbar
  • Die Xamarin-Community ist kleiner als die native iOS respektive Android Community
  • App-Grösse: Xamarin-Apps sind im Schnitt etwa doppelt so “schwer” wie native Apps
  • Relativ hohe Lizenz-Kosten für Xamarin Visual Studio

Case Study: Xamarin.Platform vs. Xamarin.Forms

Das klingt in der Theorie ja alles schön und gut, aber wie sieht es in der Realität aus? Um aufzuzeigen, wieso wir auf Xamarin.Forms setzen, vergleichen wir doch am besten zwei unserer Projekte miteinander.

In der linken Ecke: mobilmed – eine Gesundheits-App, welche wir 2011 entwickelten
In der rechten Ecke: FOOBY – die umfangreiche Koch-App von Coop

Zugegeben, die mobilmed-App hat schon ein paar Jährchen auf dem Buckel und ist nicht mehr in Betrieb. Der Vergleich ist trotzdem interessant, da wir mobilmed ebenfalls mit Xamarin entwickelten.

Der Vergleich zeigt eindrücklich, dass sich bereits mit Xamarin.Platforms einiges an Aufwand sparen lässt, dass die Verwendung von Xamarin.Forms aber noch einmal eine deutliche Verbesserung bringt. 88% des Codes der gesamten FOOBY-App ist für beide Plattformen identisch, was natürlich eine riesige Aufwandsminimierung bedeutet.