输出过滤日志
adb logcat | grep -E "xxxxxxx"
本地maven仓库地址
open .m2/repository/
打开schema
adb shell am start "alipays://platformapi/startapp?appId=21000561"
输出支付宝的hprof文件,分析内存泄漏问题
- 输出支付宝进程号
adb shell ps | grep com.eg.android.AlipayGphone
- 输出支付宝的hprof文件
adb shell am dumpheap xxxxxx /data/local/tmp/myleakcanaryheapdump.hprof
- 把hprof传到mac桌面
adb pull /data/local/tmp/myleakcanaryheapdump.hprof ~/Desktop
输出Activity堆栈
adb shell dumpsys activity activities | grep ActivityRecord | grep Hist
查看某应用的版本号
adb shell dumpsys package com.eg.android.AlipayGphone | findstr versionCode
adb shell "dumpsys package com.eg.android.AlipayGphone | grep version"
输出当前堆栈里的所有的activity
adb shell dumpsys activity activities | grep ActivityRecord | grep Hist
获取density
adb shell wm density
输出进程号
adb shell ps | grep $com.yunos.fastdriver | awk '{print $2}'
过滤进程的log
adb logcat | grep --color=auto pid
packageName=$1
pid=adb shell ps | grep $packageName | awk '{print $2}'
adb logcat | grep --color=auto $pid
解析 adb logcat 的帮助信息
停止方法: adb shell kill -9 <logcat_pid>
其中logcat_pid 通过 如下命令获取
adb shell ps | grep logcat # linux 平台
adb shell ps | findstr "logcat" #Windows平台
adb logcat 命令格式: adb logcat [选项] [过滤项], 其中 选项 和 过滤项 在 中括号 [] 中, 说明这是可选的;
选项解析
选项解析:
-- "-s"选项: 设置输出日志的标签, 只显示该标签的日志;
-- "-f"选项: 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;
-- "-r"选项: 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;
-- "-n"选项: 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;
-- "-v"选项: 设置日志的输出格式, 注意只能设置一项;
-- "-c"选项: 清空所有的日志缓存信息;
-- "-d"选项: 将缓存的日志输出到屏幕上, 并且不会阻塞;
-- "-t"选项: 输出最近的几行日志, 输出完退出, 不阻塞;
-- "-g"选项: 查看日志缓冲区信息;
-- "-b"选项: 加载一个日志缓冲区, 默认是 main, 下面详解;
-- "-B"选项: 以二进制形式输出日志;
输出指定标签内容:
--"-s"选项: 设置默认的过滤器, 如 我们想要输出 "System.out" 标签的信息, 就可以使用adb logcat -s System.out命令;
输出日志信息到文件:
-- "-f"选项: 该选向后面跟着输入日志的文件, 使用adb logcat -f /sdcard/log.txt命令, 注意这个log文件是输出到手机上,需要指定合适的路径。
指定 logcat 的日志输出格式:
-- "brief"格式: 这是默认的日志格式 " 优先级 / 标签 (进程ID) : 日志信息 " , 使用adb logcat -v prief命令;
-- "process"格式: " 优先级 (进程ID) : 日志信息 " , 使用adb logcat -v process 命令;
-- "tag"格式: " 优先级 / 标签 : 日志信息" , 使用adb logcat -v tag命令;
-- "thread"格式: " 优先级 ( 进程ID : 线程ID) 标签 : 日志内容 " , 使用adb logcat -v tag命令;
-- "raw"格式: 只输出日志信息, 不附加任何其他 信息, 如 优先级 标签等, 使用adb logcat -v raw命令;
-- "time"格式: "日期 时间 优先级 / 标签 (进程ID) : 进程名称 : 日志信息 " , 使用adb logcat -v time命令;
-- "long"格式: " [ 日期 时间 进程ID : 线程ID 优先级 / 标签] 日志信息 " , 输出以上提到的所有的头信息, 使用adb logcat -v long命令;
清空日志缓存信息: 使用adb logcat -c命令, 可以将之前的日志信息清空, 重新开始输出日志信息;
将缓存日志输出: 使用adb logcat -d命令, 输出命令, 之后推出命令, 不会进行阻塞;
输出最近的日志: 使用adb logcat -t 5命令, 可以输出最近的5行日志, 并且不会阻塞;
查看日志缓冲区信息: 使用adb logcat -g命令;
加载日志缓冲区: 使用adb logcat -b 缓冲区类型命令;
--Android中的日志缓冲区:
system缓冲区 - 与系统相关的日志信息,
radio缓冲区 - 广播电话相关的日志信息,
events缓冲区 - 事件相关的日志信息,
main缓冲区 - 默认的缓冲区;
过滤项解析
过滤项格式: [:priority] , 标签:日志等级, 默认的日志过滤项是 " *:I " ;