# 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