SuperAPI AI 工具集

debugging-recompositions

测试与质量

查看项目

更新于 10-16 00:21

技能介绍

用途:这是诊断层技能,用于找出哪些 Jetpack Compose 可组合项正在重组以及原因;它本身不修复重组,只定位到具体可组合项与具体参数,修复交由稳定性、强跳过、阶段延迟等相关技能。

主要能力:使用 Android Studio Layout Inspector 的“重组计数”和“重组跳过计数”,在组件树中显示每个节点的 重组/跳过 比;使用 Hedgehog(2023.1.1)及以后版本 Layout Inspector 的 Argument Change Reasons 面板,按参数给出 Changed / Unchanged / Uncertain / Static / Unknown 分类;使用 compose-stability-analyzer 的运行时 @TraceRecomposition 在 release / R8 / 真机环境做最终确认。

必要用法:在 debug 构建连接设备或模拟器运行,打开 Android Studio → Tools → Layout Inspector,开启两个计数开关;复现场景前先用 Reset 重置累计计数(计数是累计值);执行怀疑引发卡顿的操作,观察哪个可组合项计数异常增长;点击该节点查看每个参数的变更原因分类;按状态映射后续修复方向(Uncertain / Unknown 常指向类型稳定性,Changed 可能来自 lambda 捕获或错误阶段的 state 读取);最后在 release + R8 构建用 @TraceRecomposition 确认真实数字,例如 @TraceRecomposition(traceStates = true) 标注可疑可组合项,用 adb logcat -s Recomposition:D 查看输出。

适用场景:开发者说“本该跳过却没有跳过”“父级每次刷新它都重跑”,或需要验证某次稳定性修复在 release 是否真正生效。

限制:debug 构建使用解释执行与 Live Literals,计数会偏高,只能作为方向性信号,不能当作最终数字;Layout Inspector 需要 debug 构建;Argument Change Reasons 需要 Hedgehog 或更高版本;若需 CI 防回归、或需要修复本身,应使用对应的兄弟技能。未提供收费信息。