ADB复杂命令拆解

1、获取包名

方法一:最简单直接(手机正在运行该 App)

adb shell dumpsys 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 是系统内部定义的一个变量名,代表 "当前获取焦点的窗口"。

输出结果示例:

执行后你通常会看到类似这样的一行:mCurrentFocus=Window{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 换成 grep:
    adb shell dumpsys window | grep mCurrentFocus
  • 在较新的 Android 版本中,这个命令有时会失效,推荐使用更准确的替代版:
    adb shell dumpsys activity activities | findstr mResumedActivity

2、logcat查日志

adb logcat -v time *:E | findstr com.zhiliaoapp.musically

这条命令的作用是:在 Android 系统的日志流中,实时过滤并显示 TikTok(包名为 com.zhiliaoapp.musically)中「错误级别」以上的日志,并附带时间戳。

adb logcat:adb 的一个子命令,用于查看安卓系统的运行日志。

-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 的日志缓冲区很大,不清理的话,你会把几天前的旧错误也存进新文件里。


操作流程建议:

  1. 执行 adb logcat -c (清理旧日志)

  2. 执行 *adb logcat -v time :E | findstr com.zhiliaoapp.musically > error.log

  3. 在手机上操作 TikTok 复现问题。

  4. 按下 Ctrl + C 停止捕获,打开电脑上的 error.log 查看。


相关推荐
德思特33 分钟前
德思特混频器参数详解:5MHz–40GHz 宽频段与低噪声 LO 设计
测试工具·自动化·射频工程
wuyk55510 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 33 章 Wireshark 无线抓包环境搭建、802.11 帧过滤规则
物联网·测试工具·wireshark
ao-weilai1 天前
MySQL数据库:用户管理
数据库·mysql·adb
Gl�ria2 天前
MySQL 单机版 vs 高可用版:宕机排查 + 故障处理
mysql·adb·架构
螺蛳粉 螺蛳粉2 天前
第四篇:Keepalived + MySQL 主从高可用实战
数据库·mysql·adb·keepalived·高可用
晚风叙码2 天前
MySQL 表的约束详解:从空属性到外键
android·数据库·mysql·adb
应用市场3 天前
把旧 Pixel 变成相册备份中转站(上):Mac 到安卓的照片传输工具设计——流式上传、sha256 校验、adb forward 与 Bonjour
android·macos·adb·kotlin·swift
我的xiaodoujiao3 天前
Django 基础知识详细图文教程 13-Django 模型定义与使用 3
数据库·后端·python·测试工具·oracle·django
Felven4 天前
stress-ng 与 fio 性能测试工具使用指南
linux·测试工具·fio·stress-ng
H_unique5 天前
Chat2Excel:接口自动化测试
python·测试工具·自动化