31 lines
851 B
Bash
Executable File
31 lines
851 B
Bash
Executable File
#!/usr/bin/env bash
|
||
# 轮询等待 ADB 设备上线(USB 或无线),供 oneclick / 验收前使用
|
||
set -euo pipefail
|
||
SERIAL="${1:-192.168.110.80:5555}"
|
||
MAX_SEC="${2:-120}"
|
||
INTERVAL="${3:-3}"
|
||
|
||
echo "等待 ADB 设备: ${SERIAL}(最长 ${MAX_SEC}s)"
|
||
deadline=$((SECONDS + MAX_SEC))
|
||
while (( SECONDS < deadline )); do
|
||
if [[ "$SERIAL" == *:* ]]; then
|
||
adb connect "$SERIAL" >/dev/null 2>&1 || true
|
||
fi
|
||
state="$(adb -s "$SERIAL" get-state 2>/dev/null || true)"
|
||
if [[ "$state" == "device" ]]; then
|
||
echo "adb_ready $SERIAL"
|
||
adb -s "$SERIAL" shell echo ok >/dev/null
|
||
exit 0
|
||
fi
|
||
# 任意已授权 USB 设备
|
||
any="$(adb devices | awk '/\tdevice$/{print $1; exit}')"
|
||
if [[ -n "$any" ]]; then
|
||
echo "adb_ready $any"
|
||
exit 0
|
||
fi
|
||
sleep "$INTERVAL"
|
||
done
|
||
echo "adb_timeout $SERIAL" >&2
|
||
adb devices -l >&2 || true
|
||
exit 1
|