Mehrere Geräte gleichzeitig unterstützen
Ein bereits verbundenes Gerät war bisher ein Grund auszusteigen, und provision.sh brach bei mehr als einem sogar ab. Beim Gerätewechsel ist genau das aber der Normalfall: altes und neues Telefon müssen zusammen erreichbar sein, sonst lässt sich nichts klonen. adb-wireless.sh zeigt jetzt die verbundenen Geräte mit Hersteller und Modell und bietet an, weiterzugehen, ein weiteres Gerät aufzunehmen oder eines zu trennen. provision.sh fragt bei mehreren, welches eingerichtet werden soll. Die Auswahl landet in ADB_SERIAL, und die adb-Hülle in lib.sh ergänzt -s selbsttätig — aber nur bei Unterbefehlen, die sich an ein Gerät richten. 'adb -s X devices' oder 'adb -s X connect' wären Unsinn und würden fehlschlagen. Dazu eine Korrektur, die beim Hinzufügen sonst falsch angeschlagen hätte: nach dem Koppeln reicht 'irgendein Gerät verbunden' als Erfolgsnachweis nicht, denn das erste Telefon ist ja noch da. Gezählt wird jetzt, ob eines DAZUGEKOMMEN ist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+62
-1
@@ -99,6 +99,67 @@ adb_einrichten() {
|
||||
;;
|
||||
esac
|
||||
# Ab hier zeigt 'adb' immer auf die ausgewählte Fassung, unabhängig von PATH.
|
||||
adb() { "$ADB_BIN" "$@"; }
|
||||
#
|
||||
# Ist ein Gerät ausgewählt (ADB_SERIAL), wird -s ergänzt — aber nur bei
|
||||
# Unterbefehlen, die sich an ein bestimmtes Gerät richten. 'adb -s X connect'
|
||||
# oder 'adb -s X devices' wären Unsinn und würden fehlschlagen.
|
||||
adb() {
|
||||
case "${1:-}" in
|
||||
shell|push|pull|install|install-multiple|uninstall|forward|reverse| \
|
||||
logcat|sync|reboot|remount|root|unroot|bugreport|wait-for-device)
|
||||
if [ -n "${ADB_SERIAL:-}" ]; then
|
||||
"$ADB_BIN" -s "$ADB_SERIAL" "$@"
|
||||
return
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
"$ADB_BIN" "$@"
|
||||
}
|
||||
return $rc
|
||||
}
|
||||
|
||||
# ── Geräteauswahl ────────────────────────────────────────────────────────────
|
||||
# Mehrere Geräte gleichzeitig sind der Normalfall, sobald man ein zweites Telefon
|
||||
# koppelt oder nebenher noch eines am Kabel hängt. Statt abzubrechen wird gefragt.
|
||||
|
||||
ADB_SERIAL="${ADB_SERIAL:-}"
|
||||
|
||||
adb_geraete() { adb devices | awk '$2 == "device" { print $1 }'; }
|
||||
|
||||
geraet_beschreiben() {
|
||||
local serial="$1" hersteller modell
|
||||
hersteller=$("$ADB_BIN" -s "$serial" shell getprop ro.product.manufacturer 2>/dev/null | tr -d '\r')
|
||||
modell=$("$ADB_BIN" -s "$serial" shell getprop ro.product.model 2>/dev/null | tr -d '\r')
|
||||
printf '%s %s' "${hersteller:-?}" "${modell:-?}"
|
||||
}
|
||||
|
||||
# Wählt ein Gerät aus und setzt ADB_SERIAL.
|
||||
# 0 = ein Gerät ausgewählt
|
||||
# 1 = gar kein Gerät verbunden
|
||||
geraet_waehlen() {
|
||||
local liste=() zeile i wahl
|
||||
while IFS= read -r zeile; do
|
||||
[ -n "$zeile" ] && liste+=("$zeile")
|
||||
done < <(adb_geraete)
|
||||
|
||||
case ${#liste[@]} in
|
||||
0) ADB_SERIAL=""; return 1 ;;
|
||||
1) ADB_SERIAL="${liste[0]}"; return 0 ;;
|
||||
esac
|
||||
|
||||
kopf "Mehrere Geräte verbunden"
|
||||
for i in "${!liste[@]}"; do
|
||||
printf ' [%d] %-24s %s\n' "$((i + 1))" "${liste[i]}" "$(geraet_beschreiben "${liste[i]}")"
|
||||
done
|
||||
printf '\n Welches Gerät soll eingerichtet werden? [1] > '
|
||||
read -r wahl </dev/tty || wahl=1
|
||||
wahl="${wahl:-1}"
|
||||
if [ "$wahl" -ge 1 ] 2>/dev/null && [ "$wahl" -le ${#liste[@]} ]; then
|
||||
ADB_SERIAL="${liste[$((wahl - 1))]}"
|
||||
ok "Gewählt: $ADB_SERIAL ($(geraet_beschreiben "$ADB_SERIAL"))"
|
||||
return 0
|
||||
fi
|
||||
warn "Ungültige Auswahl — nehme das erste Gerät."
|
||||
ADB_SERIAL="${liste[0]}"
|
||||
return 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user