一个可复用的 AI Agent Skill,用于 Android App 的性能检查、修复和回归验证。
静态分析发现问题并修复;动态分析定位热点并优化;在同一场景回归,确认性能与功能。
适用于 Jetpack Compose、View/XML 和混合项目,不绑定特定 App、包名、SDK 路径或设备。它是一套社区维护的工作流,调用使用者安装的官方 Android skills,并非 Google 官方产品。
| 阶段 | 主要工作 | 交付结果 |
|---|---|---|
| 静态检查 | 检查状态更新、布局测量、预取、图片加载、主线程工作与生命周期 | 有代码依据的问题和优化候选 |
| 静态修复 | 在指定范围减少重复工作,保留现有功能和交互 | 修改代码、静态验证和待测假设 |
| 动态分析 | 在真机或模拟器执行场景、采集 trace、验证样本有效性 | 与实际操作对应的性能证据 |
| 针对性优化 | 根据 CPU、布局、渲染、等待或内存证据处理热点 | 可解释、可回归的改动 |
| 回归验证 | 确认新版 APK 已部署,复用场景比较并检查功能 | 前后结果、波动范围和未覆盖项 |
可以从任一阶段开始,不要求每次都重跑完整流程。只要求分析时,不会擅自修改业务代码。
flowchart TD
A[确认项目、场景与操作约束] --> B[静态检查]
B --> C[修复明确问题并做静态验证]
C --> D[确认已安装 APK 身份]
D --> E[执行场景并采集动态基线]
E --> F{样本有效?}
F -- 否 --> G[定位采集或环境问题]
G --> E
F -- 是 --> H[分析热点并针对性优化]
H --> I{包含修复的新 APK 已部署?}
I -- 否 --> J[在授权范围部署,或报告等待新版]
J -- 已部署 --> K[同场景性能与功能回归]
I -- 是 --> K
K --> L{达到目标且无相关功能回退?}
L -- 否 --> H
L -- 是 --> M[交付结果和证据]
静态修改后仍可采样旧 APK,但这只能作为旧版基线。只有包含修复的新版 APK 已部署,才能验证代码优化效果。连续出现相同采集失败时,应先排查原因,不无限重录。
- 一个支持
SKILL.md的 AI agent,能够读取项目文件、执行终端命令。不同 agent 的发现目录和调用语法以其文档为准。 - Android CLI,或已配置的官方 Android skills 插件。参见 官方文档和官方仓库。
- 动态分析需要 Android SDK platform-tools、已授权的真机或模拟器,以及可运行的目标 App。具体数据源、工具和系统版本要求以官方 profiler skill 为准。
仅静态检查不需要连接设备。本仓库本身是 Markdown 工作流,没有执行脚本,也不打包 Android SDK、官方 skills 或 Perfetto 二进制;下游工具可能有自己的运行依赖。
下载或 clone 本仓库,将包含 SKILL.md 的整个目录放入 agent 的技能发现目录,保留 references/ 子目录。
例如,Codex 用户的全局安装位置为:
${CODEX_HOME:-$HOME/.codex}/skills/android-performance-workflow/
其他 agent 使用各自支持的目录;也可以按 agent 的规则进行项目级安装。目标目录已存在时,先比较内容,避免覆盖定制版本。安装后按 agent 的要求刷新技能或开启新会话。
本 skill 不依赖其他个人 skill,不会在安装时修改全局配置、构建项目或操作设备。
先查看当前 Android CLI 的帮助和目录:
android skills --help
android skills list --long
android skills find performance
android skills find compose
android skills add --help确认当前 CLI 支持以下参数后,Codex 用户可以安装:
android skills add --agent=codex android-profiler
android skills add --agent=codex jetpack-compose-performance其他 agent 应使用 CLI 支持的对应名称。项目级安装按当前帮助使用 --project 参数。View/XML 项目不必安装 Compose 专项技能。
这里的 android skills 属于 Android CLI,不是旧版 Android SDK 的 android 命令。技能安装完成后,agent 需要读取其 SKILL.md 并执行工作流;本项目没有 android skills run 命令。
将请求交给 agent。以下 $android-performance-workflow 是显式调用示例,具体语法取决于 agent。
使用 $android-performance-workflow 检查首页展开和图片列表滚动的性能。
先做静态分析并修复有明确代码依据的问题,保留现有功能,暂时不要编译。
使用 $android-performance-workflow 分析已连接设备上的 App。
目标是冷启动、列表滚动、停滚静置和后台恢复。
使用现有 APK,先记录版本身份,自动操作并采集有效 trace,不编译、不修改代码。
设备不支持自动触摸注入。使用 $android-performance-workflow 准备录制,
等我确认目标页面就绪,再开始采集并告诉我分段操作步骤。
根据上一轮有效 trace,优化已经确认的布局和主线程热点。
保留功能和交互,避免同时大范围重写,暂不编译。
完成后说明哪些问题已修复,哪些还需要新版 APK 验证。
包含修复的 APK 已安装到同一设备。
使用 $android-performance-workflow 核对版本,按之前同一场景做性能与功能回归。
比较相同口径的数据,并记录样本波动和未覆盖项。
使用 $android-performance-workflow 完成指定列表的性能优化。
允许构建调试 APK,并安装到指定测试模拟器进行功能回归。
保留应用数据,发布版性能基准另行安排。
- 默认不编译、不重装。 可在具体任务中明确授权;已经授权的操作不重复确认。
- 保留现有功能。 不通过隐藏入口、删减内容、停掉必要动画或绕过权限来换取性能指标。
- 确认操作确实发生。 错页、没有实际滚动、读取旧 UI 文件或目标阶段被 trace 缓冲覆盖的样本,不算有效回归。
- 区分计算与等待。 墙钟耗时不等于 CPU 耗时,后台 GC 总时长不等于 UI 暂停,渲染长等待不自动等于图片解码慢。
- 保持对照条件。 使用相同设备、构建类型、素材、初始状态和操作脚本,记录改变的条件与样本波动。
- 区分诊断和基准。 Debug APK、JIT 与模拟器数据可用于定性定位,但不能直接当作发布版真机表现。
- 不夸大完成度。 未部署新版时报告“静态修复完成,动态回归待新版”;短时内存增长不能直接证明泄漏。
项目本身的协作规则、当前用户约束和工具权限仍然适用。
报告保存到目标项目约定位置,包含:
- 测试对象、APK 身份、设备和实际执行的场景。
- 静态发现、动态证据、推断及尚缺证据。
- 修改内容及其功能影响。
- 同口径前后数据、异常样本排除原因和功能回归结果。
- 已执行与未执行的验证,以及 trace、配置、事件记录和可复现查询的位置。
本仓库不附带某个 App 的性能分数,也不承诺固定百分比收益。实际效果需要在目标项目上测量。
android-performance-workflow/
├── SKILL.md
├── README.md
├── VALIDATION.md
├── LICENSE
└── references/
└── recording-and-regression.md
- SKILL.md:agent 的工作流入口。
- 录制与回归规则:采样有效性、统计口径和对照要求。
- VALIDATION.md:维护者的结构检查与行为验收案例。案例是验收要求,不代表所有 agent 都已验证通过。
本仓库原创内容采用 MIT License。官方 Android skills 及其调用的工具保留各自许可证;本仓库仅链接并编排使用它们,不重新分发其实现。