Android 深入研究adb(一)

2021-06-28 00:03:10 字數 2243 閱讀 2882

android 除錯橋(adb)是多種用途的工具,該工具可以幫助你你管理裝置或模擬器 的狀態。

可以通過下列幾種方法加入adb:

* 在裝置上執行shell命令

* 通過埠**來管理模擬器或裝置

* 從模擬器或裝置上拷貝來或拷貝走檔案

下面對adb進行了介紹並描述了常見的使用.

contents

概要發出adb命令

查詢模擬器/裝置例項

給特定的模擬器/裝置例項傳送命令

安裝軟體

**埠

從模擬器/裝置中拷入或拷出檔案

adb命令列表

啟動shell命令

通過遠端shell端執行sqllite3連線資料庫

ui/軟體 試驗程式 monkey

其它的shell命令

啟用logcat日誌

使用logcat命令

過濾日誌輸出

控制日誌輸出格式

檢視可用日誌緩衝區

檢視stdout 和stderr

logcat命令列表

停止adb服務

概要android 除錯系統是乙個面對客戶服務系統,包括三個組成部分:

* 乙個在你用於開發程式的電腦上執行的客戶端。你可以通過shell端使用adb命令啟動客戶端。 其他android工具比如說adt外掛程式和ddms同樣可以產生adb客戶端.

* 在你用於發的機器上作為後台程序執行的伺服器。該伺服器負責管理客戶端與執行於模擬器或裝置上的adb守護程式(daemon)之間的通訊。

* 乙個以後臺程序的形式執行於模擬器或裝置上的守護程式(daemon)。

當你啟動乙個adb客戶端,客戶端首先確認是否已有乙個adb服務程序在執行。如果沒有,則啟動服務程序。當伺服器執行, adb伺服器就會繫結本地的tcp埠5037並監聽adb客戶端發來的命令,—所有的adb客戶端都是用埠 5037與adb伺服器對話的.

接著伺服器將所有執行中的模擬器或裝置例項建立連線。它通過掃瞄所有5555到5585範圍內的奇數埠來定位所有的模擬器或裝置。一旦伺服器找到 了adb守護程式,它將建立乙個到該埠的連線。請注意任何模擬器或裝置例項會取得兩個連續的埠——乙個偶數埠用來相應控制台的連線,和乙個奇數埠 用來響應adb連線。比如說:

模擬器1,控制台:埠5554

模擬器1,adb埠5555

控制台:埠 5556

adb埠5557...

如上所示,模擬器例項通過5555埠連線adb,就如同使用5554埠連線控制台一樣.

一旦伺服器與所有模擬器例項建立連線,就可以使用adb命令控制和訪問該例項。因為伺服器管理模擬器/裝置例項的連線,和控制處理從來自多個adb客戶端來的命令,你可以通過任何客戶端(或指令碼)來控制任何模擬器或裝置例項.

以下的部分描述通過命令使用adb和管理模擬器/裝置的狀態。要注意的是如果你用,裝有adt外掛程式的eclipse開發android程式,你就不 需要通過命令列使用adb。adt外掛程式已經透明的把adb整合到eclipse中了,當然,如果必要的話你也可以仍然直接使用adb,比如說除錯.

發出adb命令

發出android命令: 你可以在你的開發機上的命令列或指令碼上發布android命令,使用方法:

adb [-d|-e|-s < serialnumber>] < command>

當你發出乙個命令,系統啟用android客戶端。客戶端並不與模擬器例項相關,所以如果雙伺服器/裝置是執行中的,你需要用 -d 選項去為應被控制的命令確定目標例項。關於使用這個選項的更多資訊,可以檢視模擬器/裝置例項術語控制命令 .

查詢模擬器/裝置例項

在發布adb命令之前,有必要知道什麼樣的模擬器/裝置例項與adb伺服器是相連的。可以通過使用devices 命令來得到一系列相關聯的模擬器/裝置:

adb devices

•作為回應,adb為每個例項都制定了相應的狀態資訊:

* •序列號——由adb建立的乙個字串,這個字串通過自己的控制埠< type>-< consoleport> 唯一地識別乙個模擬器/裝置例項。下面是乙個序列號的例子: emulator-5554

例項的連線狀態有三種狀態:

o offline — 此例項沒有與adb相連線或者無法響應.

o device — 此例項正與adb伺服器連線。注意這個狀態並不能百分之百地表示在執行和操作android系統,因此這個例項是當系統正在執行的時候與adb連線的。然而,在系統啟動之後,就是乙個模擬器/裝置狀態的正常執行狀態了.

每個例項的輸出都有如下固定的格式:

[serialnumber] [state]

Android 深入研究adb(五)

檢視stdout 和stderr 在預設狀態下,android系統有stdout 和 stderr system.out 和system.err 輸出到 dev null 在執行dalvik vm的程序中,有乙個系統可以備份日誌檔案。在這種情況下,系統會用stdout 和stderr 和優先順序 i...

Android 深入研究adb(六)

查詢模擬器 裝置例項 在發布adb命令之前,有必要知道什麼樣的模擬器 裝置例項與adb伺服器是相連的。可以通過使用devices 命令來得到一系列相關聯的模擬器 裝置 adb devices 作為回應,adb為每個例項都制定了相應的狀態資訊 序列號 由adb建立的乙個字串,這個字串通過自己的控制埠 ...

Android 深入研究adb(九)

當啟動了logcat 你可以通過 v 選項來指定輸出格式 adb logcat v format 下面是用 thread 來產生的日誌格式 adb logcat v thread 需要注意的是你只能 v 選項來規定輸出格式 option.檢視可用日誌緩衝區 android日誌系統有迴圈緩衝區,並不是...