adb的全稱為AndroidDebugBridge,譯為android調(diào)試橋,就是在android系統(tǒng)中起到調(diào)試橋的作用。通過adb我們可以在Eclipse中方便通過DDMS來調(diào)試Android程序,說白了就是debug工具。
adb是一個客戶端-服務(wù)器端程序,其中客戶端是你用來操作的電腦,服務(wù)器端是android設(shè)備。
下面詳細介紹下adb的使用方法
在您的設(shè)備上啟用adb調(diào)試
要在通過USB連接的設(shè)備上使用adb,您必須在設(shè)備系統(tǒng)設(shè)置中啟用USBdebugging(位于Developeroptions下)。
在運行Android4.2及更高版本的設(shè)備上,Developeroptions屏幕默認情況下處于隱藏狀態(tài)。如需將其顯示出來,請轉(zhuǎn)到Settings》Aboutphone并點按Buildnumber七次。返回上一屏幕,在底部可以找到Developeroptions。
在某些設(shè)備上,Developeroptions屏幕所在的位置或命名方式可能有所不同。
現(xiàn)在,您可以將設(shè)備與USB連接。可以從android_sdk/platform-tools/目錄執(zhí)行adbdevices來驗證設(shè)備是否連接。如果已連接,您將看到設(shè)備名稱以“設(shè)備”形式列示。
注:當(dāng)您連接運行Android4.2.2或更高版本的設(shè)備時,系統(tǒng)將顯示一個對話框,詢問您是否接受允許在這臺計算機上調(diào)試的RSA密鑰。這種安全機制可以保護用戶設(shè)備,因為它可以確保只有在您能夠解鎖設(shè)備并確認對話框的情況下才能執(zhí)行USB調(diào)試和其他ADB命令。
如需了解有關(guān)通過USB連接到設(shè)備的詳細信息,請參閱在硬件設(shè)備上運行應(yīng)用。
通過WLAN連接到設(shè)備
一般情況下,通過USB使用adb。不過,也可以按照下面的說明通過WLAN使用它。
將Android設(shè)備和adb主計算機連接到這兩者都可以訪問的常用WLAN網(wǎng)絡(luò)。請注意,并非所有訪問點均適用;您可能需要使用已正確配置防火墻的訪問點以支持adb的訪問點。
注:如果您嘗試連接到AndroidWear設(shè)備,則通過關(guān)閉與其連接的手機的藍牙強制將它連接到WLAN。
使用USB電纜將設(shè)備連接到主計算機。
設(shè)置目標設(shè)備以偵聽端口5555上的TCP/IP連接。
$adbtcpip5555
從目標設(shè)備斷開USB電纜連接。
查找Android設(shè)備的IP地址。例如,在Nexus設(shè)備上,您可以通過訪問Settings》Abouttablet(或Aboutphone)》Status》IPaddress查找IP地址。或者,在AndroidWear設(shè)備上,您可以通過訪問Settings》Wi-FiSettings》Advanced》IPaddress查找IP地址。
連接至設(shè)備,通過IP地址識別此設(shè)備。
$adbconnectdevice_ip_address
請確認您的主計算機已連接至目標設(shè)備:
$adbdevices
Listofdevicesattached
device_ip_address:5555device
現(xiàn)在,您可以開始操作了!
如果adb連接丟失:
請確保您的主機仍與您的Android設(shè)備連接到同一個WLAN網(wǎng)絡(luò)。
通過再次執(zhí)行adbconnect步驟重新連接。
如果無法連接,則重置adb主機:
adbkill-server
然后,從頭開始操作。
查詢設(shè)備
在發(fā)出adb命令之前,知道哪些模擬器/設(shè)備實例已連接到adb服務(wù)器會很有幫助。您可以使用devices命令生成已連接的模擬器/設(shè)備的列表:
adbdevices
在響應(yīng)時,adb針對每個實例輸出此狀態(tài)信息:
序列號—一個由adb創(chuàng)建的字符串,用于通過其控制臺端口號唯一標識模擬器/設(shè)備實例。序列號的格式為type-console-port。下面是一個序列號示例:emulator-5554
狀態(tài)—實例的連接狀態(tài)可為下列狀態(tài)之一:
offline—實例未連接到adb或不響應(yīng)。
device—實例現(xiàn)在已連接到adb服務(wù)器。請注意,此狀態(tài)并不表示Android系統(tǒng)已完全啟動且可以運行,因為在此實例連接到adb時系統(tǒng)仍在啟動。不過,在啟動后,這將是模擬器/設(shè)備實例的正常運行狀態(tài)。
nodevice—未連接模擬器/設(shè)備。
輸出的格式類似如下:
Listofdevicesattached
serial_numberstate
以下示例向您展示了devices命令及其輸出:
adbdevices
Listofdevicesattached
emulator-5554device
emulator-5556device
emulator-5558device
將命令發(fā)送至特定設(shè)備
如果多個模擬器/設(shè)備實例正在運行,在發(fā)出adb命令時您必須指定一個目標實例。為此,請在命令中使用-s選項。以下是-s選項的用法:
adb-sserial_numbercommand
如上所示,您使用由adb分配的序列號為命令指定目標實例。您可使用devices命令獲取正在運行的模擬器/設(shè)備實例的序列號。例如:
adb-semulator-5556installhelloWorld.apk
注意,如果在多個設(shè)備可用時您未指定目標模擬器/設(shè)備實例就發(fā)出命令,那么adb將生成一個錯誤。
如果您有多個設(shè)備可用(硬件或模擬設(shè)備),但只有一個設(shè)備是模擬器,則使用-e選項將命令發(fā)送至該模擬器。同樣,如果有多個設(shè)備,但只連接了一個硬件設(shè)備,則使用-d選項將命令發(fā)送至該硬件設(shè)備。
安裝應(yīng)用
您可以使用adb從開發(fā)計算機復(fù)制應(yīng)用,并將其安裝到模擬器/設(shè)備實例上。為此,請使用install命令。使用此命令,您必須指定您要安裝的APK文件的路徑:
adbinstallpath_to_apk
如需有關(guān)如何創(chuàng)建可在模擬器/設(shè)備實例上安裝的APK文件的詳細信息,請參閱構(gòu)建和運行您的應(yīng)用。
請注意,如果使用AndroidStudio,則無需直接使用adb(或aapt)在模擬器/設(shè)備上安裝您的應(yīng)用。而是由AndroidStudio為您處理應(yīng)用的打包和安裝。
設(shè)置端口轉(zhuǎn)發(fā)
您可以使用forward命令設(shè)置任意端口轉(zhuǎn)發(fā)—將對特定主機端口的請求轉(zhuǎn)發(fā)到模擬器/設(shè)備實例上的其他端口。下面向您介紹如何設(shè)置主機端口6100到模擬器/設(shè)備端口7100的轉(zhuǎn)發(fā):
adbforwardtcp:6100tcp:7100
您也可以使用adb設(shè)置傳輸?shù)街付ǖ某橄骍NIX網(wǎng)域套接字的轉(zhuǎn)發(fā),如下所示:
adbforwardtcp:6100local:logd
將文件復(fù)制到設(shè)備/從設(shè)備復(fù)制文件
您可以使用adb命令pull和push將文件復(fù)制到模擬器/設(shè)備實例或從其中復(fù)制文件。與install命令不同(其僅將APK文件復(fù)制到特定位置),pull和push命令允許您將任意目錄和文件復(fù)制到模擬器/設(shè)備實例中的任意位置。
要從模擬器或設(shè)備復(fù)制文件或目錄(及其子目錄),請使用
adbpullremotelocal
要將文件文件或目錄(及其子目錄)復(fù)制到模擬器或設(shè)備,請使用
adbpushlocalremote
在上述命令中,local和remote指的是開發(fā)計算機(本地)和模擬器/設(shè)備實例(遠程)上目標文件/目錄的路徑。例如:
adbpushfoo.txt/sdcard/foo.txt
停止adb服務(wù)器
在某些情況下,您可能需要終止adb服務(wù)器進程,然后重啟它以解決問題(例如,如果adb不響應(yīng)命令)。
要停止adb服務(wù)器,請使用adbkill-server命令。然后,您可以通過發(fā)出任意其他adb命令重啟服務(wù)器。
adb命令參考
您可以在開發(fā)計算機上從命令行發(fā)出adb命令,或通過腳本發(fā)出。用法如下:
adb[-d|-e|-sserial_number]command
如果只有一個模擬器在運行或只連接了一個設(shè)備,則默認情況下將adb命令發(fā)送至該設(shè)備。如果有多個模擬器在運行和/或連接了多個設(shè)備,您需要使用-d、-e或-s選項指定應(yīng)向其發(fā)送命令的目標設(shè)備。
發(fā)出shell命令
您可以使用shell命令通過adb發(fā)出設(shè)備命令,可以進入或不進入模擬器/設(shè)備實例上的adb遠程shell。要在不進入遠程shell的情況下發(fā)出一個命令,請使用如下shell命令:
adb[-d|-e|-sserial_number]shellshell_command
或者,使用如下命令進入模擬器/設(shè)備實例上的遠程shell:
adb[-d|-e|-sserial_number]shell
當(dāng)您準備退出遠程shell時,按Control+D或輸入exit。
shell命令二進制文件存儲在模擬器或設(shè)備的文件系統(tǒng)中,其路徑為/system/bin/。
調(diào)用ActivityManager(am)
在adbshell中,您可以使用ActivityManager(am)工具發(fā)出命令以執(zhí)行各種系統(tǒng)操作,如啟動Activity、強行停止進程、廣播intent、修改設(shè)備屏幕屬性及其他操作。在shell中,此語法為:
amcommand
您也可以直接從adb發(fā)出ActivityManager命令,無需進入遠程shell。例如:
adbshellamstart-aandroid.intent.action.VIEW
調(diào)用軟件包管理器(pm)
在adbshell中,您可以使用軟件包管理器(pm)工具發(fā)出命令,以對設(shè)備上安裝的應(yīng)用軟件包進行操作和查詢。在shell中,此語法為:
pmcommand
您也可以直接從adb發(fā)出軟件包管理器命令,無需進入遠程shell。例如:
adbshellpmuninstallcom.example.MyApp
進行屏幕截圖
screencap命令是一個用于對設(shè)備顯示屏進行屏幕截圖的shell實用程序。在shell中,此語法為:
screencapfilename
要從命令行使用screencap,請輸入以下命令:
$adbshellscreencap/sdcard/screen.png
以下屏幕截圖會話示例向您展示使用adbshell捕獲屏幕截圖,并使用pull命令從設(shè)備下載此文件:
$adbshell
shell@$screencap/sdcard/screen.png
shell@$exit
$adbpull/sdcard/screen.png
錄制視頻
screenrecord命令是一個用于錄制設(shè)備(運行Android4.4(API級別19)及更高版本)顯示屏的shell實用程序。此實用程序?qū)⑵聊籄ctivity錄制到MPEG-4文件。
注:音頻不與視頻文件一起錄制。
開發(fā)者可以使用此文件創(chuàng)建宣傳視頻或培訓(xùn)視頻。在shell中,此語法為:
screenrecord[options]filename
要從命令行使用screenrecord,請輸入以下命令:
$adbshellscreenrecord/sdcard/demo.mp4
按Control+C停止屏幕錄制,否則,到三分鐘或--time-limit設(shè)置的時間限制時,錄制將自動停止。
要開始錄制設(shè)備屏幕,請運行screenrecord命令以錄制視頻。然后,運行pull命令從設(shè)備將此視頻下載到主計算機。下面是一個錄制會話示例:
$adbshell
shell@$screenrecord--verbose/sdcard/demo.mp4
?。╬ressControl+Ctostop)
shell@$exit
$adbpull/sdcard/demo.mp4
screenrecord實用程序可以任何支持的分辨率和所需的比特率進行錄制,同時保留設(shè)備顯示屏的縱橫比。默認情況下,此實用程序以原生顯示分辨率和屏幕方向進行錄制,最大時長為三分鐘。
下面是screenrecord實用程序的一些已知限制,您在使用時應(yīng)注意:
某些設(shè)備可能無法以它們的原生顯示分辨率進行錄制。如果在錄制屏幕時出現(xiàn)問題,請嘗試使用較低的屏幕分辨率。
不支持在錄制時旋轉(zhuǎn)屏幕。如果在錄制期間屏幕旋轉(zhuǎn)了,則部分屏幕的錄制將被切斷。
讀取應(yīng)用的ART配置文件
從Android7.0(API級別24)開始,AndroidRuntime(ART)會收集已安裝應(yīng)用的執(zhí)行配置文件,其可用于優(yōu)化應(yīng)用性能。您可能想要檢查收集的配置文件,以了解在應(yīng)用啟動期間,系統(tǒng)決定頻繁執(zhí)行哪些方法和使用哪些類。
要生成配置文件信息的文本表單,請使用以下命令:
$adbshellcmdpackagedump-profilespackage
要檢索生成的文件,請使用:
$adbpull/data/misc/profman/package.txt
其他shell命令
如需所有可用shell程序的列表,請使用以下命令:
adbshellls/system/bin
大多數(shù)命令都提供幫助說明。
評論