This commit is contained in:
team3
2026-09-19 23:50:36 +02:00
parent e0c615c73a
commit a62b587340
26 changed files with 1654 additions and 1 deletions

42
android/README.md Normal file
View File

@@ -0,0 +1,42 @@
# Planer für Android
Native App (Kotlin, Jetpack Compose) mit drei Tabs: Kalender, Todos, Notizen. Gleicher Server, gleiche Daten wie die Desktop-Extension.
## Bedienung
- **Kalender:** Monat, Woche, Tag. Tipp auf einen Tag im Monat öffnet den Tag. Langes Drücken auf einen Tag oder eine Stunde: Termin oder Todo erstellen. Kurzer Tipp auf eine Stunde in der Woche: Termin ab dieser Stunde. Tipp auf einen Block bearbeitet, im Dialog steht auch Löschen.
- **Todos:** Häkchen erledigt, Tipp auf den Text bearbeitet, Plus legt an.
- **Notizen:** Tipp öffnet Ordner oder Notiz. Langes Drücken: Erstellen, Umbenennen, Löschen. In der Notiz bearbeitet ein Tipp auf den Text, gespeichert wird alle 5 Sekunden und bei „Fertig“.
- **Server:** Zugang steckt schon in der APK (aus der `.env` beim Bauen). Hier lässt er sich ändern. Der Sync läuft im Hintergrund, solange die App offen ist.
## Bauen und installieren
```
make apk # holt beim ersten Mal die Werkzeuge nach ~/Android (JDK 17, SDK, Gradle), baut die APK mit URL und SYNC_TOKEN aus .env
make apk-install # installiert auf ein per USB verbundenes Handy
```
Am Handy: Entwickleroptionen, USB-Debugging an, beim Anstecken den Dialog „USB-Debugging zulassen“ bestätigen.
Alternativ die APK (`android/app/build/outputs/apk/debug/app-debug.apk`) aufs Handy kopieren und dort öffnen.
## Entwicklung
```
source android/dev/env.sh # Werkzeuge in den PATH
cd android && gradle test # Unit-Tests (Dates, Markdown, Store)
android/dev/setup.sh # legt auch den Emulator „test“ an
emulator -avd test -no-window & # Emulator ohne Fenster (mit Fenster: ohne -no-window)
android/dev/ui.sh boot # wartet, bis er bereit ist
android/dev/ui.sh install # APK in den Emulator, App starten
android/dev/ui.sh tap "Todos" # Bedienen: tap, longtap, type, key, has, texts, shot, dump
```
Im Emulator erreicht `http://10.0.2.2:8040` den lokalen Server aus `make dev`.
Bei USB-Handy plus Emulator nimmt `ui.sh` immer den Emulator.
## Aufbau
- `data/Store.kt` – Ablage als JSON in den App-Dateien, Tombstones, Übernahme vom Server
- `data/Sync.kt` – Abgleich wie die Extension: sofort nach eigener Änderung, sonst 1s/5s/10s je nach Ruhe
- `data/Markdown.kt`, `data/Dates.kt` – gleiche Regeln wie `markdown.js` und `dates.js`
- `ui/` – Kalender, Todos, Notizen, Server-Einstellungen, Dialoge