Android 默认的日志记录方式

dumpsys 的作用

dumpsys 是 Android 系统中一个功能强大的诊断工具,主要用于:

  1. 系统服务状态查询:获取正在运行的 system services 的状态信息
  2. 调试分析:检查内存、电池、网络、Activity、进程等状态
  3. 性能分析:分析应用性能问题,检查服务运行状况
  4. 故障排查:诊断系统或应用异常
  5. 信息导出:生成系统状态快照供后续分析

常用命令示例:

bash 复制代码
# 查看所有可用的系统服务
dumpsys -l

# 查看 Activity 状态
dumpsys activity activities

# 查看内存信息
dumpsys meminfo

# 查看电池状态
dumpsys batterystats

# 查看特定包名的信息
dumpsys package com.example.app

Android 默认的日志记录方式

1. Logcat(最常用)

  • 系统日志:内核、系统服务、应用日志
  • 实时查看adb logcat
  • 过滤级别:V/D/I/W/E(Verbose/Debug/Info/Warning/Error)
  • 缓冲区:main, system, events, radio, crash 等

2. System Tracing (Perfetto/Systrace)

  • 性能跟踪:CPU、GPU、内存、功耗、应用启动等

  • 图形化分析 :Chrome 浏览器打开 .perfetto-trace.html 文件

  • 启用方式:

    bash 复制代码
    # 命令行捕获
    adb shell perfetto --config :test --out /data/misc/perfetto-traces/trace.perfetto-trace
    
    # 或使用 Systrace
    python systrace.py -o trace.html sched gfx view wm

3. Bug Report

  • 完整系统快照:包含 logs、dumpsys、tombstones、ANR traces 等

  • 生成方式:

    bash 复制代码
    adb bugreport
    # 或设备上:设置 → 开发者选项 → 错误报告

4. ANR Traces

  • 应用无响应/data/anr/traces.txt

  • 获取方式:

    bash 复制代码
    adb pull /data/anr/traces.txt

5. Tombstones

  • Native 层崩溃/data/tombstones/
  • 用于分析 C/C++ 层崩溃

6. Dropbox

  • 系统异常收集:crash、ANR、watchdog、低内存等
  • 位置:/data/system/dropbox/

7. Event Log (events 缓冲区)

  • 系统事件:安装、启动、点击等系统事件
  • 查看:adb logcat -b events

8. Kernel Log (kmsg/dmesg)

  • 内核日志:驱动程序、内核事件

  • 查看:

    bash 复制代码
    adb shell dmesg
    adb shell cat /proc/kmsg

9. Mainline Logs

  • 模块化组件日志:Google Play 系统更新模块日志

控制台常用打印/调试命令

系统状态类

bash 复制代码
# 进程和内存
adb shell ps -A                 # 所有进程
adb shell top                   # 实时进程状态
adb shell procrank              # 进程内存排名
adb shell showmap <pid>         # 进程内存映射

# 系统属性
adb shell getprop               # 所有系统属性
adb shell wm size               # 屏幕分辨率
adb shell dumpsys window displays # 显示信息

# 包管理
adb shell pm list packages      # 所有应用包名
adb shell dumpsys package <pkg> # 包详细信息

性能分析类

bash 复制代码
# CPU/GPU
adb shell cpuinfo               # CPU信息
adb shell dumpsys gfxinfo       # 图形性能
adb shell dumpsys SurfaceFlinger --latency # 帧率

# 电池和功耗
adb shell dumpsys batterystats --reset
adb shell dumpsys battery       # 电池状态

# 网络
adb shell netstat               # 网络连接
adb shell dumpsys netstats      # 网络统计
adb shell dumpsys connectivity  # 连接状态

存储和文件

bash 复制代码
adb shell df                    # 磁盘空间
adb shell du -sh /path          # 目录大小
adb shell ls -la /data/logs/    # 日志文件列表

调试辅助

bash 复制代码
# 输入事件
adb shell input keyevent KEYCODE_HOME    # 模拟按键
adb shell input tap x y                  # 模拟点击
adb shell input swipe x1 y1 x2 y2        # 模拟滑动

# 截图和录屏
adb shell screencap /sdcard/screen.png
adb shell screenrecord /sdcard/demo.mp4

广播和组件

bash 复制代码
# 发送广播
adb shell am broadcast -a <action>

# 启动组件
adb shell am start -n <component>
adb shell am startservice <component>

# Activity 栈
adb shell dumpsys activity intents
adb shell dumpsys activity broadcasts

实用技巧

bash 复制代码
# 同时查看多个日志源
adb logcat -b main -b system -b events -b crash

# 按优先级过滤
adb logcat *:E    # 只显示错误
adb logcat *:W    # 警告及以上

# 按标签过滤
adb logcat -s ActivityManager PackageManager

# 清空日志
adb logcat -c

这些工具组合使用可以全面诊断 Android 系统的各种问题,从应用崩溃到性能优化,从系统异常到功耗分析。

相关推荐
小蜜蜂嗡嗡4 小时前
flutter实现付费解锁内容的遮挡
android·flutter
进击的cc4 小时前
拒绝背诵!一文带你打穿 Android ANR 发生的底层全链路
android·面试
进击的cc4 小时前
App 启动优化全家桶:别再只盯着 Application 了,热启动优化你真的做对了吗?
android·面试
彭波3965 小时前
安卓手机端安装xapk、apkm软件!怎样安装xapk软件?安卓的apk和XAPK的区别?附教程
android·智能手机
Yang-Never5 小时前
ADB ->adb shell perfetto 抓取 trace 指令
android·开发语言·adb·android studio
2501_937189238 小时前
莫凡电视:地方台专属聚合 稳定直播播放工具
android·源码·源代码管理
耶叶9 小时前
Android 新权限申请模型(Activity Result API)
android
阿拉斯攀登9 小时前
【RK3576 安卓 JNI/NDK 系列 04】JNI 核心语法(下):字符串、数组与对象操作
android·驱动开发·rk3568·瑞芯微·rk安卓驱动·jni字符串操作
2501_915909069 小时前
不用越狱就看不到 iOS App 内部文件?使用 Keymob 查看和导出应用数据目录
android·ios·小程序·https·uni-app·iphone·webview
llxxyy卢9 小时前
web部分中等题目
android·前端