ADB——连接手机的三种方式

时间:2020-12-07 14:43:09

有USB连接

  1. 硬件状态正常。

    包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好。

  2. Android 设备的开发者选项和 USB 调试模式已开启。

    可以到「设置」-「开发者选项」-「Android 调试」查看。

    如果在设置里找不到开发者选项,那需要通过一个彩蛋来让它显示出来:在「设置」-「关于手机」连续点击「版本号」7 次。

  3. 设备驱动状态正常。

    这一点在 Linux 和 Mac OS X 下基本不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动状态已经好了。否则可以下载一个手机助手类程序来安装驱动先。

以上3点都确保OK后,执行命令

adb devices # 看到xxxxxx device即表示连接成功

无线连接 —— 通过IP

操作步骤:

  1. 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。

  2. 将设备与电脑通过 USB 线连接,可通过命令 adb devices 查看是否连接成功

  3. 让设备在 5555 端口监听 TCP/IP 连接:

    adb tcpip 5555
  4. 断开 USB 连接。

  5. 找到设备的 IP 地址。

    一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用命令查看

    adb shell ifconfig | grep Mask
    
    # 或
    adb shell ifconfig wlan0
    '''
    下面的inet addr就是IP地址
    wlan0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
    inet addr:172.30.96.xx Bcast:172.30.111.xx Mask:255.255.240.xx
    inet6 addr: xx::xx:xx:xx:xx/xx Scope: Link
    UP BROADCAST RUNNING MULTICAST MTU:xxx Metric:1
    RX packets:xxx errors:0 dropped:xxx overruns:0 frame:0
    TX packets:xxx errors:xx dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:xxx
    RX bytes:xxx TX bytes:xxx
    '''
  6. 通过 IP 地址连接设备。

    adb connect <device-ip-address> # <device-ip-address> 就是上一步中找到的设备 IP 地址。
  7. 确认连接状态。

    adb devices # <device-ip-address>:5555 device说明连接成功。

  如果连接不了,请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行第6步;如果还是不行的话,通过 adb kill-server 重新启动 adb 然后从头再来一次试试。

断开无线连接

adb disconnect <device-ip-address>

无线连接 —— 需要root

  利用IP地址进行的无线连接是官方文档里介绍的方法,需要借助于 USB 数据线来实现无线连接。root 账户可以完成真正意义上的无线连接

  1. 在 Android 设备上安装一个终端模拟器。

    已经安装过的设备可以跳过此步。终端模拟器下载地址是:Terminal Emulator for Android Downloads

  2. 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。

  3. 打开 Android 设备上的终端模拟器,在里面依次运行命令:

    su
    setprop service.adb.tcp.port 5555
  4. 找到 Android 设备的 IP 地址。

    同上

  5. 在电脑上通过 adb 和 IP 地址连接 Android 设备。

    adb connect <device-ip-address> # 看到 connected to <device-ip-address>:5555 这样的输出则表示连接成功

有的设备,比如小米 5S + MIUI 8.0 + Android 6.0.1 MXB48T,可能在第 5 步之前需要重启 adbd 服务,在设备的终端模拟器上运行:

restart adbd
# 如果 restart 无效,尝试以下命令:
stop adbd
start adbd

查询已连接的设备

adb devices
'''
输出格式 [serialNumber] [state]
输出示例
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
'''

输出格式中的state有三种可能:

  • offline —— 表示设备未连接成功或无响应。

  • device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。

  • no device —— 没有设备/模拟器连接。

以上输出显示当前已经连接了三台设备/模拟器,cf264b8femulator-555410.129.164.6:5555 是它们各自的 SN。从 emulator-5554 这个名字可以看出它是一个 Android 模拟器,而 10.129.164.6:5555 这种形为 <IP>:<Port> 的 serialNumber 一般是无线连接的设备或 Genymotion 等第三方 Android 模拟器。