adb,logcat使用及对Android设备的操作
adb常用命令
-
查看连接到本机的所有的设备命令:
adb devices
执行结果如下:E:\xiao\src\android_camera>adb devices List of devices attached emulator-5590 host 68653344 device emulator-5660 host emulator-5608 host
-
使用adb登录到指定设备命令:
adb -s "device" shell
如果连接本机的设备只有一个可以直接使用命令adb shell
例如:E:\xiao\src\android_camera>adb -s 68653344 shell libra:/ $
如果是网络设备,则填写ip地址和端口号。例如:
$ adb -s 172.17.159.159:5555 shell
-
安装app
$ adb -s 172.17.159.159:5555 install c:\EPG.apk
单设备连接时
$ adb install c:\EPG.apk
当安装时提示已安装需要卸载时使用如下命令覆盖安装
$ adb install -r c:\EPG.apk
- 卸载app
$ adb uninstall "包名"
$ adb uninstall -k "包名"
- 连接与断开网络设备
$ adb connect 172.17.122.122
$ adb disconnect
- 发送和拉取文件
发送到设备
$ adb push <本地路径> <远程路径>
拉取文件到本地
$ adb pull <远程路径> <本地路径>
对android设备进行操作
登录设备后我们就可以通过命令行对设备进行操作了
- 查看网络
# netcfg
- 重新挂载分区
例如将/system分区挂载为可读写状态
# mount -o rw,remount /system
- 查看应用使用内存信息
dumpsys meminfo <包名 或 pid>
# dumpsys meminfo ican.ytx.com.videosummary
或
# dumpsys meminfo 14087
am 命令,am全称activity manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等
- 拨打电话
# am start -a android.intent.action.CALL -d tel:10086
这里-a表示动作,-d表述传入的数据,还有-t表示传入的类型。
- 打开一个网页
# 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参数
- startservice [options] <INTENT> : 启动service通过指定的intent参数
- force-stop <PACKAGE> : 强制停止指定的package包应用
- broadcast [options] <INTENT> :发送一个intent。具体intent参数参照start命令参数
- 启动一个服务
am startservice <服务名称>
例如:am startservice -n com.android.music/com.android.music.MediaPlaybackService (这里-n表示组件)
或者:am startservice -a com.smz.myservice (这里-a表示动作,就是你在Androidmanifest里定义的)
- 发送一个广播
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> | 加载可供查看的备用日志缓冲区,如 events 或 radio。默认情况下使用 main 缓冲区 |
-c | 清除(刷新)整个日志并退出。 |
-d | 将日志转储到屏幕并退出。 |
-f <filename> | 将日志消息输出写入 <filename>。默认值为 stdout。 |
-g | 打印指定日志缓冲区的大小并退出。 |
-n <count> | 将已旋转日志的最大数量设置为 <count>。默认值为 4。 需要使用 -r 选项。 |
-r <kbytes> | 每输出 <kbytes> 时旋转日志文件。默认值为 16。需要使用 -f 选项。 |
-s | 将默认过滤器规则设为静默式。 |
-v <format> | 设置日志消息的输出格式。默认值为 brief 格式有关支持的格式列表,请参阅"控制日志输出格式" |
详细使用参考这里
常用过滤方法
- 过滤指定包名的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
(显示日期、调用时间、优先级/标记以及发出消息的进程的 PID),显示TAG等级高于DEBUG的信息同时过滤掉包含MyCamera
和decode_difftime
的信息
- 下面的命令通过静默级别
logcat -v time *:d MyCamera:S decode_difftime:S | grep "5505"
网友评论