83 lines
2.8 KiB
Bash
Executable File
83 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# ADB 连接稳定化:宿主机 adb server + USB/无线扫描 + u2/ATX + Agent/WS 自检
|
||
set -euo pipefail
|
||
SDK_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||
SDK_PORT="${SDK_PORT:-8899}"
|
||
LAN_ENV="${SDK_ROOT}/config/lan.env"
|
||
if [[ -f "${LAN_ENV}" ]]; then
|
||
# shellcheck source=/dev/null
|
||
source "${LAN_ENV}" || true
|
||
fi
|
||
WIRELESS_IPS="${WIRELESS_IPS:-192.168.110.80 192.168.1.12 192.168.0.12}"
|
||
export ANDROID_ADB_SERVER_PORT="${ANDROID_ADB_SERVER_PORT:-5038}"
|
||
LOG="${TMPDIR:-/tmp}/adb-stabilize-$(date +%Y%m%d_%H%M%S).log"
|
||
|
||
adb() {
|
||
command adb -P "${ANDROID_ADB_SERVER_PORT}" "$@"
|
||
}
|
||
|
||
exec > >(tee -a "$LOG") 2>&1
|
||
echo "=== ADB 连接稳定化 $(date) ==="
|
||
echo "日志: $LOG"
|
||
echo "ADB port: ${ANDROID_ADB_SERVER_PORT}"
|
||
|
||
bash "${SDK_ROOT}/scripts/adb_host_server_listen_all.sh" --background || true
|
||
sleep 1
|
||
|
||
echo "--- 清理离线无线连接 ---"
|
||
adb disconnect >/dev/null 2>&1 || true
|
||
adb kill-server >/dev/null 2>&1 || true
|
||
adb start-server >/dev/null 2>&1 || true
|
||
sleep 2
|
||
|
||
echo "--- USB / 已配对设备 ---"
|
||
adb devices -l || true
|
||
|
||
# 尝试无线(短超时,避免 hang)
|
||
for ip in $WIRELESS_IPS; do
|
||
[[ "${ip}" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] || continue
|
||
( adb connect "${ip}:5555" & pid=$!; sleep 3; kill $pid 2>/dev/null || true ) || true
|
||
done
|
||
adb devices -l || true
|
||
|
||
SERIAL=""
|
||
while read -r s st _rest; do
|
||
[[ -z "${s}" || -z "${st}" ]] && continue
|
||
if [[ "$st" == "device" ]]; then
|
||
SERIAL="$s"
|
||
break
|
||
fi
|
||
if [[ "$st" == "unauthorized" ]]; then
|
||
echo "⚠️ 设备 ${s} 未授权:请在手机上点「允许 USB 调试」并选「文件传输/MTP」"
|
||
fi
|
||
done < <(adb devices | awk 'NR>1 && NF>=2 {print $1, $2}')
|
||
|
||
if [[ -z "$SERIAL" ]]; then
|
||
echo "❌ 当前无已授权 ADB 设备"
|
||
echo " 1) 开发者选项 → USB 调试 开启"
|
||
echo " 2) USB 模式 → 文件传输"
|
||
echo " 3) 重新插拔数据线,看手机弹窗点「允许」"
|
||
echo " 4) 再运行: bash sdk/scripts/adb_connection_stabilize.sh"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ 已授权设备: $SERIAL"
|
||
|
||
if command -v python3 >/dev/null 2>&1; then
|
||
echo "--- uiautomator2 init (ATX 9008) ---"
|
||
python3 -m uiautomator2 init --serial "$SERIAL" 2>/dev/null || \
|
||
python3 -m uiautomator2 init -s "$SERIAL" 2>/dev/null || \
|
||
echo "⚠️ u2 init 跳过(可手动: python3 -m uiautomator2 init --serial $SERIAL)"
|
||
fi
|
||
|
||
echo "--- 启动 Frida 主控 + Agent ---"
|
||
bash "${SDK_ROOT}/scripts/frida_workphone_oneclick.sh" -d "$SERIAL" || true
|
||
|
||
echo "--- 连接状态 ---"
|
||
curl -s "http://127.0.0.1:${SDK_PORT}/api/v3/connection/status" | python3 -m json.tool 2>/dev/null || true
|
||
curl -s "http://127.0.0.1:${SDK_PORT}/api/v3/hook/probe/${SERIAL}" | python3 -m json.tool 2>/dev/null | head -20 || true
|
||
|
||
echo ""
|
||
echo "管理端: http://127.0.0.1:${SDK_PORT}/hub"
|
||
echo "设备控制台: http://127.0.0.1:${SDK_PORT}/static/index.html"
|