adb命令結合monkey的簡單使用


一:ADB簡介
 
1,什么是adb:
ADB 全稱為 Android Debug Bridge,起到調試橋的作用,是一個客戶端-服務器端程序。其中客戶端是用來操作的電腦,服務端是 Android 設備。ADB 也是 Android SDK 中的一個工具,可以直接操作管理 Android 模擬器或者真實的 Android 設備。
2,為什么要用adb:
🔹運行設備的 shell(命令行)
🔹管理模擬器或設備的端口映射
🔹計算機和設備之間上傳/下載文件
🔹可以對設備的應用進行卸載安裝等
🔹在 App 遇到 ANR/Crash 等 bug 時,可以通過 ADB 來抓取日志
簡而言之,ADB 就是連接 Android 手機與 PC 端的橋梁,所以ADB又稱為安卓調試橋(注意:是安卓,不是iOS),可以讓用戶在電腦上對手機進行全面的操作!
 
二:准備條件
 
1,下載安裝ADB

鏈接:https://pan.baidu.com/s/18pIS1QtvqR3td34pMsCJ2Q
提取碼:2e34

2,配置環境變量
解壓安裝后,把解壓路徑放到系統變量里去(Path),
比如我的配置如下圖:
 
3,連接
可以通過模擬器連接,也可以通過數據線連接。通過數據線連接時,手機進入“開發者選項”,打開“usb調試”。 
不同品牌安卓機型,首次打開“開發者選項”方式不一樣,大多是雙擊手機版本號3~5次,會toast提醒“開發者模式已打開”,具體打開方式可根據手機品牌進行百度查詢。
4,電腦打開cmd窗口

 

 三:ADB命令詳解

1,基本命令
adb version :顯示 adb 版本
adb help:幫助信息,查看adb所支持的所有命令
adb devices:查看當前連接的設備,已連接的設備會顯示出來
 
adb get-serialno:也可以查看設備號
 

 

adb shell input keyevent 26 :點亮/熄滅手機屏幕,keyevent后面數字是鍵值,26代表手機電源鍵( 官方keyevent文檔
 
2,權限命令
adb root:獲取Android管理員(root用戶)的權限。
注意:一般測試機可使用root權限。
Android版本9以上,不支持商用機使用root權限,但可以修改底層一些配置:https://www.cnblogs.com/jeason1997/p/12410537.html
adb shell:登錄設備 shell,該命令將登錄設備的shell(內核),登錄shell后,可以使用 cd,ls,rm 等Linux命令
 
adb remount:獲取System分區可寫權限,需要root后才能有這個權限
 
3,建立連接
adb -d:如果同時連了usb,又開了模擬器,連接當前唯一通過usb連接的安卓設備
adb -e shell:指定當前連接此電腦的唯一的一個模擬器
adb  -s <設備號> shell:當電腦插多台手機或模擬器時,指定一個設備號進行連接
exit:退出
 
adb kill-server:殺死當前adb服務,如果連不上設備時,殺掉重啟。(沒事不要用它)
 
adb start-server:殺掉后重啟,
 
5037:adb默認端口,如果該端口被占用,可以指定一個端口號,如下命令
adb -P 6666 start-server:任意指定一個 adb shell 的端口
 

 

 

4,apk 操作指令
adb shell pm list packages:列出當前設備/手機,所有的包名
adb shell pm list packages -f:顯示包和包相關聯的文件(安裝路徑)
 
adb shell pm list packages -d:顯示禁用的包名
adb shell pm list packages -e:顯示當前啟用的包名
adb shell pm list packages -s:顯示系統應用包名
adb shell pm list packages -3:顯示已安裝第三方的包名
adb shell pm list packages xxxx:加需要過濾的包名,如:xxx = taobao
 
adb logcat | findStr -i displayed:查看當前啟動應用的包名;執行該命令后,點擊需要啟動的應用,即可顯示該包名
adb shell dumpsys window | findstr mCurrentFocus:查看當前啟動應用的包名;先點擊進入該應用內,執行該命令后,即可顯示該包名
 
adb install <文件路徑\apk>:將本地的apk軟件安裝到設備(手機)上。如手機外部安裝需要密碼,記得手機輸入密碼。
 
adb install  -r <文件路徑\apk>:覆蓋安裝
 
adb install  -d <文件路徑\apk>:允許降級覆蓋安裝
adb install  -g <文件路徑\apk>:授權/獲取權限,安裝軟件時把所有權限都打開
 
adb uninstall  <包名>:卸載該軟件/app。
注意:安裝時安裝的是apk,卸載時是包名,可以通過 adb shell pm list packages  查看需要卸載的包名。
adb shell pm uninstall -k <包名>:雖然把此應用卸載,但仍保存此應用的數據和緩存
adb shell am force-stop <包名>:強制退出該應用/app

 

5,文件操作指令
adb push <本地路徑\文件或文件夾> <手機端路徑>:把本地(pc機)的文件或文件夾復制到設備(手機)
注意點1:pc機路徑與Android機路徑,分隔符是不同的。
注意點2:復制失敗,大概率是無權限。可先使用上面介紹過的兩個命令: adb root;adb remount。在使用 adb push 命令
adb pull <手機端路徑/文件或文件夾> <pc機路徑>:把設備(手機)的文件或文件夾復制到本地。注意點同上
 
 
 
6,日志操作指令
adb shell logcat -c:清理現有日志
adb shell logcat -v time :輸出日志,信息輸出在控制台
adb shell logcat -v time >  <存放路徑\log.txt>:輸出日志並保存在本地文件
Ctrl+C:終止日志抓取
adb shell logcat -v time *:E > <存放路徑\log.txt>:打印級別為Error的信息
日志的等級:
-v:Verbse(明細)
-d:Debug(調試)
-i:Info(信息)
-w:Warn(警告)
-e:Error(錯誤)
-f:Fatal(嚴重錯誤)
抓取日志的步驟先輸入命令啟動日志,然后操作 App,復現 bug,再 ctrl+c 停止日志,分析本地保存的文件。
日志是記錄手機系統在運行app時有什么異常的事件
EXCEPTION
也可以把更詳細得Anr日志拉取出來:adb shell pull /data/anr/traces.txt <存放路徑>
 
7,系統操作指令
adb shell getprop ro.product.model:獲取設備型號
adb shell getprop ro.build.version.release:獲取Android系統版本
 
adb get-serialno:獲取設備的序列號(設備號)
 
adb shell wm size:獲取設備屏幕分辨率
 
adb shell screencap -p /sdcard/mms.png:屏幕截圖
adb shell screencap -p /sdcard/screenshot.png:屏幕截圖

 

 

adb pull /sdcard/mms.png <存放的路徑>:將截圖導出到本地
adb pull /sdcard/screenshot.png <存放的路徑>:將截圖導出到本地

 

 

adb shell dumpsys activity |find "mResumedActivity":查看前台應用包名,必須先啟動app,適用於Android 8.0以上
 
adb shell cat /proc/meminfo:獲取手機內存信息
 
adb shell df:獲取手機存儲信息
 
adb shell screenrecord <存放路徑/xxx.mp4>:錄屏,命名以.mp4結尾
adb shell screenrecord --time-limit 10 <存放路徑/xxx.mp4>:錄屏時間為10秒
 
四,ADB 命令結合 monkey 的使用
1,什么是monkey
Monkey 是Android SDK提供的一個命令行工具,可以簡單方便的發送偽隨機的用戶事件流,對Android APP做壓力(穩定性)測試。主要是為了測試app是否存在無響應和崩潰的情況。
 
2,adb結合 monkey 的常用命令
adb shell  monkey 100:對該設備下,隨機應用,執行100次的隨機操作。(偽隨機)
adb shell monkey -p <包名> 100:指定應用(包)隨機操作100次。這里演示的包名為:com.dfcyc.app.dffs
 
adb shell monkey -p <包名> -v -v -v 100 >D:\log.txt:指定應用隨機操作100次並打印日志到指定路徑/文件
-v:日志等級,一共3級
D:\log.txt:指定路徑存放日志,文件名自定義。
adb shell monkey -s <seed值>  -p <包名> -v -v -v 100 >D:\log.txt:根據seed值 指定應用隨機操作100次並打印日志到指定路徑/文件
seed值:輸出log日志文件后,文件內查看。
adb shell monkey -p <包名> -v -v -v --throttle 1000 200 >D:\log.txt:指定應用隨機操作200次,每1000毫秒點擊一次,並打印日志到指定路徑/文件。
--throttle:后面跟毫秒數

 

在命令執行過程中,按 Ctrl+C 可以退出,但不代表monkey停止 (包括運行monkey時拔掉數據線,仍然未停止),如果需要停止monkey可以殺死該進程 id,如下命令:
adb shell ps | findstr monkey:停止前先查看當前系統,monkey在跑的 進程id
adb shell kill <進程pid>:強制殺死在跑的monkey進程
 

 

3,monkey的日志分析
使用 Monkey 進行測試結束后,我們關注的是應用在測試中是否出現崩潰或無響應這類問題。測試結果可以通過如下方法判斷:
正常:
monkey測試順利執行完成,在log的最后,會打印當前執行時間的次數和所花費的時間。Monkey finished代表執行完成
異常:日志內搜索異常關鍵字
a.  無響應-Anr問題:在日志中搜索“ANR”
b.  :在日志中搜索“CRASH”
c.  其他問題:在日志中搜索”Exception”
更多日志相關信息可自行百度
有實力的同學可以寫個小工具,自動進行日志分析即可。
 
知識點:adb logcat的日志和monkey命令日志的區別
adb monkey日志是記錄monkey命令在手機APP操作的事件。
adb logcat日志是記錄手機系統在運行app時有什么異常的事件。
 
PS:更多/更系統的使用,可根據個人需要自行網上學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM