这是一个基于 Google Perfetto 的 Android 性能监控 SDK,支持多版本 Android 设备(Android 9 - 15+)的自动化性能数据采集、分析与持久化。
- 多版本适配策略:
- Android 9 - 11:自动下发
tracebox二进制文件,补充 FPS/GPU/Battery 等无法通过 Perfetto 直接获取的指标。 - Android 12:使用系统内置
perfetto,针对性优化的采集策略。 - Android 13+:完整利用系统 Perfetto 能力,结合 ADB 补充采集。
- Android 9 - 11:自动下发
- 全维度指标采集:
- FPS:支持 SurfaceFlinger 刷新率统计。
- CPU:核心频率 (Freq)、使用率。
- GPU:Adreno GPU 显存与负载 (针对特定机型适配)。
- Memory:应用 RSS 内存占用。
- Battery:电池温度、电量与放电状态。
- 高性能架构:
- 管道式处理 (Pipeline):采集 -> 拉取 -> 解析 -> 存储 流程化处理。
- Redis 实时存储:使用 ZSET 索引时间戳,支持秒级数据查询与回放。
- 低侵入性:智能时间对齐与本地缓存优化,大幅减少 ADB IO 压力。
python-sdk/
├── configs/ # 配置中心
│ ├── settings.py # 环境初始化与全局配置
│ └── models.py # Pydantic 数据模型定义
├── engine/ # 核心引擎
│ ├── controller.py # 总控调度器
│ ├── pipeline.py # 数据处理流水线
│ └── strategies/ # 分版本适配策略 (Strategy Pattern)
│ ├── android_9/ # A9-A11 适配 (Tracebox)
│ ├── android_12/ # A12 适配
│ └── android_12_higher/ # A13+ 适配
├── utils/ # 通用工具集
│ ├── adb/ # ADB 命令执行器 (自动重试/编码处理)
│ ├── analysis/ # Trace 文件解析 (SQL 查询提取)
│ ├── device/ # 设备信息获取
│ ├── storage/ # 数据持久化 (Redis)
│ └── perfetto/ # Perfetto 进程管理
└── resources/ # 静态资源
├── pbtxs/ # Perfetto 采集配置文件
└── sqls/ # Trace Processor 查询语句
- Python 3.10+
- Redis Server (需启动)
- ADB (需配置到环境变量)
本项目使用 Poetry 进行依赖管理。
# 安装项目依赖
poetry install
# 激活虚拟环境
poetry shell复制 .env.example 为 .env 并修改配置:
# Redis 配置
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
# 设备与采集配置
PACKAGE_NAME=com.example.app # 监控的目标包名
INTERVAL=2 # 循环采集间隔(秒)
CLIENT_PATH=/data/local/tmp # 手机端临时目录
TEMP_PATH=./tmp # 本地临时数据保存目录通过以下地址下载 tracebox 工具包(如果需要9 ~ 12 版本安卓监控的话) https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v53.0/android-arm64/tracebox
直接运行入口文件:
python entrypoint.py程序会自动识别连接设备的 Android 版本,选择对应的采集策略启动监控。
数据存储在 Redis 中:
- 实时数据:
metric:{device_serial}:{timestamp}(JSON 字符串) - 时间索引:
metrics_index:{device_serial}(Sorted Set)
如需适配新的 Android 版本或特定机型:
- 在
engine/strategies/下新建版本目录。 - 继承并实现
TraceProcessorManager接口。 - 在
configs/settings.py中注册新的版本映射逻辑。