用途:用于排查 Android/KMP 问题,遵循“先找根因再修复”的原则;三次猜测失败应停下质疑架构。
主要能力: 崩溃与异常:adb logcat --pid=$(adb shell pidof -s com.example.app) 按进程过滤;adb logcat -d > crash_log.txt 保存日志;adb logcat -s "YourTag:E" 按标签过滤。日志级别 V/D/I/W/E/F。应读完整 Caused by 链,根因常在底部。 ANR:adb pull /data/anr/traces.txt ./anr_traces.txt;或 adb logcat -s "ActivityManager:E" | grep -A 30 "ANR in"。关注主线程 MONITOR 或主线程阻塞 I/O,常见原因有主线程数据库/网络调用、主线程 runBlocking、协程作用域死锁。 内存泄漏:debugImplementation 引入 LeakCanary;adb shell am dumpheap 与 adb pull 导出堆转储供 Profiler 分析。 性能追踪:adb shell perfetto 采集系统级 trace,拉取后在 https://ui.perfetto.dev 用 SQL 查询。先测基线再修改。更深入的智能体驱动分析可参考 perfetto-sql、perfetto-trace-analysis 技能。 R8/ProGuard:用映射文件反混淆发布崩溃堆栈,./gradlew :app:retrace --stacktrace-file crash.txt 或 java -jar retrace.jar mapping.txt crash.txt。映射文件位于 app/build/outputs/mapping/<variant>/mapping.txt。keep 规则问题可检查 usage.txt 与 seeds.txt。第三方混淆代码可用 jadx --deobf 或 --deobf-map。 Gradle 构建失败:从下往上读错误,常见 Manifest 合并失败、重复类、无法解析依赖、D8/R8 类型缺失、KSP/KAPT 错误;可用 ./gradlew :app:dependencies --configuration releaseRuntimeClasspath 和 --stacktrace --info 排查。 运行时 UI 检查:android layout --pretty、--diff --pretty、--device=emulator-5554 -o layout.json,优先于截屏。 Compose 重组问题:Layout Inspector 显示重组计数;临时 SideEffect 记日志;避免在组合中创建 State,用 remember;检查 equals。Kotlin 2.0+ 默认强跳过模式。 多组件问题:在 Repository→ViewModel→UI 各边界加唯一会话标签(如 DEBUG-a4f2)日志,用 adb logcat -s "DEBUG-a4f2" 过滤,grep -rl 清理。
限制:不覆盖标准 adb 命令(devices、install -r、am start 等);反混淆不适用于非自有映射文件,需 jadx;避免加 Thread.sleep 修 ANR、不看映射文件猜 R8、随意 exclude 解依赖冲突;临时日志需清理。其他使用步骤与限制暂未提供。