adb(Android Debug Bridge)(一)

Android Debug Bridge(adb)是一個讓你跟模擬器或者android設備通信的多功能命令。它是一個包含三個組件的client-server程序:

1、運行在你開發機器上的adb client,你能從shell中通過adb命令調用一個adb client,另外ADT插件和DDMS都是使用瞭adb client功能。

2、運行在你開發機器上的一個adb server,該adb server作用在於維護adb client和adb daemon之間的通信。

3、運行在模擬器或者android設備後臺的adb daemon。

 

adb tool在<sdk>/platform-tools/目錄下。

 

當你啟動一個adb client的時候,adb client會去檢查開發機器上是否已經運行瞭adb server進程,如果沒有,它會去啟動adb server。當adb server啟動後,adb server綁定本地 TCP5037端口,然後監聽從adb client發過來的adb命令。所有的adb client都是通過5037端口跟adb server通信。

 

adb server要跟所有運行在開發機器上的模擬器或者android設備建立連接。它通過掃描5555-5585之間的所有奇數端口查找模擬器或者android設備。adb server掃描到每個adb daemon都會建立跟其的相關端口的綁定。既然每個模擬器或者android設備都獲取到一對有序的端口(一個偶數console連接端口和一個奇數adb連接端口)如下:Emulator1, console:5554 Emulator1, adb:5555;Emulator2, console:5556 Emulator2, adb:5557;依此類推。同樣的,如果一個模擬器連接adb的商品為5555,那麼連接console的端口就是5554。

當adb server跟模擬器或者android設備連接成功後,你就可以通過adb命令(或者腳本)去訪問該模擬器或android設備。

註意:連接一個android4.2.2以上的android設備的時候,系統會通過一個對話框提示詢問是否接受一個RSA密鑰允許通過開發機器的調試。這種安全機制保護用戶設備,讓adb命令不能執行。除非你能解鎖該android設備並確認詢問對話框,當然,這在adb1.0.31以上的版本(SDK Platform-tools16.0.1以上)是可以實現的。

 

你可以在開發機器上的命令行或者腳本執行adb命令。如:

adb [-d|-e|-s <serialNumber>] <command>如果你的開發機器上隻運行瞭一個模擬器或者android設備,那麼adb命令將默認發送到該模擬器或者android設備上執行。如果運行瞭多個模擬器或者android設備,那麼你要使用-d,-e或者-s參數去指定執行adb命令的模擬器或者android設備。以下是相關參數或命令的用法:

-d :將adb命令指向唯一連接到開發機器上的android設備,如果開發機器上連接瞭多個android設備將返回提示錯誤。

-e :將adb命令指向唯一的模擬器。

-s <serialNumber>:將adb命令指向具體的android設備(如:emulator-5556)

devices :查詢所有連接到開發機器上的android設備。

help :幫助命令。

version : 版本查詢。

logcat [option] [filter-specs] :打印log信息。

jdwp :有效的JDWP進程列表。

install <path-to-apk> : 安裝apk到指定的設備。

pull <remote> <local> :復制文件到開發機器上的指定位置。

push <local> <remote> :復制文件到指定的android設備。

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *