From 84c1b7479829e5d0a4f70c64c29c571cf3fdabb2 Mon Sep 17 00:00:00 2001 From: Manus AI Date: Sun, 24 May 2026 11:30:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(scripts):=20ADB=20=E6=96=AD=E7=BA=BF?= =?UTF-8?q?=E5=90=8E=20auto=5Frecover=20=E8=BD=AE=E8=AF=A2=20oneclick?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重启后无线调试未开时后台每 10s adb connect,上线自动跑 oneclick。 Co-authored-by: Cursor --- sdk/scripts/auto_recover_adb_oneclick.sh | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 sdk/scripts/auto_recover_adb_oneclick.sh diff --git a/sdk/scripts/auto_recover_adb_oneclick.sh b/sdk/scripts/auto_recover_adb_oneclick.sh new file mode 100755 index 0000000000..158302492b --- /dev/null +++ b/sdk/scripts/auto_recover_adb_oneclick.sh @@ -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