快速尋找Activity/Fragmente及打印Logcat信息的ADB常用命令
在接手新項目或新手入職,查看功能所在對應(yīng)的Activity/Fragment時,能快速定位,縮小范圍找到業(yè)務(wù)邏輯實現(xiàn)。
熟悉常用的Logcat查看命令也能快速定位問題
ADB查看APP的常用命令
查看當前界面Activity:
adb shell "dumpsys activity top | grep ACTIVITY | tail -n 1"
- dumpsys activity top :打印頂層Activity信息
- grep ACTIVITY:從上個命令結(jié)果中過濾出Activity相關(guān)信息
- tail -n 1:從上一步過濾結(jié)果中繼續(xù)過濾出最后一條記錄,也就是當前界面(頂層top)activity
查看當前界面Fragment:
adb shell "dumpsys activity top | grep '#0: ' | tail -n 1"
或adb shell "dumpsys activity top | grep '#[0-9]: ' | tail -n 1"
- grep '#0: ' : 當前第一個Fragment
如果不知道一個Activity里有幾個Fragment,使用這命令,Activity信息棧里顯示有那些相關(guān)的Fragment
adb shell dumpsys activity top
| 命令 | 描述 |
|---|---|
| adb shell ps | 查看進程 |
| adb shell dumpsys activity | 獲取當前 Android 系統(tǒng) Activity 棧中 Activity 信息 |
| adb shell dumpsys activity top | 獲取當前 Android 系統(tǒng) 中與用戶交互的 Activity 的詳細信息 |
| adb shell dumpsys meminfo 應(yīng)用包名 | 查看應(yīng)用的內(nèi)存使用情況 |
| adb shell dumpsys package 應(yīng)用包名 | 獲取手機里面某個 apk 的應(yīng)用信息、版本信息 |
| adb shell pm list package -3 | 列出所有的應(yīng)用的包名 (-s:列出系統(tǒng)應(yīng)用 -3:列出第三方應(yīng)用 -f:列出應(yīng)用包名及對應(yīng)的apk名及存放位置 -i:列出應(yīng)用包名及其安裝來源) |
| adb shell dumpsys activity activities | 顯示當前所有在運行的任務(wù)棧,并可查看棧中所有的 Activity 的列表 |
| adb shell wm size | 手機屏幕分辨率 |
| adb shell wm density | 手機屏幕密度 |
| adb shell getprop ro.product.model | 查看設(shè)備型號 |
獲取連接的設(shè)備列表及設(shè)備狀態(tài)
adb devices
安裝APK
adb install path_to_apk
-l向前鎖定應(yīng)用
adb install -l your.apk #forward lock application
-r替換已存在應(yīng)用
adb install -r test.apk #replace existing application
-t測試package標志
adb install -t test.apk #allow test packages
-s將應(yīng)用安裝到sdcard
adb install -s test.apk #install application on sdcard
-d忽略版本號安裝apk
adb install -d test.apk #allow version code downgrade
-p部分安裝apk標志
- path_to_apk:指apk的絕對路徑
卸載 APK
adb uninstall 應(yīng)用包名
//使用-k參數(shù):保留安裝包的數(shù)據(jù)和緩存目錄
adb uninstall -k 應(yīng)用包名
Logcat常用命令
捕捉手機里已經(jīng)發(fā)生過的崩潰日志,bugreport是支持所有手機日志信息
D:\bugreport>adb bugreport > 123.txt
輸出到指定目錄到123.txt文件(過程需要等待幾分鐘時間),會down下一個所有日志的壓縮包。
在此目錄下輸入命令:findstr "FATAL EXCEPTION" .\** 找異常所有的對應(yīng)文件,然后打開對應(yīng)的文件,然后全文搜索FATAL EXCEPTION,就可以找出問題所在。
查看命令幫助, 查看一下一些簡單的數(shù)據(jù)格式
adb logcat --help
使用命令adb logcat的打印:從上而下,優(yōu)先級最高
V - Verbose(lowest priority:優(yōu)先級最低,輸出得最多)
D - Debug
I - Info
W - Warning
E - Error
F - Fatal
S - Silent(highest priority,on which nothing is ever printed:優(yōu)先級最高,啥也不輸出)
清除緩存信息
adb logcat -c
- 最好的做法的先使用-c清除之前的日志信息,再觸發(fā)事件,查看最近的日志信息。
使用tag以后級別失效的原因是沒有加上*:S。不加靜默所有其他日志的選項就會把其他日志都輸出。
在developers文檔有介紹 Logcat 命令行工具 | Android 開發(fā)者 | Android Developers (google.cn)
打印優(yōu)先級為Error以上的日志信息。
adb logcat *:E
- *表示任何的Tag
- E表示優(yōu)先級
顯示所有優(yōu)先級Warning以上的日志
adb logcat *:W *:S
打印時間和優(yōu)先級為Error以上的日志信息:
adb logcat -v time *:E *:S
把日志信息保存到電腦上D盤log.txt文件上
adb logcat -v time *:E *:S > D:\log.txt
如果需要精準到某他APP上,則在其后面添加上 " | findstr app進程ID"
注意:
Window環(huán)境:findstr
Mac或Linux環(huán)境:grep
打印某個APP下,且tag為tagName的info級別以上的信息
adb logcat TagName:I *:S | findstr app進程ID
打印某個APP的某個Tag的logcat信息(級別從E到S)
adb logcat TagName:E *:S | findstr app進程ID
打印某個APP的某些Tag的logcat信息(級別從E到S)
adb logcat TagName:E Tag:E *:S | findstr app進程ID