一、工具介绍
-
Capture System Activities(System Trace)
系统轨迹抓取,等价于Perfetto,用来分析UI卡顿、主线程阻塞、Binder调用、页面启动耗时、ANR、窗口绘制流程。
适用:车机Launcher页面切换卡顿、桌面Widget加载掉帧、主线程耗时任务排查,功耗监测。
-
Analyze Memory Usage(Heap Dump)【你当前最需要】
堆转储快照,就是你上一张截图的内存泄漏检测功能。
✅ 用途:抓取Java堆内存,自动检测Leak内存泄漏、重复对象、残留Fragment/Activity,查看引用链定位强引用持有问题,直接解决
AicyWidgetFragment泄漏。✅ 操作:反复开关泄漏页面 → 点击该按钮Dump堆 → 分析Leaks列表。
-
Find CPU Hotspots(Callstack Sample)
CPU热点采样(抽样模式,性能开销小),统计哪些方法占用CPU过高,适合定位后台轮询、死循环、频繁UI刷新导致功耗过高。
-
Track Memory Consumption(Java/Kotlin Allocations)
实时Java对象分配追踪,记录每一个对象创建堆栈。
适用:观察Fragment反复创建、频繁GC、临时对象暴涨,定位哪里重复new了Widget Fragment实例。
-
Find CPU Hotspots(Java/Kotlin Method Recording)
CPU全量方法录制(精准模式,开销更大),完整记录所有方法调用耗时,用于深度优化耗时函数、主线程IO、嵌套循环。
-
Track Memory Consumption(Native Allocations)
Native层内存分配追踪,排查C/C++、JNI、图片Bitmap、OpenGL、车机底层SDK导致的Native内存泄漏、内存暴涨。
车机APP常用:排查车载SDK native句柄未释放、大图内存未recycle。
-
View Live Telemetry
实时遥测数据,直观查看CPU、内存、网络、电量、帧率实时曲线,宏观监控APP运行负载。
二、前置环境(不满足直接采集失败)
1. 版本与设备门槛
- IDE:Android Studio 2025.1.x Narwhal(2025正式版),AGP ≥ 7.3
- 测试设备:真机优先,API 29(Android10)及以上;模拟器功耗、Native内存数据失真,仅做逻辑排查
- 权限前提:手机开启USB调试,Android 11+额外开启无线调试可远程Profiler
2. Manifest核心配置(官方强制区分)
xml
<application
android:allowBackup="true"
<!-- 1. release包低损耗性能采集必备:profileable,仅采样CPU/功耗/线程,无法堆转储、方法插桩 -->
<profileable android:shell="true" />
<!-- 2. debug包自动隐含debuggable="true",完整数据采集权限全部开放 -->
>
说明:
.以下命令没效果,只能按上面配置
adb shell settings put global debug_app 包名
adb shell setprop debug.mono.extra.debuggable 1
关键权限红线(必须记死)
- ✅
debuggable=true(debug包):完整权限 → CPU插桩追踪、堆快照、对象分配录制、ANR堆栈、Native内存分析全部可用,性能开销大 - ✅
profileable=true(release包):低开销权限 → 仅采样CPU、System Trace、Energy功耗,不支持Heap Dump、Allocation追踪,线上真实性能摸底唯一方案
3. build.gradle 编译避坑配置
(1)构建类型混淆规则(解决方法名a/b/c无法定位)
gradle
android {
buildTypes {
debug {
minifyEnabled false // debug直接关闭混淆,性能分析最优
shrinkResources false
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// 给release加Profiler保留规则,否则trace堆栈全是混淆名
proguardFile 'proguard-profile-keep.pro'
}
}
// Kotlin lambda堆栈可追溯
kotlinOptions {
freeCompilerArgs += "-Xprofile"
}
}
(2)proguard-profile-keep.pro 通用保留规则(直接复制)
proguard
# 保留所有自定义业务类、Activity、Fragment方法名
-keep class shturl.cc/9.** { *; }
-keepclassmembers class * {
void *(...);
}
# 保留Compose重组标记
-keepnames class androidx.compose.runtime.**
三、打开Profiler
方式1:底部Tab一键打开(最常用)
IDE底部状态栏点击 Profiler 心电图图标,直接唤起面板
方式2:菜单栏唤起
View → Tool Windows → Profiler
四、录制启动两个核心选项
- Now:App已经打开了,现在直接附加上去录 → 日常卡顿、内存泄漏、滑动掉帧 ✅ 日常首选
- Process start :杀掉重启,从APP刚开机那一刻从头录 → 只用来测冷启动性能