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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user