天天看點

ADB——連接配接手機的三種方式

有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 裝置上的終端模拟器,在裡面依次運作指令:
    su
    setprop service.adb.tcp.port 5555      
  3. 找到 Android 裝置的 IP 位址。

    同上

  4. 在電腦上通過 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 —— 沒有裝置/模拟器連接配接。

以上輸出顯示目前已經連接配接了三台裝置/模拟器,cf264b8f、emulator-5554 和 10.129.164.6:5555 是它們各自的 SN。從 emulator-5554 這個名字可以看出它是一個 Android 模拟器,而 10.129.164.6:5555 這種形為 <IP>:<Port> 的 serialNumber 一般是無線連接配接的裝置或 Genymotion 等第三方 Android 模拟器。