ADB复杂命令拆解
1、获取包名方法一最简单直接手机正在运行该 Appadb shelldumpsys window|findstr mCurrentFocus快速查看当前手机屏幕上到底是哪个 App 的哪个页面Activity正处于显示状态。adb shell进入 Android 系统的 shell 环境。dumpsys window查询“窗口管理器服务”WindowManagerService的状态dumpsys是 Android 强大的系统诊断工具window参数会让它吐出当前手机所有关于窗口层级、焦点、状态栏等的海量信息。|(管道符)把前面dumpsys window产生的海量信息全部丢给后面的命令去“过滤”。findstr mCurrentFocus在 Windows 系统中搜索特定字符串。findstr是 Windows 命令行自带的搜索工具相当于 Linux 里的grep。mCurrentFocus是系统内部定义的一个变量名代表 “当前获取焦点的窗口”。输出结果示例执行后你通常会看到类似这样的一行mCurrentFocusWindow{66299b9 u0 com.zhiliaoapp.musically/com.ss.android.ugc.aweme.main.MainActivity}com.zhiliaoapp.musically这就是你上一条命令里提到的 包名TikTok。com.ss.android.ugc.aweme.main.MainActivity这就是具体的 页面名称。扩展知识点如果你是在Mac 或 Linux上要把findstr换成grepadb shell dumpsys window | grep mCurrentFocus在较新的 Android 版本中这个命令有时会失效推荐使用更准确的替代版adb shell dumpsys activity activities | findstr mResumedActivity2、logcat查日志adb logcat-v time*:E|findstr com.zhiliaoapp.musically这条命令的作用是在 Android 系统的日志流中实时过滤并显示 TikTok包名为com.zhiliaoapp.musically中「错误级别」以上的日志并附带时间戳。adb logcatadb 的一个子命令用于查看安卓系统的运行日志。-v time指定日志的输出格式。它会在每条日志前加上具体的日期和时间方便你追踪错误发生的精确时刻。*:E日志的过滤优先级设置。*: 表示匹配所有的日志标签Tag。:E: 表示只显示Error错误级别及以上的日志包括 Error 和 Fatal。它会过滤掉冗余的 Info、Debug 和 Warning 信息。|(管道符)将前一个命令adb logcat产生的输出传递给后一个命令findstr作为输入。findstr com.zhiliaoapp.musically在所有错误日志中进一步筛选出包含该包名的行从而精准定位该 App 的崩溃或异常。命令只是将日志打印在屏幕上一旦关闭命令行窗口日志就丢失了。进一步我们可以通过重定向操作符将输出流保存到本地文件中。方案 A直接保存到文件屏幕不再显示日志adb logcat -v time *:E | findstr com.zhiliaoapp.musically tiktok_error.log: 会创建一个名为tiktok_error.log的文件。如果文件已存在会覆盖旧内容。: 如果你想追加内容而不是覆盖请使用两个大于号。方案 B既在屏幕查看又保存到文件推荐Windows 原生命令不直接支持这个功能但你可以借助powershell的Tee-Object来实现adb logcat -v time *:E | findstr com.zhiliaoapp.musically| tee tiktok_error.log这样你既能看到实时滚动的错误后台也会实时写入文件。进一步优化建议如果你的目的是为了分析App 崩溃 (Crash)仅仅依靠findstr包名可能会漏掉关键信息因为有时候系统报错并不会带上包名。建议尝试以下组合1.保存完整的 Error 日志不限定包名后期再手动搜包名adb logcat -v time *:E all_errors.log理由很多时候 App 报错是由系统组件引起的只过滤包名可能会导致上下文缺失。2.清空旧日志再开始在执行保存命令前先运行一次adb logcat -c。理由Android 的日志缓冲区很大不清理的话你会把几天前的旧错误也存进新文件里。操作流程建议执行adb logcat -c(清理旧日志)执行adb logcat -v time *:E | findstr com.zhiliaoapp.musically error.log在手机上操作 TikTok 复现问题。按下Ctrl C停止捕获打开电脑上的error.log查看。