# Am Projekt arbeiten Die Bildschirmtastatur eines Telefons ist zum Entwickeln unbrauchbar. Zwei Werkzeuge lösen das, und sie ergänzen sich: **SSH** für alles Textliche, **scrcpy** für alles, was man sehen muss. ## SSH nach Termux — für Terminalarbeit Der wichtigere der beiden Wege. Echte Tastatur, Zwischenablage, Verlauf, Rollbalken. ```bash # Einmalig auf dem PC (provision.sh bietet es von selbst an) adb push ~/.ssh/id_ed25519.pub /sdcard/hpos-id.pub # Auf dem Telefon bash ~/hpos/tools/dev-ssh.sh # Danach vom PC ssh -p 8022 @ ``` Port 8022 statt 22, weil eine gewöhnliche App keine Ports unter 1024 belegen darf. **Dateien im Editor des Rechners bearbeiten** — kein Hin- und Herkopieren: ```bash mkdir -p ~/telefon sshfs -p 8022 @:/data/data/com.termux/files/home ~/telefon # lösen mit: fusermount3 -u ~/telefon ``` `sshd` überlebt keinen Neustart von Termux. Danach genügt `sshd` in Termux. In fremden Netzen abschalten: `pkill sshd` — der Dienst ist im ganzen WLAN erreichbar. ## scrcpy — Bildschirm und Zwischenablage Für alles Grafische unverzichtbar: Beweis S1 zeigt sich nur auf dem Bildschirm, und die Kamera in S3 prüft man in einem Browserfenster. ```bash ./tools/install-scrcpy.sh # holt das offizielle Linux-Paket nach ~/.local scrcpy # nutzt die bestehende adb-Verbindung, auch über WLAN ``` **`apt install scrcpy` funktioniert auf Debian 12 nicht** — dort ist das Paket gar nicht enthalten, und ab trixie-backports liegt es in `contrib` statt `main`. Das Projekt liefert aber ein eigenständiges Linux-Paket ohne Systemabhängigkeiten, und genau das holt das Skript. Kein root, alles unter `~/.local`, Rückbau mit `--deinstallieren`. Das Skript legt dabei einen Starter an, der scrcpy **dasselbe adb unterschiebt**, das auch die Provisioning-Skripte benutzen. Das ist kein Schönheitsfehler: das Paket bringt eine eigene, oft neuere adb-Fassung mit, und ein abweichendes adb beendet einen laufenden Server — was mitten in der Arbeit die WLAN-Verbindung zum Telefon kappen würde. Was es mitbringt, ohne weitere Einrichtung: - **Zwischenablage in beide Richtungen.** Auf dem Telefon kopieren, auf dem PC einfügen und umgekehrt. - **Tastatur und Maus des Rechners** wirken direkt im Telefon — auch in Termux. - Läuft über dieselbe WLAN-Verbindung, die schon steht. Nützliche Schalter: | Schalter | Wofür | |---|---| | `--max-size 1024` | weniger Bandbreite, flüssiger über WLAN | | `--stay-awake` | Bildschirm bleibt an, solange gespiegelt wird | | `--turn-screen-off` | Telefonbildschirm aus, spart Akku beim langen Arbeiten | | `--no-audio` | falls die Tonübertragung stört | `scrcpy --new-display` kann eine App in ein eigenes virtuelles Display legen. Als Entwicklerwerkzeug ist das nützlich — als Produktbestandteil wurde es [verworfen](verworfene-entscheidungen.md#v6--host-apps-als-fenster-im-linux-desktop), weil es dauerhaft Shell-Rechte bräuchte. ## Der Weg der Änderungen ``` PC (Arbeitskopie) --git push--> Forge --git pull--> Telefon (~/hpos) ``` Auf dem Telefon wird nicht entwickelt, dort wird ausgeführt. Änderungen entstehen auf dem Rechner, werden gepusht und mit `cd ~/hpos && git pull` geholt. Deshalb kommt per adb auch nur das Startskript aufs Gerät und nicht das Repo — sonst wäre es eine Kopie statt einer Arbeitskopie. Ergebnisse laufen in die Gegenrichtung: `spike/out/` bleibt lokal auf dem Telefon (bewusst nicht im Repo), die Auswertung wandert von Hand nach [`spike-protokoll.md`](spike-protokoll.md). ## Kleinigkeiten, die Zeit sparen - **Protokolle direkt vom Telefon holen**, ohne SSH: `adb shell run-as com.termux cat …` scheitert meist an fehlender Debuggability. Einfacher ist der Umweg über die gemeinsame Ablage: `cp ~/hpos/spike/out/*.log /sdcard/` und dann `adb pull /sdcard/…` - **Termux offen halten**: Ein Wisch aus den zuletzt verwendeten Apps beendet den gesamten Stack. Im Task-Manager anpinnen. - **Mehrere Sitzungen** in Termux mit `Ctrl+Alt+C` — praktisch, um neben einem laufenden Desktop noch ein Terminal zu haben.