Provisioning ohne Kabel: ADB über WLAN
provision.sh fragt beim Start nach USB oder WLAN, statt ohne Gerät einfach abzubrechen. Der WLAN-Weg braucht kein Kabel — Android 11 und neuer koppeln per sechsstelligem Code. adb-wireless.sh sucht Kopplungs- und Verbindungsdienst per mDNS, statt die Adressen abtippen zu lassen. Beide Ports vergibt Android bei jedem Einschalten neu, und sie sind verschieden — das ist die häufigste Verwechslung dabei. Fällt auf manuelle Eingabe zurück, wenn das Netz Multicast blockiert. provision.sh kann die Skripte anschließend per adb push aufs Telefon legen. Das erspart es, Zugangsdaten für ein privates Repo auf einer Bildschirmtastatur einzutippen. Mit dem Hinweis, dass /sdcard keine Ausführungsrechte kennt und die Dateien deshalb erst nach ~ kopiert werden müssen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+97
-9
@@ -5,8 +5,8 @@
|
||||
# System mit gewöhnlichen App-Berechtigungen aus — das ist eine harte Regel des
|
||||
# Projekts, siehe CONTRIBUTING.md.
|
||||
#
|
||||
# Voraussetzung: Telefon per USB, Entwickleroptionen und USB-Debugging aktiv,
|
||||
# der Dialog "Diesem Computer vertrauen" bestätigt.
|
||||
# Voraussetzung: Entwickleroptionen aktiv. Die Verbindung geht per USB-Kabel ODER
|
||||
# per WLAN (Android 11 und neuer) — das Skript fragt danach, wenn kein Gerät da ist.
|
||||
#
|
||||
# Aufruf: ./provision/provision.sh [--dry-run]
|
||||
set -uo pipefail
|
||||
@@ -55,13 +55,70 @@ adbs() {
|
||||
kopf "Gerät"
|
||||
command -v adb >/dev/null 2>&1 || { fehl "adb nicht gefunden. Bitte android-tools-adb installieren."; exit 1; }
|
||||
|
||||
HIER="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
ANZAHL=$(adb devices | grep -cw 'device$' || true)
|
||||
|
||||
# Ohne Gerät nicht einfach abbrechen: der häufigste Fall ist, dass gar kein Kabel
|
||||
# zur Hand ist. Android 11+ kann Wireless Debugging, das reicht für alles hier.
|
||||
if [ "$ANZAHL" -eq 0 ]; then
|
||||
fehl "Kein Gerät verbunden oder nicht autorisiert."
|
||||
hinweis "adb devices prüfen. Steht dort 'unauthorized', den Dialog auf dem Telefon bestätigen."
|
||||
exit 1
|
||||
warn "Kein Gerät verbunden."
|
||||
if [ ! -t 0 ]; then
|
||||
hinweis "Keine Eingabe möglich — bitte erst ./provision/adb-wireless.sh ausführen."
|
||||
exit 1
|
||||
fi
|
||||
cat <<'TEXT'
|
||||
|
||||
Wie soll verbunden werden?
|
||||
|
||||
[u] USB-Kabel
|
||||
Entwickleroptionen und USB-Debugging aktiv, Dialog "Diesem Computer
|
||||
vertrauen" auf dem Telefon bestätigt.
|
||||
|
||||
[w] WLAN, ohne Kabel (Android 11 und neuer)
|
||||
Einmalige Kopplung per sechsstelligem Code. Danach läuft alles
|
||||
über das Netz — ein Kabel wird nie gebraucht.
|
||||
|
||||
[a] Abbrechen
|
||||
TEXT
|
||||
printf '\n Auswahl > '
|
||||
read -r WAHL </dev/tty
|
||||
case "$WAHL" in
|
||||
w|W)
|
||||
if [ ! -x "$HIER/adb-wireless.sh" ]; then
|
||||
fehl "adb-wireless.sh nicht gefunden neben diesem Skript."
|
||||
exit 1
|
||||
fi
|
||||
"$HIER/adb-wireless.sh" || exit 1
|
||||
ANZAHL=$(adb devices | grep -cw 'device$' || true)
|
||||
;;
|
||||
u|U)
|
||||
printf ' Kabel anschließen und Enter drücken > '
|
||||
read -r _ </dev/tty
|
||||
adb wait-for-device &
|
||||
WARTE=$!
|
||||
# Nicht ewig hängen bleiben, falls das Kabel nur lädt und keine Daten überträgt.
|
||||
( sleep 60; kill "$WARTE" 2>/dev/null ) >/dev/null 2>&1 &
|
||||
wait "$WARTE" 2>/dev/null
|
||||
ANZAHL=$(adb devices | grep -cw 'device$' || true)
|
||||
;;
|
||||
*)
|
||||
hinweis "Abgebrochen."
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$ANZAHL" -eq 0 ]; then
|
||||
fehl "Es ist weiterhin kein Gerät verbunden."
|
||||
adb devices | sed 's/^/ /'
|
||||
hinweis "Steht dort 'unauthorized', den Dialog auf dem Telefon bestätigen."
|
||||
exit 1
|
||||
fi
|
||||
ok "Gerät verbunden"
|
||||
elif [ "$ANZAHL" -gt 1 ]; then
|
||||
fehl "Mehrere Geräte verbunden — bitte nur eines anschließen."
|
||||
fehl "Mehrere Geräte verbunden — bitte nur eines aktiv lassen."
|
||||
adb devices | sed 's/^/ /'
|
||||
hinweis "Überzählige trennen, per WLAN verbundene mit: adb disconnect <ip:port>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -142,14 +199,45 @@ case "$HERSTELLER" in
|
||||
;;
|
||||
esac
|
||||
|
||||
# ── Repo aufs Telefon ────────────────────────────────────────────────────────
|
||||
# adb push funktioniert auch über WLAN. Das erspart es, auf dem Telefon Zugangsdaten
|
||||
# für ein privates Repo eintippen zu müssen — auf einer Bildschirmtastatur eine Qual.
|
||||
kopf "Skripte aufs Telefon"
|
||||
REPO_ROOT="$(cd "$HIER/.." && pwd)"
|
||||
ZIEL=/sdcard/hpos
|
||||
if [ "$TROCKEN" = 1 ]; then
|
||||
warn "Trockenlauf — es wird nichts übertragen."
|
||||
else
|
||||
printf ' Die Spike-Skripte jetzt nach %s übertragen? [J/n] > ' "$ZIEL"
|
||||
read -r UEBERTRAGEN </dev/tty || UEBERTRAGEN=n
|
||||
case "${UEBERTRAGEN:-j}" in
|
||||
j|J|"")
|
||||
adb shell rm -rf "$ZIEL" >/dev/null 2>&1
|
||||
if adb push "$REPO_ROOT" "$ZIEL" >/dev/null 2>&1; then
|
||||
ok "Übertragen nach $ZIEL"
|
||||
hinweis "In Termux nach ~ kopieren, damit die Dateien ausführbar sein können:"
|
||||
hinweis " cp -r /sdcard/hpos ~/hpos && cd ~/hpos"
|
||||
hinweis "(auf /sdcard gibt es keine Ausführungsrechte — das ist normal)"
|
||||
else
|
||||
warn "Übertragung fehlgeschlagen — dann per git clone auf dem Telefon."
|
||||
fi
|
||||
;;
|
||||
*) hinweis "Übersprungen." ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
kopf "Fertig"
|
||||
cat <<TEXT
|
||||
Nächster Schritt auf dem Telefon, in Termux:
|
||||
Nächste Schritte auf dem Telefon, in Termux:
|
||||
|
||||
cp -r /sdcard/hpos ~/hpos && cd ~/hpos # falls oben übertragen
|
||||
# oder: pkg install -y git && git clone <repo-url> hpos && cd hpos
|
||||
|
||||
pkg install -y git
|
||||
git clone <repo-url> hpos && cd hpos
|
||||
bash spike/00-bootstrap-termux.sh
|
||||
|
||||
Danach die Beweise der Reihe nach — S1 zuerst, weil er der wackligste ist.
|
||||
Ergebnisse gehören nach docs/spike-protokoll.md.
|
||||
|
||||
Nicht vergessen: die oben genannten Handgriffe von Hand erledigen.
|
||||
Ohne sie beendet das ROM den Stack über Nacht.
|
||||
TEXT
|
||||
|
||||
Reference in New Issue
Block a user