37 lines
1.3 KiB
Bash
Executable File
37 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 让 Docker 内的 workphone-sdk 能通过「网络 ADB」发现手机(解决 Hub 上 ADB=0)
|
||
#
|
||
# 前提:
|
||
# 1) 手机与 Mac 在同一 WiFi,且已获取 IP(wlan0 有 inet)
|
||
# 2) USB 仍插着,先在宿主机执行本脚本
|
||
# 3) 已 docker compose build && up,且 compose 已挂载 ~/.android 到容器 /root/.android
|
||
#
|
||
# 用法:bash sdk/docs/docker_adb_tcpip.sh [设备序列号]
|
||
set -euo pipefail
|
||
SERIAL="${1:-$(adb devices | awk '/\tdevice$/{print $1; exit}')}"
|
||
CTR="${DOCKER_CONTAINER:-workphone-sdk}"
|
||
if [[ -z "$SERIAL" ]]; then
|
||
echo "未检测到 USB 已授权设备"
|
||
exit 1
|
||
fi
|
||
|
||
IP="$(adb -s "$SERIAL" shell "ifconfig wlan0 2>/dev/null | awk '/inet addr/{print \$2}' | cut -d: -f2" | tr -d '\r')"
|
||
if [[ -z "$IP" ]]; then
|
||
IP="$(adb -s "$SERIAL" shell "ip -f inet addr show wlan0 2>/dev/null | awk '/inet /{print \$2}' | cut -d/ -f1" | tr -d '\r')"
|
||
fi
|
||
if [[ -z "$IP" ]]; then
|
||
echo "手机 wlan0 无 IP:请先连接 WiFi(与 Mac 同网段),再重试。"
|
||
exit 1
|
||
fi
|
||
|
||
echo ">>> USB 序列号: $SERIAL WiFi IP: $IP"
|
||
adb -s "$SERIAL" tcpip 5555
|
||
sleep 1
|
||
|
||
docker exec "$CTR" adb kill-server 2>/dev/null || true
|
||
docker exec "$CTR" adb connect "${IP}:5555"
|
||
docker exec "$CTR" adb devices -l
|
||
|
||
echo ""
|
||
echo ">>> 请刷新 Hub;若仍为空,执行: curl -s http://127.0.0.1:8899/api/v3/adb/scan"
|