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:
+9
-12
@@ -15,17 +15,13 @@ TERMUX=com.termux
|
||||
TROCKEN=0
|
||||
[ "${1:-}" = "--dry-run" ] && TROCKEN=1
|
||||
|
||||
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'
|
||||
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"; }
|
||||
source "$(dirname "$0")/lib.sh"
|
||||
|
||||
# Wählt eine adb-Fassung aus, statt sich auf die Reihenfolge in PATH zu verlassen:
|
||||
# Debians Paket ist Version 29 und kennt kein 'adb pair'. Rückgabewert 2 heißt
|
||||
# "gefunden, aber zu alt für WLAN" — für USB reicht es trotzdem.
|
||||
ADB_KANN_WLAN=1
|
||||
adb_einrichten || ADB_KANN_WLAN=0
|
||||
|
||||
# Führt ein adb-Kommando aus und meldet das Ergebnis, ohne bei Fehlschlag
|
||||
# abzubrechen: Hersteller-ROMs kennen nicht jedes appops-Ziel, und ein fehlendes
|
||||
@@ -53,7 +49,7 @@ adbs() {
|
||||
|
||||
# ── Gerät ────────────────────────────────────────────────────────────────────
|
||||
kopf "Gerät"
|
||||
command -v adb >/dev/null 2>&1 || { fehl "adb nicht gefunden. Bitte android-tools-adb installieren."; exit 1; }
|
||||
hinweis "adb $(adb_version "$ADB_BIN") — $ADB_BIN"
|
||||
|
||||
HIER="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
@@ -81,6 +77,7 @@ if [ "$ANZAHL" -eq 0 ]; then
|
||||
|
||||
[a] Abbrechen
|
||||
TEXT
|
||||
[ "$ADB_KANN_WLAN" = 0 ] && warn "Achtung: das gefundene adb kann kein WLAN — [w] wird scheitern."
|
||||
printf '\n Auswahl > '
|
||||
read -r WAHL </dev/tty
|
||||
case "$WAHL" in
|
||||
|
||||
Reference in New Issue
Block a user