logcat 查看当前应用日志

目标 & 背景

平时有很多场景需要查看安卓的真机日志,但是要过滤当前应用的日志,终归需要获取当前包名,由于我司游戏比较多,再加上各自有各自的渠道,包名也没有规律可循,每次都要查对应的包名很烦

再加上安卓系统不一样,有些手机可以直接看,有些又不能

本篇文章主要内容会把这个功能封装成 shell 的一个指令

获取当前的包名

通过 dumpsys 就可以获取到当前应用的具体内容

adb shell dumpsys window | grep mCurrentFocus

此时会获得如下结果

mCurrentFocus=Window{8e0a37a u0 com.xxx.xxx/com.xxx.xxxActivity}

我们只需要第一个 / 前的 com.xxx.xxx 内容,因此直接 cut 即可

adb shell dumpsys window | grep mCurrentFocus | cut -d " " -f 5 | cut -d "/" -f 1

通过包名获取 pid

填入包名

adb shell pidof -s com.xxx.xxx

输出日志

填入 pid

adb logcat -v color --pid=xxx

封装

我使用的环境为 Mac 的 zsh,因此最后将这些内容写进 .zshrc 文件中

alias curapkname='adb shell dumpsys window | grep mCurrentFocus | cut -d " " -f 5 | cut -d "/" -f 1'

logcur()
{
    bundle=`curapkname`
    pid=`adb shell pidof -s $bundle`
    adb logcat -v color --pid=$pid
}

最后插上手机,在命令行中输入 logcur 即可查看当前应用的日志了