一博敬、ADB 即 Android Debug Birdge (Android調(diào)試橋)
ADB 分為三部分:PC上的adb client 和 adb server 以及Android設(shè)備上的adb daemon(adbd)
PC 和 Android 設(shè)別是一個(gè)多對(duì)多的關(guān)系:一個(gè)PC 可以連接多個(gè)Android設(shè)備;一個(gè)Android設(shè)備也可以連接多個(gè)PC独旷。
二、基本概念:adb client困后、adb server、adbd (Daemon)進(jìn)程
ADB client:Client本質(zhì)上就是Shell,用來發(fā)送命令給Server絮缅。發(fā)送命令時(shí)怎燥,首先檢測PC上有沒有啟動(dòng)Server,如果沒有Server堤魁,則自動(dòng)啟動(dòng)一個(gè)Server喂链,然后將命令發(fā)送到Server,并不關(guān)心命令發(fā)送過去以后會(huì)怎樣妥泉。
ADB server:運(yùn)行在PC上的后臺(tái)程序椭微,目的是檢測USB接口何時(shí)連接或者移除設(shè)備。
ADB Server維護(hù)著一個(gè)“已連接的設(shè)備的鏈表”盲链,并且為每一個(gè)設(shè)備標(biāo)記了一個(gè)狀態(tài):offline蝇率,bootloader,recovery或者online刽沾。
Server一直在做一些循環(huán)和等待本慕,以協(xié)調(diào)client和Server還有daemon之間的通信。offline說明Server發(fā)現(xiàn)了一個(gè)設(shè)備侧漓,但是不能成功連接到Daemon锅尘。
ADB Daemon:運(yùn)行在Android 設(shè)備上的一個(gè)進(jìn)程,作用是連接到adb server(通過usb或tcp-ip)火架。并且為client提供一些服務(wù)鉴象。
三者之間的通信涉及到兩條通訊通道:
Client<-->Server<--->Daemon
Client發(fā)送的指令也分為三種:
- 不需要經(jīng)過Server處理就能成功的,如adb version,adb help何鸡。
- 需要和Server通訊纺弊,但不需要和Demon通訊的指令,如adb devices.
- 需要Daemon進(jìn)行處理的命令骡男。
ADB Server對(duì)本地的TCP5037端口進(jìn)行監(jiān)聽淆游,等待ADB Client的命令嘗試連接5037端口。
ADB Client每個(gè)命令都包含兩個(gè)部分,前一部分包含固定四個(gè)字節(jié)犹菱,以十六進(jìn)制的方式指明指令的長度拾稳;后一部分才是真正的指令內(nèi)容;發(fā)送命令的接口為writex腊脱,最終調(diào)用_fh_socket_write访得,通過send發(fā)送出去,因此這兩部分至少需要發(fā)送兩個(gè)tcp包陕凹。
三悍抑、無線連接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