×

Entwicklung von Android-Anwendungen

Entwicklung von Android-Anwendungen

Intro

Die Entwicklung von Apps, sei es für Android oder iOS, ist zu einem wichtigen Bestandteil bei der Bereitstellung verschiedener Dienste geworden. Viele unserer Kunden wünschen sich neben der klassischen Web-Oberfläche auch eine Unterstützung für mobile Endgeräte.

Dieser Artikel gibt einen kurzen Überblick darüber, wie wir als Entwicklerinnen und Entwickler an ein Projekt herangehen, wenn eine moderne Android-App entwickelt werden soll. Ich tue dies am Beispiel einer App, die wir gerade für unsere Mitarbeiterinnen und Mitarbeiter entwickeln. Diese App ergänzt unser bestehendes Zeiterfassungssystem bei eck*cellent IT um eine mobile Komponente.

Die Vision

Der erste und wichtigste Schritt bei der Entwicklung einer App ist es, eine klare Vorstellung davon zu haben, was die App am Ende leisten soll. Dabei ist es wichtig, die Zielgruppe und ihre Anforderungen zu verstehen, denn nur so können wir eine App entwickeln, die tatsächlich einen Mehrwert bietet.
In unserem Unternehmen gibt es bereits ein Webportal namens „Theo2 “ für Mitarbeiterinnen und Mitarbeiter, in dem sie zum Beispiel Arbeitszeiten buchen, Urlaub beantragen, sich krankmelden und verschiedene andere Dinge erledigen können. Viele dieser Aufgaben – insbesondere die Krankmeldung – sollten auch erledigt werden können, ohne dass sich die Mitarbeitenden nochmal an den Laptop setzen, sich mit Benutzername, Passwort und TOTP-Token einloggen und dort eine Krankmeldung abgeben müssen.
Deshalb war es von Anfang an ein wichtiges Ziel unserer App „Theo2-Mobil“, dass die Aufgaben mit wenigen Klicks erledigt werden können. Die Anmeldung per Fingerabdruck war eine unserer wichtigsten Anforderungen. Außerdem wollten wir eine 1-Klick-Krankmeldung implementieren, damit man sich schnell und einfach für den aktuellen Tag krankmelden kann, ohne lange Formulare ausfüllen zu müssen. Weitere Anforderungen an die App waren und sind die Implementierung eines intelligenten (sprachgesteuerten) Unternehmensassistenten, eine Übersicht über interessante Daten (z.B. die Anzahl der Tage bis zum nächsten Urlaub), sowie die Abbildung einiger bestehender Funktionen aus dem Webinterface.

Planung

Sobald Konzept und Idee formuliert sind, wird ein Projektplan erstellt. Dieser enthält die Anforderungen, sowie eine zeitliche Planung, z.B. in Form von Meilensteinen. Auch die Auswahl der einzusetzenden Technologien wird festgehalten.

Bei „Theo2-Mobil“ haben wir von vornherein gesagt, dass wir diese App auf Basis der neuesten Android-Version entwickeln wollen und auf gängige Entwicklungspraktiken und -werkzeuge setzen wollen.

Deshalb verwenden wir

  • Android 14 (SDK Version 34)
  • Kotlin als Programmiersprache
  • Jetpack-Compose als UI Toolkit
  • Material Design 3
  • Gradle für den Build-Prozess
  • Android Studio als Entwicklungsumgebung
  • GitLab zur Versionsverwaltung und CI/CD

Wir hatten zunächst überlegt, zusätzlich noch KMM (Kotlin Multiplatform Mobile) zu integrieren, um gleichzeitig für Android und iOS zu entwickeln, haben dies aber verworfen, da die verwendeten biometrischen Funktionen nur schwer plattformübergreifend zu realisieren sind.
Dies ermöglicht es uns, effiziente, leistungsstarke und benutzerfreundliche Anwendungen zu entwickeln.

Umsetzung

Natürlich spielt auch das Design der Anwendung eine Rolle. Es umfasst sowohl das User Interface (UI), als auch die User Experience (UX). Die UI stellt das visuelle Design der App dar (Aussehen, Farben, Schriften, …), während UX auf die Benutzererfahrung abzielt (Navigation, Bedienelemente, Menüführung, …). Wir haben uns viele Gedanken über Look and Feel der App gemacht. Das betraf nicht nur die verwendeten Farben, sondern auch, wie wir unser Firmenlogo unterbringen wollten und wie unser „Theo2-Mobil“ Logo eigentlich aussehen sollte. Mit Hilfe von Figma haben wir einen Prototyp erstellt. Damit können wir direkt mit Material 3 Komponenten arbeiten und auch schnell und effizient UI Mockups erstellen, an denen sich die Entwickler und Entwicklerinnen dann orientieren können.

Zu diesem Zeitpunkt haben wir auch noch einmal über die 1-Klick-Krankmeldung nachgedacht und uns dann doch lieber für eine 1-Swipe-Krankmeldung entschieden, um doch noch eine kleine Hürde einzubauen und so versehentliche Krankmeldungen zu vermeiden. Sobald das Bedienkonzept erstmal steht, müssen wir uns natürlich auch Gedanken über die eigentliche Entwicklung der App machen. Wie sieht die Architektur aus? Welche Architekturmuster eigenen sich am bestem?

Bei „Theo2-Mobil“ mussten wir uns keine Gedanken über ein Backend machen, da „Theo2“ von vornherein so konzipiert wurde, dass weitere Dienste über eine REST-Schnittstelle angebunden werden können. Diese Schnittstelle bietet Zugriff auf alle Funktionen, die auch über das Webinterface einstellbar sind. Nur für einige wenige Anforderungen mussten wir das Backend erweitern, da die App neue Möglichkeiten und Informationen bieten soll, die bisher nicht über das Webinterface zugänglich sind. Grundsätzlich entwickeln wir diese Anwendung agil, um flexibel und anpassungsfähig zu sein.

Bei der Architektur setzen wir auf ein 3-Schichten-Modell, das den Code in einen Data-Layer, einen Domain-Layer und einen Presentation-Layer unterteilt. Dabei orientieren wir uns an Uncle Bob´s Clean Architecture: DataSource-Klassen fallen in den Data-Layer und dienen dem Zugriff auf die Datenbank und die REST-Schnittstelle; UseCases und Repositories finden ihren Platz im Domain-Layer und bereiten die Daten für die Anzeige auf; Alle UI-Komponenten und Composables befinden sich im Presentation-Layer.

Während der Entwicklung werden auch Tests durchgeführt, um sicherzustellen, dass unsere App stabil und fehlerfrei läuft. Dazu verwenden wir Unit-Tests, Architekturtests und Systemtests. Für unsere App haben wir die Android Systemanforderungen zu Beginn bereits sehr hoch angesetzt, sodass wir hier nur wenige Varianten testen müssen. Ansonsten müsste hier noch zusätzlicher Aufwand betrieben werden, damit die App auch auf älteren Android Versionen fehlerfrei läuft.

Was kommt danach

Sobald die App erfolgreich getestet wurde, muss sie nun auch der Zielgruppe zugänglich gemacht werden. Für Android gibt es mehrere Möglichkeiten:

  1. Verteilung der APK über einen eigenen Kanal
  2. Verteilung über Managed Google Play
  3. Verteilung über den öffentlichem Google Play Store

Jede dieser Optionen hat Vor- und Nachteile. Wir haben uns dafür entschieden, unsere App im öffentlichen Google Play Store zu veröffentlichen, da unsere Mitarbeitenden so ihre privaten Smartphones nutzen und wir über diesen Weg regelmäßige automatische Updates vornehmen können. Um eine App im Google Play Store zu veröffentlichen, müssen wir jedoch die Richtlinien und Anforderungen einhalten, damit die App überhaupt akzeptiert wird. Dazu gehört mitunter die Einrichtung eines Demo-Nutzers, damit die App im Review-Prozess von Google analysiert werden kann. Nach der Veröffentlichung muss die App regelmäßig gewartet und aktualisiert werden, um sicherzustellen, dass sie weiterhin fehlerfrei funktioniert. Der Google Play Store bietet uns auch einen Feedback-Kanal, den wir nutzen können, um die Erwartungen der Nutzer besser zu erfüllen.

Fazit

Bei der Entwicklung einer App ist es wichtig, von Anfang an eine klare Vorstellung davon zu haben, welchen Mehrwert wir damit bieten können. Sowohl der Funktionsumfang als auch das Design der App selbst tragen wesentlich dazu bei, ob zukünftige Nutzerinnen und Nutzer die App als sinnvoll und benutzerfreundlich empfinden.


Von Benjamin Schmidt | 14.08.2024
Benjamin Schmidt

Softwareentwicklung