Skip to content

Repository files navigation

Lanis Mobile

Read this in English

Deine App für das hessische Schulportal! In Zusammenarbeit mit dem staatlichen Schulamt für den Landkreis Groß-Gerau und den Main-Taunus-Kreis Einsatz an zahlreichen Schulen in Hessen mit über 45 Tausend täglichen Nutzern.

Jetzt bei Google Play Get it on IzzyOnDroid Jetzt im App Store
Website Discord

Screenshots

Mitarbeit

Dieses Projekt ist stark von Bug-Reports anderer Schulen oder von neuen Mitarbeitern abhängig. Der Grund dafür liegt in der modularen Natur des Schulportals, die es äußerst schwierig macht, eine universelle Lanis-App zu entwickeln.

Scheue dich nicht, einen Bug-Report zu erstellen, wenn du einen Fehler findest. Wir sind immer offen für neue Mitarbeiter/Schüler, die mit uns arbeiten, um die App zu verbessern.

Bug-Reports können auch an diese E-Mail-Adresse gesendet werden, falls kein Github-Konto vorhanden ist.

Erste Schritte für die Entwicklung

1. Flutter einrichten mit deiner bevorzugten IDE (Android Studio / VScode empfohlen)

2. Code generieren

dart run build_runner build # Datenbank
dart run intl_utils:generate # Lokalisierungen

3. Entwicklung

Beachte hierbei folgende Flags:

--dart-define=cronetHttpNoPlay=true

[Teilweise optional] Dieses Flag wird verwendet, um die Cronet-Binärdatei für das Networking auf Geräten ohne Play Services einzubinden (diese Version stellen wir auch im Play Store bereit).

Falls du aktuell das Standard-Android-Emulator-Image verwendest, solltest du stattdessen ein AOSP-Image nutzen, da diese in der Regel deutlich performanter sind als Versionen mit Play Services.

Bei iOS-Builds ist dieses Flag nicht erforderlich.

--dart-define=ANSI=true

[Optional] Dieses Flag ermöglicht farbige Logs der Anwendung, was sehr hilfreich sein kann, falls du noch nicht die Log-Filter-Tools deiner IDE nutzt. (Auf macOS wird empfohlen, dieses Flag wegzulassen, da das Standard-Terminal dies nicht unterstützt.)

flutter run --dart-define=cronetHttpNoPlay=true --dart-define=ANSI=true

4. Produktion

Für den tatsächlichen Release-Modus ist eine Signierung erforderlich. Dafür müssen die entsprechenden Dateien key.properties und local.properties im android-Verzeichnis abgelegt werden. Bei iOS muss in Xcode das Development Team geändert werden.

Falls du einen Build erstellst, den du an andere Personen weitergeben möchtest, ändere bitte die App-ID von io.github.alessioc42.sph in io.github.alessioc42.sph.<fork|dev>.<DEIN_NAME> oder einen anderen Namen, der sich von der Original-App-ID unterscheidet. Dies verhindert Konflikte mit den von uns veröffentlichten Store-Versionen.

flutter build <apk|aab|ipa> --release --dart-define=cronetHttpNoPlay=true

Alternativ gibt es das interaktive Skript build.py, das Android und/oder iOS in einem Durchlauf bauen, die Artefakte nach artifacts/ kopieren und optional zu App Store Connect / Google Play hochladen kann:

python3 build.py
# oder nicht-interaktiv:
python3 build.py --android --ios --skip-upgrade --yes

Store-Uploads (optional)

build.py lädt Zugangsdaten aus den (per .gitignore ausgeschlossenen) Dateien .env / .build.env im Repository-Root (echte Umgebungsvariablen haben Vorrang). Beispiel:

ASC_API_KEY_ID=XXXXXXXXXX
ASC_API_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ASC_API_KEY_PATH=/path/to/AuthKey_XXXXXXXXXX.p8
PLAY_SERVICE_ACCOUNT_JSON=/path/to/service-account.json

Zusätzliche Datei: python3 build.py --env-file /path/to/secrets.env.

Für Play-Uploads installiere die optionalen Python-Abhängigkeiten und verwende ein Google-Cloud-Service-Konto, das in der Play Console (Nutzer und Berechtigungen) mit der Berechtigung zur Verwaltung von Tracks eingeladen wurde:

pip install -r requirements-build.txt
python3 build.py --android --upload-android --play-track internal --yes

Für App-Store-Connect-Uploads (macOS + Xcode) erstelle einen App Store Connect API-Key, trage die Werte in .env ein (oder exportiere sie) und führe dann aus:

python3 build.py --ios --upload-ios --yes

Uploads liefern lediglich die Binärdatei aus (TestFlight / Play-Track). Sie reichen den Build nicht zur App-Review ein und geben kein Produktions-Rollout frei.

Releases

Used by

Contributors

Languages