Das ist wohl die Frage schlechthin, die aktuell bei jedem App-Projekt gefragt wird.
Aber erstmal ein Schritt zurück, damit wir alle verstehen was die Begriffe überhaupt genau bedeuten.
Android und iOS sind grundlegend andere Systeme, genau so wie macOS und Windows. Es ist irgendwie einleuchtend, dass eine iOS App nicht auf einem normalen Windows-PC installiert werden kann oder umgedreht. Ähnlich unterschiedlich sind iOS und Android in ihrer Funktionsweise und wie Apps für die beiden Platformen entwickelt werden. Das heißt, dass man für eine Smartphone-App erstmal zwei Apps entwickeln muss. Einmal die iOS Variante und einmal die für Android.
Da schluckt man, ja. Eine App ist nicht ein Projekt sondern eigentlich zwei. Doppelter Aufwand, doppelte Kosten.
Cross-Platform – Die Lösung?
Es gibt jedoch Ansätze die eine Lösung versprechen. Namentlich „Cross-Platform“ (Entwicklung über mehrere Platformen hinweg) und Hybrid (eine Webseite, die als App verpackt Zugriff auf Geräte-Funktionen wie GPS, Bluetooth etc. hat). Webseiten funktionieren offensichtlich sowohl auf iOS als auch auf Android ohne Unterschied, also ist dies eine beliebte Option eine einzelne App sowohl für iOS als auch für Android tauglich zu machen. Tools für diese zwei Optionen sind zum Beispiel Xamarin und Ionic.
„Ja wunderbar“, magst du dir denken, „das ist die Lösung!“
Der Haken an der Sache
Leider ist dies nicht so einfach. Hybrid-Apps fühlen sich oft nicht so wirklich wie Apps an. Irgendwas schwingt von Webseite im Benutzererlebnis mit. Ebenso sind meine persönlichen Erfahrungen mit Ionic zutiefst getrübt von Problemen mit Inkompatibilität, Unstabilität und mangelhafter Verlässlichkeit. Ein Gefühl, das mir bereits mehrere Male von Kollegen bestätigt wurde.
Ähnlich verhält es sich mit Cross-Platform Frameworks wie Xamarin. In der Theorie eine tolle Idee, in der Praxis stößt man jedoch oft auf Gegebenheiten, die man wieder für iOS auf die eine und für Android auf die andere Weise lösen muss… und schon hat man wieder an einer Stelle den Split. Dann kommt eine weitere Stelle hinzu und dann noch eine… Schnell wächst es zu einem Ungetüm, das wieder nichtmehr ganz so schön wartbar ist und doch wieder an vielen Stellen zwei Projekte verpackt in einem sind. Gewonnen hat man wenig, außer die Abhängigkeit zu einem Framework bei dem man wenig Einfluss hat, wenn mal Sachen nicht so funktionieren wie sie sollen.
Das ist meine Ansicht, die auch von mit mir befreundeten Entwicklern geteilt wird. Natürlich gibt es auch Entwickler die das anders sehen und ja da mag auch Geschmack mit reinspielen.
Unter‘m Strich bleiben folgende Fragen:
- Was ist das Ziel der App?
- Wie lange soll sie „leben“ und weiterentwickelt werden?
- Wie schnell muss sie auf den Markt geworfen werden?
- Kann danach mehr Zeit investiert werden um aus einem Prototypen eine saubere Version 2 zu entwickeln?
Ist der kurzfristige Zeitraum das entscheidende Kriterium so kann es trotz allen Nachteilen sinn machen sich für eine Cross-Platform- oder Hybrid-Lösung zu entscheiden. Aber bitte denke daran, dass, wie so oft, das dauerhafte Festhalten an kurzfristigen Lösungen dafür sorgt, dass nie langfristig geplant wird und man irgendwann in Schwierigkeiten rennt. In der Softwareentwicklung spricht man sogar von „technical debt“, also technischen Schulden, die irgendwann beglichen werden müssen. Irgendwann können diese Schulden so groß sein, dass sich wirtschaftlich eine komplette Neuentwicklung lohnt, selbst wenn die App „nur“ ein Jahr alt ist.
Ist der langfristige Zeitraum das entscheidende Kriterium so empfehle ich dringend eine native Lösung. Auf Dauer wird sich das rechnen und man ist flexibler und freier mit der Entwicklung, da man nicht von Limitierungen der Cross-Platform-Frameworks abhängig ist.
Artikel zum Anhören
Diesen Blogpost gibt es auch als Podcast zum hören: