测试基础 【ADB 命令攻略】多设备操控到端口优化

wechatbird · April 11, 2025 · 327 hits

ADB 命令使用指南 | 多设备操作详解

📌 命令语法基础
ADB 命令的标准格式:

adb [-d|-e|-s <设备序列号>] <具体指令>

👉 单设备场景:直接使用 adb <指令>
👉 多设备场景:必须通过参数指定目标设备!

🔍 指定设备的 3 种方式

参数 含义
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s <serialNumber> 指定相应 serialNumber 号的设备/模拟器为命令目标

精准指定特定设备 (最常用)
📱 如何查看设备序列号?

执行命令: adb devices

输出格式:

固定格式:

[serialNumber] [state]

输出示例:

cf264123    device      # USB连接的手机
demo-5555   device      # demo示例
192.168.1.1:5555 device    # 无线设备/第三方模拟器

无设备连接:

List of devices attached

💡 实战案例演示
场景 1️⃣:获取指定手机的屏幕分辨率

adb -s cf264123 shell wm size

场景 2️⃣:无线设备安装 APK

adb -s 192.168.1.1:5555 install test.apk

⚡ 注意事项

带 IP 地址的序列号(如 192.168.1.1:5555)通常表示:

通过 adb connect 连接的无线设备

Genymotion 等第三方模拟器

多设备操作忘记指定参数?ADB 会随机选择设备执行!

🔧 ADB 服务管理 | 版本查询技巧

▶️ 启动 ADB 服务

adb start-server

📌 小贴士:
99% 的场景无需手动执行!运行任意 adb 命令时会自动唤醒服务
适用场景:极少数情况出现 adb: no devices/emulators found 报错时,可尝试强制重启服务

adb-server端口:5037

🛑 终止 ADB 服务
adb kill-server
💡 典型使用场景:

设备列表长时间未刷新(如切换 USB 连接/Wi-Fi 调试模式)

ADB 进程卡死无响应

需要彻底重置 ADB 连接状态

❗ 操作后影响:

所有已连接的设备会断开

再次执行 adb 命令会自动重启服务

📦 查看 ADB 版本

adb version

🔍 示例输出解析:

Android Debug Bridge version 1.0.41 #主版本号
Version 35.0.2-12147458 # 构建版本号(用于定位特定版本)
Installed as /opt/homebrew/bin/adb #安装包位置
Running on Darwin 24.2.0 (arm64) #系统架构

🔌 自定义 ADB 服务端口 | 解决端口冲突必备技巧
🎯 为什么要修改默认端口?
ADB 默认使用 5037 端口进行通信,但在以下场景需要自定义端口:
1️⃣ 端口被其他进程占用导致 ADB 报错
2️⃣ 多用户开发环境隔离(如团队协作时)
3️⃣️ 企业网络策略限制特定端口

📡 指定端口启动服务

adb -P <新端口号> start-server

实操案例:改用 5038 端口

先停止现有服务

adb kill-server  

指定新端口启动

adb -P 5038 start-server

✅ 预期输出:

tcp6 0 0 :::5038 :::* LISTEN

⚠️ 关键注意事项

必须与 start-server 联用:仅启动命令有效,其他命令的-P 参数无效

Root 权限需求:在 Linux/Mac 系统修改 1024 以下端口需加 sudo

全命令一致性:修改端口后,所有后续 adb 命令需带-P 参数

adb -P 5038 devices

💡 故障排查指南
场景:执行命令报错 cannot bind to port
解决方案:
查找占用端口的进程:

lsof -i :5037

2.终止冲突进程或更换更高位的端口(如 6000 以上)

注:
1、纯属个人收集资料整理后分享
2、不是原创资料,网上可以搜索

No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up