Android 深入研究adb(六)

2021-06-28 00:03:10 字數 2537 閱讀 9372

查詢模擬器/裝置例項

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

adb devices

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

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

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

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

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

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

[serialnumber] [state]

下面是乙個展示devices 命令和輸出的例子 :

$ adb deviceslist of devices attached emulator-5554 deviceemulator-5556 deviceemulator-5558 device

如果當前沒有模擬器/裝置執行,adb則返回 no device .

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

如果有多個模擬器/裝置例項在執行,在發布adb命令時需要指定乙個目標例項。 這樣做,請使用-s 選項的命令。在使用的-s 選項是

adb -s < serialnumber> < command>

如上所示,給乙個命令指定了目標例項,這個目標例項使用由adb分配的序列號。你可以使用 devices 命令來獲得執行著的模擬器/裝置例項的序列號

示例如下:

adb -s emulator-5556 install helloworld.apk

注意這點,如果沒有指定乙個目標模擬器/裝置例項就執行 -s 這個命令的話,adb會產生乙個錯誤.

安裝軟體

你可以使用adb從你的開發電腦上覆制乙個應用程式,並且將其安裝在乙個模擬器/裝置例項。像這樣做,使用install 命令。這個install 命令要求你必須指定你所要安裝的.apk檔案的路徑:

adb install < path_to_apk>

為了獲取更多的關於怎樣建立乙個可以安裝在模擬器/裝置例項上的.apk檔案的資訊,可參照android asset packaging tool(aapt). 

要注意的是,如果你正在使用eclipse ide並且已經安裝過adt外掛程式,那麼就不需要直接使用adb(或者aapt)去安裝模擬器/裝置上的應用程式。否則,adt外掛程式代你全權處理應用程式的打包和安裝.

**埠

可以使用 forward 命令進行任意埠的**——乙個模擬器/裝置例項的某一特定主機埠向另一不同埠的**請求。下面演示了如何建立從主機埠6100到模擬器/裝置埠7100的**。

adb forward tcp:6100 tcp:7100

同樣地,可以使用adb來建立命名為抽象的unix域套介面,上述過程如下所示:

adb forward tcp:6100 local:logd

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

可以使用adbpull ,push 命令將檔案複製到乙個模擬器/裝置例項的資料檔案或是從資料檔案中複製。install 命令只將乙個.apk檔案複製到乙個特定的位置,與其不同的是,pull 和 push 命令可令你複製任意的目錄和檔案到乙個模擬器/裝置例項的任何位置。

從模擬器或者裝置中複製檔案或目錄,使用(如下命):

adb pull < remote> < local>

將檔案或目錄複製到模擬器或者裝置,使用(如下命令)

adb push < local> < remote>

在這些命令中, < local> 和< remote> 分別指通向自己的發展機(本地)和模擬器/裝置例項(遠端)上的目標檔案/目錄的路徑

下面是乙個例子:

adb push foo.txt /sdcard/foo.txt

adb命令列表

下列**列出了adb支援的所有命令,並對它們的意義和使用方法做了說明.

category command description comments

options -d 僅僅通過usb介面來管理abd. 如果不只是用usb介面來管理則返回錯誤.

-e 僅僅通過模擬器例項來管理adb. 如果不是僅僅通過模擬器例項管理則返回錯誤.

-s < serialnumber> 通過模擬器/裝置的允許的命令號碼來傳送命令來管理adb (比如: "emulator-5556"). 如果沒有指定號碼,則會報錯.

general devices 檢視所有連線模擬器/裝置的設施的清單. 檢視 querying for emulator/device instances獲取更多相關資訊.

help 檢視adb所支援的所有命令.

version 檢視adb的版本序列號.

debug logcat [< option>] [< filter-specs>] 將日誌資料輸出到螢幕上.

Android 深入研究adb(一)

android 除錯橋 adb 是多種用途的工具,該工具可以幫助你你管理裝置或模擬器 的狀態。可以通過下列幾種方法加入adb 在裝置上執行shell命令 通過埠 來管理模擬器或裝置 從模擬器或裝置上拷貝來或拷貝走檔案 下面對adb進行了介紹並描述了常見的使用.contents 概要發出adb命令 查...

Android 深入研究adb(五)

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

Android 深入研究adb(九)

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