美文网首页
adb,logcat使用及对Android设备的操作

adb,logcat使用及对Android设备的操作

作者: ytxhao | 来源:发表于2017-05-26 18:13 被阅读130次

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
  1. start [options] <INTENT> :启动activity通过指定的intent参数
  2. startservice [options] <INTENT> : 启动service通过指定的intent参数
  3. force-stop <PACKAGE> : 强制停止指定的package包应用
  4. 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为MyCameradecode_difftime的信息
    • 下面命令含义为过滤pid为 5505 进程,显示格式为time(显示日期、调用时间、优先级/标记以及发出消息的进程的 PID),显示TAG等级高于DEBUG的信息同时过滤掉包含MyCameradecode_difftime的信息
logcat -v time *:d MyCamera:S decode_difftime:S | grep "5505"

相关文章

网友评论

      本文标题:adb,logcat使用及对Android设备的操作

      本文链接:https://www.haomeiwen.com/subject/ucvxfxtx.html