3. 管理多个设备连接

任务说明

当电脑通过USB或无线方式同时连接多台Android设备时,adb命令默认无法确定操作哪一台设备。本案例将演示如何查看已连接设备列表,并使用adb -s参数将命令定向到指定设备执行,避免操作冲突。

环境准备

  • 已安装ADB工具(Android SDK Platform-Tools),并已加入系统PATH
  • 至少两台Android设备已开启USB调试,并通过USB线连接到电脑
  • 在终端执行adb devices确认设备均能被识别

核心命令与代码

以下命令序列演示了多设备管理的关键操作。在Windows CMD、PowerShell或macOS/Linux终端中均可直接执行。

# 1. 查看当前连接的所有设备及其序列号
adb devices -l

# 2. 获取设备序列号列表(用于脚本自动化)
adb devices | grep "device$" | awk '{print $1}'

# 3. 使用 -s 参数向指定设备发送命令(以序列号 emulator-5554 为例)
adb -s emulator-5554 shell getprop ro.product.model
adb -s emulator-5554 install app.apk

# 4. 使用 -s 参数向另一台设备执行不同命令
adb -s 0123456789ABCDEF shell getprop ro.product.model

# 5. 多设备同时执行同一命令(通过循环)
for device in $(adb devices | grep "device$" | awk '{print $1}'); do
    echo "=== 设备: $device ==="
    adb -s $device shell getprop ro.build.version.release
done

关键说明

  • adb devices输出中,第一列为设备序列号(Serial Number),第二列为状态。device表示正常连接,offline表示离线,unauthorized表示未授权(需在设备上确认调试授权)。
  • -s参数必须紧跟设备序列号,且位于其他adb子命令之前。序列号可通过adb devices获取,每台设备唯一。
  • 若不使用-s指定设备,adb会报错提示“more than one device/emulator”,此时命令不会执行。
  • 无线连接的设备(通过adb pair配对后)同样会出现在设备列表中,序列号为IP:端口格式,使用方法与USB设备完全一致。

验证方法

执行以下步骤确认操作成功:

  1. 运行adb devices -l,确认输出中列出所有已连接设备,且状态均为device。
  2. 对每台设备分别执行adb -s <序列号> shell getprop ro.product.model,观察输出结果是否与各设备实际型号一致。
  3. 故意省略-s参数执行adb shell getprop ro.product.model,系统应提示多设备错误,证明-s参数的必要性。

通过条件:每台设备均能通过-s定向返回各自独立的型号信息,且不指定设备时命令被拒绝执行。