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>
103 lines
4.0 KiB
Markdown
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.
|