免费开发工具 · Jetpack Compose
Compose 编译器报告读取器
将编译器报告整理为可搜索的函数列表,查看 restartable、skippable 标签和 unstable 参数。粘贴纯文本即可开始。
报告仅在当前标签页处理。读取器不会上传内容,也不会将内容写入分析事件、URL 或浏览器存储。网站仍可能独立记录普通页面访问。离开此页会清除输入;只有点击「复制摘要」时才会写入剪贴板。
仅支持纯文本。上限:500,000 个字符、15,000 行、1,000 个函数。结果每次显示 100 个函数。
准备好了。粘贴报告,或载入示例。
编译器标签汇总
- 函数
- 0
- 可重启
- 0
- 可跳过
- 0
- 未标记可跳过
- 0
- 不稳定参数
- 0
统计包含已识别的 readonly 与不可重启函数,仅描述声明上的标签,不是性能评分。
结果能说明什么?
读取器展示的是编译器标签,不能测量重组次数、帧耗时或卡顿。缺少 skippable
标签不等于性能缺陷;只有运行时测量指向相关问题时,才值得进一步排查。
restartable 表示可作为重组入口;skippable 表示编译器允许跳过该函数。参数稳定性是另一类标签。详见 Android
官方的报告解读与稳定性诊断文档。
unstable 不等于不可跳过
Kotlin 2.0.20 起默认启用强跳过模式(strong
skipping)。启用后,可重启函数即使包含不稳定参数,也能被标记为可跳过;不可重启函数仍不可跳过。函数也可以通过 @NonSkippableComposable 主动退出跳过。
判断能否跳过时,不稳定参数使用实例相等性(===)比较,稳定参数使用对象相等性(equals
)比较。本工具只读取报告中的明确标签,不推断你的编译器设置。详见
官方强跳过模式文档。
生成 release 报告
如果模块已经应用 Compose compiler Gradle 插件,将下方配置加入该模块的 build.gradle.kts,然后构建相应的 release
变体。Android 官方建议使用 release 构建,以获得准确的报告。
// Module build.gradle.kts, with the Compose compiler Gradle plugin applied
composeCompiler {
reportsDestination = layout.buildDirectory.dir("compose-reports")
}
// Run the relevant release variant; replace :app if needed
// ./gradlew :app:assembleRelease
打开模块的 build/compose-reports/ 输出目录,找到以 -composables.txt
结尾的文件(也可能位于目标平台子目录中),将内容粘贴到上方。如果任务显示已是最新且没有生成报告,可为相应编译任务加上 --rerun-tasks 后重新运行。
支持格式与边界
支持纯文本函数声明:单行 fun 头部、可选的编译器标签与 scheme(...),以及标记为 stable、
unstable、runtime 或 unknown 的参数。支持嵌套调用和常见的多行 lambda
默认值。示例仅用于演示,不是性能基准。
不支持 CSV、类报告、Kotlin 源码,也不保证兼容所有编译器版本的格式。无法识别或不完整的函数块会被排除,并显示部分识别警告;完全无法识别时不会输出统计。大报告可按完整函数声明拆分。上限为 500,000 个字符、15,000 行和 1,000 个已识别函数。
从报告走向性能排查
先在已经测量到的慢交互中定位函数,再查看参数,并比较针对性修改前后的运行表现。不要为了提高某个计数,就尝试修改所有稳定性标签。
完整排查流程可继续阅读:Jetpack Compose 重组与性能优化。