Um dieses Projekt im Entwicklungsmodus auf einem Android-Gerät zu starten, folge bitte diesen Schritten:
- Stelle sicher, dass du Flutter und Dart auf deinem System installiert hast. Wenn nicht folge den Anweisungen auf der offiziellen Flutter-Website.
- Klone das Repository auf deinen lokalen Computer.
- Führe
flutter pub getim Projektverzeichnis aus um alle Abhängigkeiten zu installieren. - Öffne das Projekt in deiner bevorzugten IDE (z.B. Android Studio oder VS Code).
- Starte einen Emulator oder schliesse ein physisches Android-Gerät an.
- Führe
flutter runim Terminal aus um das Projekt zu starten.
Die Struktur dieses Projekts folgt keinem expliziten Architektur-Pattern, sondern adaptiert Prinzipien, die meiner Arbeitsweise am besten entsprechen. Dennoch ähnelt die verwendete Struktur dem MVVM-Muster:
Screensals Views für die Darstellung der Benutzeroberfläche.Providersals ViewModels, die das State-Management übernehmen bzw. die UI mit der Business Logik verbinden.Servicesals Model, welche die Geschäftslogik enthält.
Die Architektur der App ist in verschiedene Verzeichnisse aufgeteilt:
entity: Enthält Datenmodelle, die die grundlegenden Datenstrukturen der App repräsentieren.providers: Beinhaltet die State-Management-Logik mit Flutter's Provider-Paket.screens: UI-Komponenten der App, aufgeteilt nach Funktionalität incourse,eventundtime_tracking.services: Service-Klassen, die die Geschäftslogik und die Kommunikation mit externen Datenquellen handhaben.theme: Enthält die themenbezogene Konfiguration und Styling-Informationen.utils: Hilfsklassen und Funktionen.widgets: Wiederverwendbare Widget-Komponenten, die in den Bildschirmen verwendet werden.
Als Vertiefungsthema wurde das Thema "Store Releases" gewählt. Dabei wurde versucht, die App im Google Play Store zu veröffentlichen.
Unter folgendem Link habe ich die Einzelheiten dokumentiert, für diejenigen, die daran interessiert sind.
Bitte sei dir folgender Punkte schon vorab bewusst:
- Du brauchst einen Google Developer Account, der einmalig 25$ kostet.
- Du musst deine Identität bestätigen.
- Du musst Screenshots für ein Tablet in genauer Grösse und Proportion angeben.
- Du brauchst einen Link zu deiner Datenschutzerklärung. Hier die Datenschutzerklärung von StudyMate: Datenschutzerklärung
- Bevor du die App online bringen kannst, musst du einen geschlossenen Test mit 20 Testern durchführen, der 2 Wochen aktiv läuft.
- Nach dem der Geschlossener Test abgeschlossen ist kannst du Produktionszugriff, mittels eines Fragebogens zum geschlossenen Test, beantragen welches nochmals bis zu 7 Tage dauern kann.
Die Veröffentlichung einer App im Store ist ein komplexer Prozess, der sorgfältige Planung und Vorbereitung erfordert.
Die App ist Produktionsreif und kann im Google Play Store unter folgendem Link heruntergeladen werden.
Der CI/CD-Workflow wird durch GitHub Actions automatisiert und ist für die Überprüfung des Codes und das Bauen der App zuständig.
Dieser Workflow wird durch Pushes in die main- und dev-Branches ausgelöst.
- Checkout: Klont den Code für den Build.
- Setup Java: Konfiguriert die Java-Umgebung, die für den Build erforderlich ist.
- Flutter Action: Stellt Flutter zur Verfügung und wählt die richtige Version für den Build aus.
- Dependencies: Lädt alle Abhängigkeiten herunter.
- Run Tests: Führt alle Flutter-Tests im Projekt aus.
- Build: Erstellt die APK-Datei der App.
- Release: Lädt die gebaute APK als ein Artefakt hoch und erstellt ein Release-Tag.
Die APK kann man hier herunterladen:
Es werden spezifische APKs für unterschiedliche Prozessorarchitekturen generiert, um eine optimale Performance sicherzustellen:
app-arm64-v8a-release.apk: Für neuere Geräte mit 64-Bit ARM Prozessoren.app-armeabi-v7a-release.apk: Für ältere Geräte mit 32-Bit ARM Prozessoren.app-x86_64-release.apk: Für Geräte mit x86_64 Architektur, wie z.B. einige Android-Emulatoren.
Der vollständige CI/CD-Prozess bis zur Veröffentlichung im Google Play Store wurde noch nicht umgesetzt, da die App sich aktuell im geschlossenen Test befindet.
Interessierte, die mehr über den Automatisierungsprozess von App-Builds und -Releases lernen möchten, sollten sich das Video "Flutter App Deployment - Leverage Codemagic CD to publish your app to Google Play Store" auf YouTube ansehen, das eine detaillierte Anleitung bietet.
Folgende Packages wurden in diesem Projekt eingesetzt:
| Paket | Beschreibung |
|---|---|
| provider | Ein State-Management-Paket, das die Verwaltung des App-States vereinfacht und eine effiziente Datenübertragung zwischen den Widgets ermöglicht. |
| awesome_notifications | Ermöglicht das Senden von vielfältigen Benachrichtigungen an den Benutzer. Mit diesem Paket können lokale und push-basierte Benachrichtigungen einfach implementiert werden. |
| permission_handler | Bietet eine vereinheitlichte Methode zur Anfrage und Verwaltung von App-Berechtigungen. |
| flutter_automation | Hilft bei der Automatisierung häufiger Aufgaben in Flutter-Projekten wie dem Erzeugen von Icons, Splash-Screens und der Initialisierung von Firebase. |
| hive | Ein leichtgewichtiges und schnelles NoSQL-Datenbanksystem für Flutter. Es wird verwendet, um lokale Daten effizient zu speichern und abzurufen. |
| hive_flutter | Erweitert Hive um Widgets und andere Funktionalitäten, die speziell für Flutter entwickelt wurden. |
| path_provider | Findet den korrekten Dateipfad für Daten, die lokal auf dem Gerät gespeichert werden sollen. |
Hinweis: Leider funktioniert die Benachrichtigung mit Awesome Notification nicht auf dem iPhone. Dieses Problem konnte wegen Zeitmangel nicht gelöst werden.


