Mobile Development:
Android/iOS, Flutter und mehr

Ganz gleich, ob Sie eine mobile Version Ihrer Software anbieten oder eine komplett neue App auf den Markt bringen wollen, wir helfen Ihnen, die hohen Erwartungen Ihrer Nutzer auf allen Plattformen zu erfüllen.

Ganz gleich, ob Sie eine mobile Version Ihrer Software anbieten oder eine komplett neue App auf den Markt bringen wollen, die Anforderungen an klug entwickelte Apps, die eine einwandfreie User Experience bieten, sind hoch. Dasselbe gilt für die Erwartungen, die die Benutzer an die Apps haben, egal ob sie Android- oder iOS-User sind. Diese Erwartungen zu erfüllen ist keine leichte Aufgabe und die Möglichkeiten, eine zufriedenstellende Lösung zu erreichen, sind zahlreich. Die Wahl einer dieser Möglichkeiten hängt stark von den Anforderungen Ihres Projekts ab, aber wir möchten zwei der wichtigsten Wege zur Entwicklung der richtigen App für Ihre Benutzer hervorheben und einen näheren Blick auf ihre jeweiligen Vorteile werfen.

Plattformübergreifende vs. native Entwicklung

Apps werden in der Regel mit einem von zwei Ansätzen entwickelt: nativ oder mit einem plattformübergreifenden Framework wie Flutter oder React Native. Die native Entwicklung besteht darin, mit den SDKs von Android und iOS zu arbeiten und in Java / Kotlin bzw. Swift zu programmieren. Das hat zur Folge, dass die Apps unabhängig für jede Plattform entwickelt werden, ohne dass es eine gemeinsame Codebasis gibt, auf der sie aufgebaut sind. Die Arbeit mit plattformübergreifenden Frameworks hingegen ermöglicht es Entwicklern, Apps in einer Sprache zu implementieren (wie z. B. Dart im Fall von Flutter), die dann in nativen ARM-Code für die jeweiligen Plattformen kompiliert wird. Doch beschleunigt ein plattformübergreifender Ansatz wirklich die Entwicklungsprozesse? In welchen Belangen hat so ein Ansatz die Oberhand?

RideAmigos_CaseStudy_Listing
Mobile Entwicklung
RideAmigos — Schneller Markteintritt mit iOS & Android Apps

Was sind die Optionen in der plattformübergreifenden Entwicklung?

Die Community hinter der plattformübergreifenden mobilen Entwicklung ist gewachsen und es sind viele neue Optionen entstanden, die den einfachen, veralteten HTML-Ansatz überholt haben. Zwei der Anwärter dieser Entwicklungsart sind Flutter und React Native.

Jedes Framework hat seine eigene Architektur zur Erstellung von Apps, sodass sie jeweils ihre Vor- und Nachteile haben. Während native Apps eine bessere Benutzererfahrung und Leistung bieten, sind plattformübergreifende Frameworks darauf ausgelegt, Kosten zu sparen und die Entwicklung zu beschleunigen.

Was ist Flutter?

Flutter ist Googles Open-Source-Entwicklungskit zum Erstellen von plattformübergreifenden 2D-Apps. Es basiert auf der Programmiersprache Dart, die ebenfalls von Google entwickelt wurde. Die Anwendung wird vorzeitig in nativen ARM-Code kompiliert, was zu einer besseren Leistung führt. Flutter ist Wrapper für iOS/Android, sondern rendert die UI von Grund auf mit einer C++-Bibliothek namens Skia (https://skia.org). Das Flutter-Team bewirbt es dank seiner Hot-Reload-Funktionalität als effizientes Prototyping-Werkzeug. Entwickler, die mit OOP-Konzepten vertraut sind, können sich schnell an Dart/Flutter anpassen, ohne viel Erfahrung im mobilen Bereich zu haben.

Was ist React Native?

React Native basiert auf der React JavaScript Library von Facebook. Das Framework wurde 2015 veröffentlicht und ermöglicht es Entwicklern, native mobile Anwendungen mit JavaScript zu entwickeln. Viele Unternehmen, darunter Airbnb und Facebook, nutzen es oder haben es in der Entwicklung eingesetzt. Die React Native-Bridge ruft native Rendering-APIs für iOS & Android auf, nutzt also die echten UI-Komponenten der Plattformen. Ähnlich wie bei Flutter bietet sie auch eine Hot-Reload-Funktion.

Vergleich

1. UI & UX

Es gibt verschiedene Möglichkeiten, wie eine App designt werden kann: Entweder folgt man den Richtlinien der jeweiligen Plattform und hält den Benutzer so in einer bekannten Umgebung oder man entscheidet sich für ein neues, individuelles Design, um die Brand zu repräsentieren und das Produkt hervorstechen zu lassen. Letzteres kann abhängig vom Zweck der App und der Unternehmensbrand ein mehr oder weniger sinnvoller Ansatz sein.

Wenn es um die Umsetzung von Designs geht, gibt es unterschiedliche Konzepte, die in den verschiedenen Ansätzen verwendet werden. Native IDEs bieten diverse Möglichkeiten, die UI zu erstellen, entweder mit einem visuellen Editor, Markup-Sprache oder Code. Flutter hingegen basiert auf Widgets, die im Code erstellt werden. Die UI wird dann durch das Kombinieren und Stapeln dieser erstellt. Wie bei React Native wird JSX (eine Mischung aus JavaScript und XML-Markup) in Kombination mit Stylesheets zur Erstellung der UI verwendet.

2. Performance

Einer der wichtigsten Faktoren ist sicherlich die Performance. Hier ist die native Entwicklung im Vorteil, denn sie ist die Option, die für die jeweiligen Plattformen am meisten optimiert ist (wenn man entsprechend mit ihr entwickelt). Doch wie sieht es mit den plattformübergreifenden Ansätzen aus? Flutter wird in nativen ARM-Code kompiliert, was größere Performance-Probleme verhindert. Ebenso ist das Skia-Framework, das zum Rendern der UI verwendet wird, schnell und hat keine Nachteile im Vergleich zum nativen. In React Native wird echter JS-Code zur Laufzeit umgewandelt, was zu einem gewissen Overhead führt, der sich auf die Performance auswirkt. Es hat sich gezeigt, dass das Framework im Vergleich zu Flutter und nativer Entwicklung größere Anforderungen an die CPU hat, und beide plattformübergreifenden Ansätze benötigen etwas mehr Speicher.

3. Produktivität & Wartung

Unter den relevantesten Aspekten aus finanzieller Sicht ist das Hauptverkaufsargument der plattformübergreifenden Entwicklung, nämlich dass sie weniger Ressourcen benötigen soll. Einmal Code zu schreiben und automatisch sowohl Android als auch iOS zu unterstützen, entspricht jedoch nicht ganz der Realität. Entwickler müssen immer noch eine gewisse Menge an plattformspezifischem Code schreiben oder die Plattformen unterschiedlich behandeln. Daher lässt sich zwar etwas Zeit einsparen, aber auch nicht halbieren, und bei einem erfahrenem Native-Mobile-Team zu bleiben ist sinnvoller, als dieses auf Flutter oder React Native umzuschulen. Wenn jedoch das Ziel ist, dass Webentwickler auf die mobile Entwicklung umsteigen, können Flutter und vor allem React Native eine sehr sinnvolle Wahl sein, da sie auf bereits vorhandenen Fähigkeiten aufbauen.

Was die Wartung betrifft, ist der größte Nachteil von Cross-Plattform eine verzögerte Reaktion auf Plattform-Updates. Entwickler müssen unter Umständen warten, bis sie mit der Anpassung von Apps zur Unterstützung neuer OS-Versionen beginnen können, oder sie müssen auf Updates der SDK warten, wenn es Bugs oder Probleme gibt.

Fazit

Es gibt gute Argumente für die plattformübergreifende Entwicklung. Es ist durchaus möglich, das gleiche Look & Feel wie bei der nativen Entwicklung zu erreichen, was es zu einer vernünftigen Option für unabhängige Entwickler macht, die mehrere Plattformen unterstützen wollen, und Webentwicklern hilft, leichter in die mobile Entwicklung einzusteigen.

Für Entwicklungsteams, die über genügend Ressourcen in Form von mobilen Entwicklern verfügen, wird die native Entwicklung jedoch die sicherere Option bleiben, da keine Abhängigkeiten von anderen Unternehmen und Frameworks bestehen.