用途:梳理 ADB 的三部分拓扑——客户端 CLI、监听 TCP 5037 的主机端服务器、设备端守护进程 adbd,避免把“行为异常”误判到错误的一层。
主要能力:解释首次执行 adb 命令时出现“* daemon not running; starting now at tcp:5037”属信息提示而非错误;区分 adb start-server 的幂等性、adb kill-server、adb reconnect / reconnect device / reconnect offline 的各自作用;通过 adb --version 与 which -a adb 确认实际二进制路径与线协议版本是否一致;识别 Android Studio 自带 platform-tools 与系统/Homebrew 安装并存导致的版本错配与服务器反复互杀;排查 5037 端口占用;使用 ANDROID_ADB_SERVER_PORT 或 -P PORT 启动第二个服务器;了解 ADB_TRACE、ADB_VENDOR_KEYS、ANDROID_SERIAL、ADB_LIBUSB、ADB_BURST_MODE 等环境变量的用途;查找服务器日志(macOS/Linux 为 $TMPDIR/adb.$UID.log,Windows 为 %TEMP%\adb.log)。
必要用法:卡住的传输先尝试 adb reconnect offline,无效再 adb kill-server && adb start-server && adb devices。定位端口占用可用 lsof -nP -iTCP:5037 -sTCP:LISTEN。建议 export PATH="$ANDROID_HOME/platform-tools:$PATH" 让 CLI 与 Studio 使用同一二进制。CI 可设置 ADB_VENDOR_KEYS=/etc/adb/ci-key、ANDROID_ADB_SERVER_PORT=5038,再 adb start-server。
限制与注意:不得把删除 ~/.android/adbkey* 当作修复未授权或离线设备的手段,那会轮换主机密钥并使所有已授权设备重新弹窗;同一 5037 端口不可同时运行两个 adb 服务器;ADB v36.0.0 的 libusb 后端重写、v36.0.2 回退等版本差异需按实际 platform-tools 版本判断。该技能不负责单设备 USB 授权、无线 ADB 或具体仪器测试执行,相关流程见其同级技能。