一、ADB 即 Android Debug Birdge (Android調試橋)
ADB 分為三部分:PC上的adb client 和 adb server 以及Android設備上的adb daemon(adbd)
PC 和 Android 設別是一個多對多的關系:一個PC 可以連接多個Android設備;一個Android設備也可以連接多個PC。
二、基本概念:adb client、adb server、adbd (Daemon)進程
ADB client:Client本質上就是Shell,用來發送命令給Server。發送命令時,首先檢測PC上有沒有啟動Server,如果沒有Server,則自動啟動一個Server,然后將命令發送到Server,并不關心命令發送過去以后會怎樣。
ADB server:運行在PC上的后臺程序,目的是檢測USB接口何時連接或者移除設備。
ADB Server維護著一個“已連接的設備的鏈表”,并且為每一個設備標記了一個狀態:offline,bootloader,recovery或者online。
Server一直在做一些循環和等待,以協調client和Server還有daemon之間的通信。offline說明Server發現了一個設備,但是不能成功連接到Daemon。
ADB Daemon:運行在Android 設備上的一個進程,作用是連接到adb server(通過usb或tcp-ip)。并且為client提供一些服務。
三者之間的通信涉及到兩條通訊通道:
Client<-->Server<--->Daemon
Client發送的指令也分為三種:
- 不需要經過Server處理就能成功的,如adb version,adb help。
- 需要和Server通訊,但不需要和Demon通訊的指令,如adb devices.
- 需要Daemon進行處理的命令。
ADB Server對本地的TCP5037端口進行監聽,等待ADB Client的命令嘗試連接5037端口。
ADB Client每個命令都包含兩個部分,前一部分包含固定四個字節,以十六進制的方式指明指令的長度;后一部分才是真正的指令內容;發送命令的接口為writex,最終調用_fh_socket_write,通過send發送出去,因此這兩部分至少需要發送兩個tcp包。
三、無線連接Android設備
開啟Wifi連接adb 方式一:
adb shell
setprop service.adb.tcp.port 5555
stop adb
start adb
exit
adb connect 192.168.0.181:5555
開啟Wifi連接adb 方式二:
adb tcpip 5555
adb kill-server
adb connect 192.168.0.148(手機的IP地址)
USB調試模式與WIFI調試模式切換
adb usb 切換到USB模式
adb tcpip 5555 切換到WIFI無線調試
WIFI 無線調試下 連接與斷開連接的指令
adb connect 192.168.0.181 連接設備
adb disconnect 192.168.0.181 斷開設備連接
四、參考鏈接:
https://blog.csdn.net/xing1716263268/article/details/8998192
https://blog.csdn.net/ffmpeg4976/article/details/47911817