adb,logcat使用及對Android設(shè)備的操作
adb常用命令
-
查看連接到本機的所有的設(shè)備命令:
adb devices執(zhí)行結(jié)果如下:E:\xiao\src\android_camera>adb devices List of devices attached emulator-5590 host 68653344 device emulator-5660 host emulator-5608 host -
使用adb登錄到指定設(shè)備命令:
adb -s "device" shell
如果連接本機的設(shè)備只有一個可以直接使用命令adb shell
例如:E:\xiao\src\android_camera>adb -s 68653344 shell libra:/ $如果是網(wǎng)絡(luò)設(shè)備,則填寫ip地址和端口號。例如:
$ adb -s 172.17.159.159:5555 shell 安裝app
$ adb -s 172.17.159.159:5555 install c:\EPG.apk
單設(shè)備連接時
$ adb install c:\EPG.apk
當安裝時提示已安裝需要卸載時使用如下命令覆蓋安裝
$ adb install -r c:\EPG.apk
- 卸載app
$ adb uninstall "包名"
$ adb uninstall -k "包名"
- 連接與斷開網(wǎng)絡(luò)設(shè)備
$ adb connect 172.17.122.122
$ adb disconnect
- 發(fā)送和拉取文件
發(fā)送到設(shè)備
$ adb push <本地路徑> <遠程路徑>
拉取文件到本地
$ adb pull <遠程路徑> <本地路徑>
對android設(shè)備進行操作
登錄設(shè)備后我們就可以通過命令行對設(shè)備進行操作了
- 查看網(wǎng)絡(luò)
# netcfg
- 重新掛載分區(qū)
例如將/system分區(qū)掛載為可讀寫狀態(tài)
# mount -o rw,remount /system
- 查看應用使用內(nèi)存信息
dumpsys meminfo <包名 或 pid>
# dumpsys meminfo ican.ytx.com.videosummary
或
# dumpsys meminfo 14087
am 命令,am全稱activity manager,你能使用am去模擬各種系統(tǒng)的行為,例如去啟動一個activity,強制停止進程,發(fā)送廣播進程,修改設(shè)備屏幕屬性等等
- 撥打電話
# am start -a android.intent.action.CALL -d tel:10086
這里-a表示動作,-d表述傳入的數(shù)據(jù),還有-t表示傳入的類型。
- 打開一個網(wǎng)頁
# am start -a android.intent.action.VIEW -d http://www.baidu.com (這里-d表示傳入的data)
- 打開音樂播放器
# am start -a android.intent.action.MUSIC_PLAYER
或者使用 包名和應用名,可以在Androidmanifest.xml文件查看到
# am start -n com.android.music/com.android.music.MusicBrowserActivity
//am start -n ican.ytx.com.videosummary/ican.ytx.com.videosummary.MainActivity
- start [options] <INTENT> :啟動activity通過指定的intent參數(shù)
- startservice [options] <INTENT> : 啟動service通過指定的intent參數(shù)
- force-stop <PACKAGE> : 強制停止指定的package包應用
- broadcast [options] <INTENT> :發(fā)送一個intent。具體intent參數(shù)參照start命令參數(shù)
- 啟動一個服務(wù)
am startservice <服務(wù)名稱>
例如:am startservice -n com.android.music/com.android.music.MediaPlaybackService (這里-n表示組件)
或者:am startservice -a com.smz.myservice (這里-a表示動作,就是你在Androidmanifest里定義的)
- 發(fā)送一個廣播
am broadcast -a <廣播動作>
例如1: am broadcast -a com.smz.mybroadcast
例如2: am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///storage/usb/Android
- 截圖
# /system/bin/screencap -p /sdcard/screenshot.png
logcat使用
- logcat命令行選項
| 選項 | 說明 |
|---|---|
| -b <buffer> | 加載可供查看的備用日志緩沖區(qū),如 events 或 radio。默認情況下使用 main 緩沖區(qū) |
| -c | 清除(刷新)整個日志并退出。 |
| -d | 將日志轉(zhuǎn)儲到屏幕并退出。 |
| -f <filename> | 將日志消息輸出寫入 <filename>。默認值為 stdout。 |
| -g | 打印指定日志緩沖區(qū)的大小并退出。 |
| -n <count> | 將已旋轉(zhuǎn)日志的最大數(shù)量設(shè)置為 <count>。默認值為 4。 需要使用 -r 選項。 |
| -r <kbytes> | 每輸出 <kbytes> 時旋轉(zhuǎn)日志文件。默認值為 16。需要使用 -f 選項。 |
| -s | 將默認過濾器規(guī)則設(shè)為靜默式。 |
| -v <format> | 設(shè)置日志消息的輸出格式。默認值為 brief 格式有關(guān)支持的格式列表,請參閱"控制日志輸出格式" |
詳細使用參考這里
常用過濾方法
- 過濾指定包名的log
step 1 通過包名獲取進程pid
# ps | grep "com.ytx.ican.tcpupdate"
step 2 通過pid過濾log,例如pid為5505
# logcat -v time | grep "5505"
- 靜默掉相應的TAG
- 下面的命令通過靜默級別
S來過濾掉TAG為MyCamera和decode_difftime的信息 - 下面命令含義為過濾pid為 5505 進程,顯示格式為
time(顯示日期、調(diào)用時間、優(yōu)先級/標記以及發(fā)出消息的進程的 PID),顯示TAG等級高于DEBUG的信息同時過濾掉包含MyCamera和decode_difftime的信息
- 下面的命令通過靜默級別
logcat -v time *:d MyCamera:S decode_difftime:S | grep "5505"