监控 Android 系统性能是优化系统、排查问题和提升用户体验的关键步骤。以下是一个详细的方案,涵盖从工具使用到自定义监控的实现方法。
1. 使用 Android 自带工具
1.1 adb
工具
adb
是 Android Debug Bridge 的缩写,是监控系统性能的基础工具。
1.1.1 查看 CPU 使用情况
adb shell top
-
输出:实时显示进程的 CPU 和内存占用。
-
参数:
-
-m <数量>
:显示指定数量的进程。 -
-d <秒数>
:刷新间隔时间。
-
1.1.2 查看内存使用情况
adb shell dumpsys meminfo
-
输出:显示系统内存使用详情,包括应用的内存占用。
1.1.3 查看电池状态
adb shell dumpsys batterystats
-
输出:显示电池使用情况,包括耗电应用和硬件模块。
1.1.4 查看网络状态
adb shell dumpsys netstats
-
输出:显示网络流量统计。
1.2 dumpsys
命令
dumpsys
是 Android 提供的系统服务状态查看工具。
1.2.1 查看 Activity 状态
adb shell dumpsys activity
-
输出:显示当前 Activity 栈和应用状态。
1.2.2 查看 CPU 使用率
adb shell dumpsys cpuinfo
-
输出:显示 CPU 使用率。
1.2.3 查看 GPU 状态
adb shell dumpsys gfxinfo
-
输出:显示 GPU 渲染性能。
1.2.4 查看电池状态
adb shell dumpsys battery
-
输出:显示电池电量、状态和健康信息。
1.3 logcat
日志工具
logcat
用于查看系统日志,帮助分析性能问题。
1.3.1 查看系统日志
adb logcat
-
输出:实时显示系统日志。
-
参数:
-
-s <标签>
:过滤指定标签的日志。 -
-v threadtime
:显示线程和时间信息。
-
1.3.2 保存日志到文件
adb logcat -d > log.txt
-
输出:将日志保存到文件。
2. 使用 Android Studio Profiler
Android Studio Profiler 是官方提供的性能分析工具,支持实时监控 CPU、内存、网络和电池。
2.1 启动 Profiler
-
打开 Android Studio。
-
连接设备或启动模拟器。
-
点击菜单栏的 View > Tool Windows > Profiler。
2.2 监控 CPU
-
查看 CPU 使用率、线程状态和函数调用栈。
-
支持录制 CPU 活动并生成火焰图。
2.3 监控内存
-
查看内存分配、垃圾回收和内存泄漏。
-
支持生成 Heap Dump 文件。
2.4 监控网络
-
查看网络请求、响应时间和流量统计。
2.5 监控电池
-
查看电池电量、耗电应用和硬件模块。
3. 使用第三方工具
3.1 Systrace
Systrace 是 Android 官方提供的性能分析工具,用于分析系统级性能问题。
3.1.1 生成 Systrace 报告
python systrace.py -o trace.html sched gfx view wm
-
参数:
-
-o <文件名>
:指定输出文件。 -
sched
、gfx
、view
、wm
:指定跟踪的模块。
-
3.1.2 查看报告
-
打开生成的
trace.html
文件,使用 Chrome 浏览器查看。 -
分析 CPU、GPU、渲染和系统调度的性能。
3.2 Perfetto
Perfetto 是 Android 新一代性能分析工具,支持更强大的跟踪和分析功能。
3.2.1 生成 Perfetto 报告
-
打开设备上的开发者选项,启用 System Tracing。
-
使用 Perfetto 工具录制跟踪数据:
adb shell perfetto --config :test --out /data/misc/perfetto-traces/trace.pftrace
3. 导出跟踪文件:
adb pull /data/misc/perfetto-traces/trace.pftrace
3.2.2 查看报告
-
打开 Perfetto UI,加载
trace.pftrace
文件。
4. 自定义性能监控
4.1 使用 proc
文件系统
Android 基于 Linux 内核,可以通过 /proc
文件系统获取性能数据。
4.1.1 查看 CPU 使用率
adb shell cat /proc/stat
-
输出:显示 CPU 的使用时间。
4.1.2 查看内存使用情况
adb shell cat /proc/meminfo
-
输出:显示内存使用详情。
4.1.3 查看进程状态
adb shell cat /proc/<pid>/status
-
输出:显示指定进程的状态信息。
4.2 编写脚本监控
使用 Shell 或 Python 脚本定期采集性能数据。
4.2.1 Shell 脚本示例
#!/bin/bash
while true; do
adb shell top -n 1 > top.log
adb shell cat /proc/meminfo > meminfo.log
sleep 5
done
4.2.2 Python 脚本示例
import subprocess
import time
while True:
subprocess.run(["adb", "shell", "top", "-n", "1"], stdout=open("top.log", "w"))
subprocess.run(["adb", "shell", "cat", "/proc/meminfo"], stdout=open("meminfo.log", "w"))
time.sleep(5)
5. 性能监控的最佳实践
-
定期监控:设置定时任务,定期采集性能数据。
-
数据分析:使用工具(如 Excel、Python Pandas)分析性能数据。
-
优化建议:根据性能瓶颈提出优化建议,如减少 CPU 占用、优化内存使用等。
-
自动化报告:编写脚本生成性能报告,方便团队共享和分析。
通过以上方案,你可以全面监控 Android 系统的性能,快速定位问题并优化系统表现。