adb gezielt auswählen statt der PATH-Reihenfolge zu vertrauen

Debians Paket android-tools-adb liefert Version 29 und kennt kein 'adb pair' —
das kam erst mit platform-tools 30. Wer beides installiert hat, bekommt je nach
PATH-Reihenfolge und Alter der Terminalsitzung mal das eine und mal das andere,
und die WLAN-Kopplung scheitert scheinbar grundlos.

provision/lib.sh sucht deshalb gezielt eine Fassung, die 'pair' beherrscht, und
schiebt eine Shell-Funktion 'adb' davor, sodass die Aufrufstellen unverändert
bleiben. Eine ausdrücklich gesetzte Vorgabe ADB= gilt absolut, auch wenn sie
kein pair kann — stillschweigend etwas anderes zu nehmen wäre die unangenehmere
Überraschung. Fehlt pair, läuft provision.sh mit einer Warnung weiter (für USB
reicht es), adb-wireless.sh bricht sauber ab.

Die Prüfung kommt bewusst ohne Pipe aus: 'adb pair' ohne Argumente endet mit
Code 1, weil es ein Aufruffehler ist. Unter 'set -o pipefail' hätte das die
gesamte Pipeline als fehlgeschlagen gelten lassen, obwohl grep den Hilfetext
gefunden hatte — die Erkennung meldete dadurch selbst adb 36 als zu alt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan
2026-08-09 17:53:41 +02:00
co-authored by Claude Opus 5
parent d334219c4f
commit 410cf01973
3 changed files with 121 additions and 29 deletions
+8 -17
View File
@@ -11,24 +11,15 @@
# Aufruf: ./provision/adb-wireless.sh
set -uo pipefail
if [ -t 1 ]; then
C_OK=$'\033[32m'; C_WARN=$'\033[33m'; C_ERR=$'\033[31m'
C_HEAD=$'\033[1;36m'; C_DIM=$'\033[2m'; C_OFF=$'\033[0m'
source "$(dirname "$0")/lib.sh"
kopf "Werkzeug"
if adb_einrichten; then
ok "adb $(adb_version "$ADB_BIN") — kann WLAN-Kopplung"
hinweis "$ADB_BIN"
else
C_OK=""; C_WARN=""; C_ERR=""; C_HEAD=""; C_DIM=""; C_OFF=""
fi
kopf() { printf '\n%s══ %s ══%s\n' "$C_HEAD" "$*" "$C_OFF"; }
ok() { printf '%s ✓%s %s\n' "$C_OK" "$C_OFF" "$*"; }
warn() { printf '%s !%s %s\n' "$C_WARN" "$C_OFF" "$*"; }
fehl() { printf '%s ✗%s %s\n' "$C_ERR" "$C_OFF" "$*"; }
hinweis() { printf '%s %s%s\n' "$C_DIM" "$*" "$C_OFF"; }
command -v adb >/dev/null 2>&1 || { fehl "adb nicht gefunden."; exit 1; }
# Ab Version 30 gibt es 'adb pair'. Ältere Fassungen können Wireless Debugging nicht.
if ! adb pair 2>&1 | grep -q 'usage: adb pair'; then
fehl "Dieses adb kennt 'adb pair' nicht — zu alt für Wireless Debugging."
hinweis "Aktuelle platform-tools von developer.android.com/tools/releases/platform-tools"
fehl "Ohne 'adb pair' ist eine Kopplung über WLAN nicht möglich."
hinweis "Entweder aktuelle platform-tools installieren, oder doch ein Kabel besorgen."
exit 1
fi
adb start-server >/dev/null 2>&1