2020-03-15

ADB 安卓調(diào)試橋 常見命令

針對移動(dòng)端 Android 的測試, adb 命令是很重要的一個(gè)點(diǎn),必須將常用的 adb 命令熟記于心, 將會(huì)為 Android 測試帶來很大的方便,其中很多命令將會(huì)用于自動(dòng)化測試的腳本當(dāng)中。

Android Debug Bridge

adb 其實(shí)就是 Android Debug Bridge, Android 調(diào)試橋的縮寫,adb 是一個(gè)?C/S?架構(gòu)的命令行工具,用于通過電腦端與模擬器或者真實(shí)設(shè)備交互。在某些特殊的情況下進(jìn)入不了系統(tǒng),adb就派上用場啦!主要由 3 部分組成:

· 運(yùn)行在 PC 端的 Client : 可以通過它對 Android 應(yīng)用進(jìn)行安裝、卸載及調(diào)試

· 運(yùn)行在 PC 端的 Service : 其管理客戶端到 Android 設(shè)備上 adb 后臺(tái)進(jìn)程的連接

adb 服務(wù)啟動(dòng)后,Windows 可以在任務(wù)管理器中找到 adb.exe 這個(gè)進(jìn)程

· 運(yùn)行在 Android 設(shè)備上的 adb 后臺(tái)進(jìn)程

執(zhí)行 adb shell ps | grep adbd ,可以找到該后臺(tái)進(jìn)程,windows 請使用 findstr 替代 grep

通過adb操作android設(shè)備

連接上數(shù)據(jù)線,然后把手機(jī)開發(fā)者模式打開,打開usb調(diào)試。

adb 命令

在開發(fā)或者測試的過程中,我們可以通過 adb 來管理多臺(tái)設(shè)備,其一般的格式為:

adb [-e | -d | -s <設(shè)備序列號(hào)>] <子命令>

在配好環(huán)境變量的前提下,在命令窗口當(dāng)中輸入 adb help 或者直接輸入 adb ,將會(huì)列出所有的選項(xiàng)說明及子命令。

這里介紹一些里面常用的命令:

1.adb devices?, 獲取設(shè)備列表及設(shè)備狀態(tài)

2.adb get-state?, 獲取設(shè)備的狀態(tài)

設(shè)備的狀態(tài)有 3 鐘,device , offline , unknown

device:設(shè)備正常連接

offline:連接出現(xiàn)異常,設(shè)備無響應(yīng)

unknown:沒有連接設(shè)備

3.安裝卸載應(yīng)用程序

adb install?用于安裝

安裝成功,返回成功提示 "Success";

安裝失敗,會(huì)返回以下:

INSTALL_FAILED_ALREADY_EXISTS

此時(shí)需要用 -r 參數(shù)來重新安裝。

INSTALL_FAILED_SIGNATURE_ERROR

應(yīng)用的簽名不一致,可能是發(fā)布版和調(diào)試版簽名不同所致。也有可能是沒卸載舊應(yīng)用導(dǎo)致。

INSTALL_FAILED_INSUFFICIENT_STORAGE

存儲(chǔ)空間不足,需要檢查設(shè)備存儲(chǔ)情況。

adb uninstall?用于卸載

adb uninstall 后面帶的是應(yīng)用的包名,而不是應(yīng)用名。

查看系統(tǒng)所有應(yīng)用的包名:

adb shell pm list packages –f

4.上傳、下載文件

adb push 命令將PC機(jī)上的文件推到 DLT-RK3288 機(jī)器上;

adb pull? 命令將DLT-RK3288機(jī)器上的文件拉到PC機(jī)上;

例如:

adb push d:/new.txt /sdcard/??

將D盤下new.txt文件 推到內(nèi)部存儲(chǔ)器

adb pull /sdcard/new.txt??? d:\

將DLT-RK3288 內(nèi)部存儲(chǔ)器根目錄下的new.txt 拉到D盤

5. adb shell pm list package

Package Manager , 可以用獲取到一些安裝在 Android 設(shè)備上得應(yīng)用信息

-s:列出系統(tǒng)應(yīng)用

-f:列出應(yīng)用包名及對應(yīng)的apk名及存放位置

查看當(dāng)前運(yùn)行的應(yīng)用包名及 activity名:adb shell dumpsys window | findstr mCurrentFocus?

過濾應(yīng)用

5.adb shell

通過adb shell 命令,就可以進(jìn)入設(shè)備或者模擬器的shell環(huán)境了,在這個(gè)Linux shell中,我們就可以執(zhí)行各種Linux命令了。

如果只想執(zhí)行一條shell命令,就可以采用:adb shell [shell_command],在實(shí)際使用中,經(jīng)常與grep或findstr一起使用,起到過濾作用,查看自己需要的關(guān)鍵信息。

6.常見命令:

如 ls, cd, rm, mkdir, touch, pwd, cp, mv, ifconfig, netstat, ping, ps, top等,進(jìn)入adb shell即可執(zhí)行,與linux相似

7. adb logcat

一.在cmd窗口查看手機(jī)的Log日志

有時(shí)候我們在手機(jī)程序上的日志要在其他地方調(diào)試,然后要看里面的Log日志。在cmd窗口中輸入如下命令:

//格式1:打印默認(rèn)日志數(shù)據(jù)

adb logcat

//格式2:需要打印日志詳細(xì)時(shí)間的簡單數(shù)據(jù)

adb logcat -v time

//格式3:需要打印級別為Error的信息

adb logcat *:E

//格式4:需要打印時(shí)間和級別是Error的信息

adb logcat -v time *:E

//格式5:將日志保存到電腦固定的位置,比如D:\log.txt

adb logcat -v time >D:\log.txt

這時(shí)手機(jī)日志更新什么日志,cmd窗口也會(huì)同步更新數(shù)據(jù)。

但是這樣沒有過濾條件,如果Log日志很多,很難找到我們想要的信息,

當(dāng)然也可以復(fù)制cmd中的數(shù)據(jù)到一個(gè)文本中慢慢處理的,就是效率不高。

下面介紹adb logcat中的詳細(xì)參數(shù)命令以及如何才能高效的打印日志,或者把日志保存到我們指定的位置。

二.adb logcat?詳解

adb logcat如果用過,但是具體命令又不記得,可以輸入adb logcat -help,查看一下一些簡單的數(shù)據(jù)格式:

日志過濾:adb logcat <tag>[:priority]

tag表示標(biāo)簽,priority輸出的級別,日志默認(rèn)級別是V,如果錯(cuò)誤日志我們選擇E就可以。

Android 的日志分為如下幾個(gè)優(yōu)先級(priority):

V —— Verbose(最低,輸出得最多)

D —— Debug

I —— Info

W —— Warning

E —— Error

F —— Fatal

S —— Silent(最高,啥也不輸出)

按某級別過濾日志則會(huì)將該級別及以上的日志輸出。比如,命令:adb logcat *:W

其實(shí)*可以是某個(gè)tag,如果沒有指明,就表示所有。

tag可以由多個(gè) [:priority] 組成。比如,命令:

adb logcat ActivityManager:I MyApp:D *:S

表示輸出 tag ActivityManager 的 Info 以上級別日志,輸出 tag MyApp 的 Debug 以上級別日志,及其它 tag 的 Silent 級別日志(即屏蔽其它 tag 日志)。

adb logcat選項(xiàng)解析

--"-s"選項(xiàng) : 設(shè)置輸出日志*:s的標(biāo)簽, 只顯示該標(biāo)簽的日志;

--"-f"選項(xiàng) : 將日志輸出到文件, 默認(rèn)輸出到標(biāo)準(zhǔn)輸出流中, -f 參數(shù)執(zhí)行不成功;

--"-r"選項(xiàng) : 按照每千字節(jié)輸出日志, 需要 -f 參數(shù), 不過這個(gè)命令沒有執(zhí)行成功;

--"-n"選項(xiàng) : 設(shè)置日志輸出的最大數(shù)目, 需要 -r 參數(shù), 這個(gè)執(zhí)行 感覺 跟 adb logcat 效果一樣;

--"-v"選項(xiàng) : 設(shè)置日志的輸出格式, 注意只能設(shè)置一項(xiàng);

--"-c"選項(xiàng) : 清空所有的日志緩存信息;

--"-d"選項(xiàng) : 將緩存的日志輸出到屏幕上, 并且不會(huì)阻塞;

--"-t"選項(xiàng) : 輸出最近的幾行日志, 輸出完退出, 不阻塞;

--"-g"選項(xiàng) : 查看日志緩沖區(qū)信息;

--"-B"選項(xiàng) : 以二進(jìn)制形式輸出日志;

把日志信息保存到電腦中

adb logcat最后添加” > 保存文件的地址,比如需要將的信息保存到電腦中使用下面的命令: adb logcat -v time > D:\log.txt

8.monkey測試

一、Monkey測試簡介

Monkey測試是Android平臺(tái)自動(dòng)化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動(dòng)Trackball、按鍵等操作來對設(shè)備上的程序進(jìn)行壓

二、Monkey命令的簡單幫助

要獲取Monkey命令自帶的簡單幫助,在CMD中執(zhí)行命令:

adb shell monkey –help

四、Monkey命令參數(shù)介紹

說明:第一個(gè)-s指定設(shè)備,如果只連接了一臺(tái)設(shè)備,可不用該參數(shù)。

-p <apk包名>只允許系統(tǒng)啟動(dòng)指定的app,如果不指定,將允許系統(tǒng)啟動(dòng)設(shè)備中的所有app,也可指定多個(gè)包。

--throttle <毫秒數(shù)> 指定用戶操作(事件)間的時(shí)延。

--ignore-crashes 指定當(dāng)應(yīng)用程序崩潰時(shí),Monkey依然發(fā)送事件,直到事件計(jì)數(shù)完成。

--ignore-timeouts 當(dāng)應(yīng)用程序發(fā)生ANR錯(cuò)誤時(shí),Monkey依然會(huì)發(fā)送事件,直到事件計(jì)數(shù)完成。

第2個(gè)-s,用于指定偽隨機(jī)數(shù)生成器的seed值,如果seed相同,則兩次Monkey測試所產(chǎn)生的事件序列也相同的。

-v 用于指定反饋信息級別,總共分為level 0、level 1、level 2三個(gè)級別,級別越高,輸出的日志越詳細(xì)。

日志級別 Level0?示例 adb shellmonkey -p com.amaker.mp –v 100

說明 缺省值,僅提供啟動(dòng)提示、測試完成和最終結(jié)果等少量信息

日志級別 Level 1?示例 adb shellmonkey -p com.amaker.mp –v -v 100

說明 提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到Activity的事件信息

日志級別 Level 2?示例 adb shellmonkey -p com.amaker.mp –v -v –v 100

說明 最詳細(xì)的日志,包括了測試中選中/未選中的Activity信息

最后的數(shù)字(這里是500):表示Monkey程序模擬500次隨機(jī)用戶操作事件。

>輸出測試結(jié)果到D:\monkeylog.txt

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容