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裝置。