ADB 工作原理

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

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

PC 和 Android 設(shè)別是一個多對多的關(guān)系:一個PC 可以連接多個Android設(shè)備;一個Android設(shè)備也可以連接多個PC。

image

二、基本概念:adb client、adb server、adbd (Daemon)進(jìn)程

ADB client:Client本質(zhì)上就是Shell,用來發(fā)送命令給Server。發(fā)送命令時,首先檢測PC上有沒有啟動Server,如果沒有Server,則自動啟動一個Server,然后將命令發(fā)送到Server,并不關(guān)心命令發(fā)送過去以后會怎樣。

ADB server:運行在PC上的后臺程序,目的是檢測USB接口何時連接或者移除設(shè)備。
ADB Server維護(hù)著一個“已連接的設(shè)備的鏈表”,并且為每一個設(shè)備標(biāo)記了一個狀態(tài):offline,bootloader,recovery或者online。
Server一直在做一些循環(huán)和等待,以協(xié)調(diào)client和Server還有daemon之間的通信。offline說明Server發(fā)現(xiàn)了一個設(shè)備,但是不能成功連接到Daemon。

ADB Daemon:運行在Android 設(shè)備上的一個進(jìn)程,作用是連接到adb server(通過usb或tcp-ip)。并且為client提供一些服務(wù)。

image

三者之間的通信涉及到兩條通訊通道:
Client<-->Server<--->Daemon
Client發(fā)送的指令也分為三種:

  • 不需要經(jīng)過Server處理就能成功的,如adb version,adb help。
  • 需要和Server通訊,但不需要和Demon通訊的指令,如adb devices.
  • 需要Daemon進(jìn)行處理的命令。

ADB Server對本地的TCP5037端口進(jìn)行監(jiān)聽,等待ADB Client的命令嘗試連接5037端口。
ADB Client每個命令都包含兩個部分,前一部分包含固定四個字節(jié),以十六進(jìn)制的方式指明指令的長度;后一部分才是真正的指令內(nèi)容;發(fā)送命令的接口為writex,最終調(diào)用_fh_socket_write,通過send發(fā)送出去,因此這兩部分至少需要發(fā)送兩個tcp包。

image

三、無線連接Android設(shè)備

開啟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(手機(jī)的IP地址)

USB調(diào)試模式與WIFI調(diào)試模式切換

adb usb 切換到USB模式 
adb tcpip 5555 切換到WIFI無線調(diào)試

WIFI 無線調(diào)試下 連接與斷開連接的指令

adb connect 192.168.0.181 連接設(shè)備 
adb disconnect 192.168.0.181 斷開設(shè)備連接

四、參考鏈接:

https://blog.csdn.net/xing1716263268/article/details/8998192
https://blog.csdn.net/ffmpeg4976/article/details/47911817

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容