Files
StefanandClaude Opus 5 3c41623e52 install-scrcpy.sh statt apt — in Debian 12 gibt es das Paket nicht
Meine Anweisung 'sudo apt install scrcpy' war falsch: scrcpy ist in bookworm gar
nicht enthalten, und wo es existiert (ab trixie-backports) liegt es in contrib
statt main. 'Paket kann nicht gefunden werden' war also die richtige Antwort des
Systems, kein Konfigurationsfehler.

Das Projekt liefert ein eigenständiges Linux-Paket. Gegen das System geprüft:
keine fehlenden Bibliotheken, läuft ohne root. Installiert wird nach ~/.local,
Rückbau mit --deinstallieren.

Wichtiger Teil ist der erzeugte Starter: das Paket bringt ein eigenes adb mit,
hier 37.0.0 gegen 36.0.0 im System. Trifft ein abweichendes adb auf einen
laufenden Server, beendet es ihn — und kappt damit mitten in der Arbeit die
WLAN-Verbindung zum Telefon. Der Starter schiebt scrcpy deshalb dasselbe adb
unter, das auch die Provisioning-Skripte benutzen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 21:33:10 +02:00

103 lines
4.0 KiB
Markdown

# 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 <benutzer>@<telefon-ip>
```
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 <benutzer>@<ip>:/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.