我用 AI 搭了个 Android 性能分析工具,踩了不少坑

8 阅读3分钟

我用 AI 搭了个 Android 性能分析工具,踩了不少坑

做 Android 这么多年,性能优化一直是件让人头疼的事。

你肯定遇到过这种场景:用户反馈列表滑动卡顿,你打开 Android Profiler 抓了一堆数据,CPU 调用链几百层深,看了半天也定位不到问题在哪。

市面上有一些工具,但大多要么需要 Root,要么要改业务代码接入 SDK,要么就是只给个耗时数据让你自己去猜。

我想做一个东西:丢一个 trace 过去,它告诉我哪个类的哪个方法慢了、为什么慢、怎么改。

就这么个想法,断断续续搞了几周,算是跑起来了。

做了什么

项目叫 SmartInspector,一个 CLI 工具,跑在终端里。

核心流程就三步:

连手机 → 自动采集 trace → AI 分析 → 出报告

比如你在终端输入 /trace app,它会通过 adb 采集 Perfetto trace,然后自动分析 CPU、帧渲染、内存、IO 这些指标,最后给一份 Markdown 格式的报告。

最实用的是源码归因——它不只是说"第 23 帧耗时 156ms",而是会告诉你:

MainActivity.onCreate() 里调了 loadData(),里面 Gson.fromJson() 在主线程解析了一个 2.3MB 的 JSON。建议挪到子线程或者用流式解析。

还能分析布局文件,帮你找嵌套过深和过度绘制的地方。

怎么实现的

架构不复杂:

CLI → 意图路由 → 采集 → 分析 → 归因 → 报告

关键的设计思路是确定性流程用代码,需要"理解"的部分用 AI

  • 意图路由:few-shot prompt 分类,max_tokens=5,基本不会出错
  • trace 采集和 SQL 查询:纯代码,调用 Perfetto 的 TraceProcessor
  • 源码归因:AI 拿着耗时方法名去项目源码里找对应位置
  • 报告生成:AI 把分析结果写成人类能读的报告

说白了就是把大问题拆成小问题,每个小问题让 AI 只做一件事,准确率就上去了。

AI 辅助开发的真实感受

说实话,一开始也没想到能靠 AI 搞出来。试了几轮之后有几点体会:

爽的地方

一个完整的 pipeline 从需求到能跑,大概 3 周。纯自己写我估计要 2 个月以上。特别是写那种"架构搭架子"的代码,你把需求描述清楚,AI 帮你出模块划分和接口定义,你负责拍板就行。

修 Bug 也是,有个布局文件后缀识别的问题,我把日志贴给 Claude Code,它直接定位到 attributor.py 里的条件判断逻辑,改了一行就好了。

不爽的地方

AI 不会主动发现需求变更。一开始没考虑鸿蒙支持,后来要加,它不会提醒你"这个架构应该提前考虑跨平台"。

复杂 Bug 还是得自己来。有个 trace 数据覆盖的问题,AI 改了 3 次都没对,最后我自己看代码才找到原因。它擅长写新代码,不擅长在复杂状态机里找逻辑错误。

还有 Token 消耗。多 Agent 协作的模式,分析一个 trace 要跑好几轮 LLM 调用,成本不低。

一些实际数据

  • 从零到第一个可用版本:约 3 周
  • Python 约 3000 行,Kotlin 约 800 行
  • AI 生成比例约 70%,剩下 30% 是手写和重构
  • Bug 修复成功率约 60%,复杂逻辑问题基本靠人

项目地址

开源了,感兴趣的同学可以看看:

github.com/mufans/AppS…

目前还在早期阶段,很多功能在持续迭代。后面打算支持鸿蒙平台,增加 GPU 渲染分析,再做 CI/CD 自动检测。

欢迎提 issue 和 PR,也欢迎交流 AI 辅助开发的经验。


这是「AI码上见」专栏的第一篇,后续会持续分享用 AI 搞开发的真实经历。