概述
Adb作為PC和Android設(shè)備交互與通信的工具
Android調(diào)試橋接,Android DebugBridge,它是一個(gè)CS架構(gòu)的命令行工具,作用就是PC通過adb來操作手機(jī)
Adb的組成
客戶端(client):所有命令都是PC發(fā)起,可以對Android應(yīng)用進(jìn)行安裝,卸載和調(diào)試(可以有多個(gè)窗口或程序發(fā)送命令)
服務(wù)端(server):管理客戶端到Android設(shè)備上adb后臺進(jìn)程的連接(不同客戶端發(fā)來的命令都由服務(wù)器負(fù)責(zé)和Android設(shè)備通信,他們之間的通信都是通過5037端口連接)
守護(hù)進(jìn)程:Android后臺運(yùn)行的進(jìn)程,負(fù)責(zé)接收命令(ADB服務(wù)器和守護(hù)進(jìn)程的通信是通過相鄰的兩個(gè)端口實(shí)現(xiàn)的,偶數(shù)端口(比如5554)負(fù)責(zé)處理命令行的通信,奇數(shù)端口(比如5555)是用來保持連接的,我們可以看到,adb服務(wù)器可以和多臺設(shè)備連接,每連接一個(gè),會分配兩個(gè)相鄰的端口出來,第一對是5554/5555,第二對就是5556/5557,相對應(yīng)的,我們adb連接多臺設(shè)備的時(shí)候,需要指定端口號或者設(shè)備名稱,服務(wù)器會找到對應(yīng)的設(shè)備,進(jìn)行通信)
Adb環(huán)境配置
下載SDK-------將tools和platform-tools兩個(gè)目錄配置到系統(tǒng)環(huán)境變量PATH中-----這樣就可以直接在命令行中使用adb命令進(jìn)行驗(yàn)證了
ADB命令
ADB基本命令格式
adb [-e | -d | -s<設(shè)備序列號>]<子命令>

文件傳輸和安裝命令

獲取信息命令

Log與重啟相關(guān)命令

Adb備份與恢復(fù)命令

這兩個(gè)命令可以實(shí)現(xiàn)數(shù)據(jù)的備份以及兩臺手機(jī)間的數(shù)據(jù)恢復(fù)等場景
如下圖的操作步驟可以將手機(jī)完全備份,備份的過程中可以進(jìn)行加密,這樣恢復(fù)的時(shí)候也需要密碼
Adb重定向端口命令
端口映射模型
將開發(fā)PC上的端口(1314)重定向到設(shè)備的端口(5200)上,這樣所有發(fā)往PC端口1314的數(shù)據(jù)都會被轉(zhuǎn)發(fā)到設(shè)備端口5200。
這個(gè)機(jī)制可以實(shí)現(xiàn)遠(yuǎn)程控制Android設(shè)備應(yīng)用。
如下圖
具體命令如下表格,具體應(yīng)用后續(xù)如果使用到再進(jìn)行補(bǔ)充

Adb無線連接與文件同步
Adb無線連接可以不使用USB來直接調(diào)試Android設(shè)備,這樣就是通過TCP/IP連接來操作設(shè)備,其實(shí)和操作模擬器的原理是一致的

同步文件的使用場景多為有多個(gè)so文件等需要同步,如果一個(gè)個(gè)刪除再push的話會耗費(fèi)很大的工作量,這時(shí)候使用同步命令
無線連接和同步的具體操作后續(xù)完善補(bǔ)充
Adb連接問題
Adb list of devices attached
Windows:
首先安裝驅(qū)動(dòng)程序,看設(shè)備管理器驅(qū)動(dòng)是否安裝成功,不能安裝驅(qū)動(dòng)可以借助隨便一個(gè)手機(jī)助手解決
然后打開手機(jī)開發(fā)者選項(xiàng)中的usb調(diào)試,并允許電腦始終對手機(jī)usb調(diào)試
連不了的時(shí)候首先用adb kill-server和adb start-server進(jìn)行重啟adb,或者用命令查看是哪個(gè)進(jìn)程占用了5037端口,然后進(jìn)行釋放
參考:http://blog.csdn.net/johnnycode/article/details/7678083
這時(shí)候如果這些準(zhǔn)備好的話應(yīng)該是可以正常連接的,我們的手機(jī)序號應(yīng)該已經(jīng)寫入了Windows下的.android隱藏目錄下的adb_usb.ini文件,但還是同樣的adb list of devices attached,這時(shí)候我們要考慮自動(dòng)連接寫入的adb設(shè)備號是否和我們終端使用的adb為同一個(gè)路徑,在合適的位置寫入正確的設(shè)備號即可,親測有效,記得加0x
參考:http://blog.csdn.net/join_12/article/details/45970717
Ubuntu:和Windows下的基本思路是一致的,具體的操作方法參考如下帖子:
http://blog.csdn.net/mr_driver/article/details/8449642
Adb devices offline
端口搶占,可以參考上述方法解決