feat(scripts): ADB 断线后 auto_recover 轮询 oneclick
重启后无线调试未开时后台每 10s adb connect,上线自动跑 oneclick。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
36
sdk/scripts/auto_recover_adb_oneclick.sh
Executable file
36
sdk/scripts/auto_recover_adb_oneclick.sh
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
# 重启/断线后自动等待 ADB → oneclick → 验收 WS 在线
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
SDK_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
DEVICE_SERIAL="${DEVICE_SERIAL:-192.168.110.80:5555}"
|
||||
SDK_PORT="${WORKPHONE_SDK_PORT:-8899}"
|
||||
INTERVAL="${INTERVAL:-10}"
|
||||
LOG="${SDK_ROOT}/logs/auto_recover.log"
|
||||
mkdir -p "${SDK_ROOT}/logs"
|
||||
|
||||
log() { echo "[$(date '+%F %T')] $*" | tee -a "$LOG"; }
|
||||
|
||||
log "auto_recover start device=${DEVICE_SERIAL} interval=${INTERVAL}s"
|
||||
|
||||
while true; do
|
||||
if [[ "$DEVICE_SERIAL" == *:* ]]; then
|
||||
adb connect "$DEVICE_SERIAL" >/dev/null 2>&1 || true
|
||||
fi
|
||||
state="$(adb -s "$DEVICE_SERIAL" get-state 2>/dev/null || true)"
|
||||
if [[ "$state" == "device" ]]; then
|
||||
log "adb online → running oneclick"
|
||||
if DEVICE_SERIAL="$DEVICE_SERIAL" bash "${SCRIPT_DIR}/frida_workphone_oneclick.sh" >>"$LOG" 2>&1; then
|
||||
ws="$(curl -s "http://127.0.0.1:${SDK_PORT}/api/v3/connection/status" | python3 -c "import sys,json;d=json.load(sys.stdin).get('data',{});print(d.get('online_ws_count',0))" 2>/dev/null || echo 0)"
|
||||
log "oneclick done ws_online=${ws}"
|
||||
if [[ "$ws" -ge 1 ]]; then
|
||||
log "auto_recover success"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
log "oneclick incomplete, retry in ${INTERVAL}s"
|
||||
else
|
||||
log "waiting adb (${state:-offline})"
|
||||
fi
|
||||
sleep "$INTERVAL"
|
||||
done
|
||||
Reference in New Issue
Block a user