ADB 工作原理

一、ADB 即 Android Debug Birdge (Android調試橋)

ADB 分為三部分:PC上的adb client 和 adb server 以及Android設備上的adb daemon(adbd)

PC 和 Android 設別是一個多對多的關系:一個PC 可以連接多個Android設備;一個Android設備也可以連接多個PC。

image

二、基本概念: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提供一些服務。

image

三者之間的通信涉及到兩條通訊通道:
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包。

image

三、無線連接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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。