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.
|
|
|
|||
| Website | Discord | ||||
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.
1. Flutter einrichten mit deiner bevorzugten IDE (Android Studio / VScode empfohlen)
dart run build_runner build # Datenbank
dart run intl_utils:generate # LokalisierungenBeachte hierbei folgende Flags:
[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.
[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=trueFü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=trueAlternativ 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 --yesbuild.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.jsonZusä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 --yesFü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 --yesUploads liefern lediglich die Binärdatei aus (TestFlight / Play-Track). Sie reichen den Build nicht zur App-Review ein und geben kein Produktions-Rollout frei.









