Android-性能-Android Studio 2025 Profiler-教程

一、工具介绍

  1. Capture System Activities(System Trace)

    系统轨迹抓取,等价于Perfetto,用来分析UI卡顿、主线程阻塞、Binder调用、页面启动耗时、ANR、窗口绘制流程。

    适用:车机Launcher页面切换卡顿、桌面Widget加载掉帧、主线程耗时任务排查,功耗监测。

  2. Analyze Memory Usage(Heap Dump)【你当前最需要】

    堆转储快照,就是你上一张截图的内存泄漏检测功能。

    ✅ 用途:抓取Java堆内存,自动检测Leak内存泄漏、重复对象、残留Fragment/Activity,查看引用链定位强引用持有问题,直接解决AicyWidgetFragment泄漏。

    ✅ 操作:反复开关泄漏页面 → 点击该按钮Dump堆 → 分析Leaks列表。

  3. Find CPU Hotspots(Callstack Sample)

    CPU热点采样(抽样模式,性能开销小),统计哪些方法占用CPU过高,适合定位后台轮询、死循环、频繁UI刷新导致功耗过高。

  4. Track Memory Consumption(Java/Kotlin Allocations)

    实时Java对象分配追踪,记录每一个对象创建堆栈。

    适用:观察Fragment反复创建、频繁GC、临时对象暴涨,定位哪里重复new了Widget Fragment实例。

  5. Find CPU Hotspots(Java/Kotlin Method Recording)

    CPU全量方法录制(精准模式,开销更大),完整记录所有方法调用耗时,用于深度优化耗时函数、主线程IO、嵌套循环。

  6. Track Memory Consumption(Native Allocations)

    Native层内存分配追踪,排查C/C++、JNI、图片Bitmap、OpenGL、车机底层SDK导致的Native内存泄漏、内存暴涨。

    车机APP常用:排查车载SDK native句柄未释放、大图内存未recycle。

  7. View Live Telemetry

    实时遥测数据,直观查看CPU、内存、网络、电量、帧率实时曲线,宏观监控APP运行负载。


二、前置环境(不满足直接采集失败)

1. 版本与设备门槛

  1. IDE:Android Studio 2025.1.x Narwhal(2025正式版),AGP ≥ 7.3
  2. 测试设备:真机优先,API 29(Android10)及以上;模拟器功耗、Native内存数据失真,仅做逻辑排查
  3. 权限前提:手机开启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

四、录制启动两个核心选项

  1. Now:App已经打开了,现在直接附加上去录 → 日常卡顿、内存泄漏、滑动掉帧 ✅ 日常首选
  2. Process start :杀掉重启,从APP刚开机那一刻从头录 → 只用来测冷启动性能
相关推荐
码农coding17 小时前
android16 SystemUI之StatusBar启动
android
朱涛的自习室17 小时前
一个 7 x 24 小时为你打工的 AI,Munk AI 开始内测
android·前端·人工智能
李斯维18 小时前
腾讯 Mars XLog 日志框架的编译和修改
android
2501_9160088918 小时前
iOS IPA文件反编译与打包操作方法,拆包分析防护和加固打包
android·macos·ios·小程序·uni-app·cocoa·iphone
summerkissyou198718 小时前
Android16-性能-Perfetto的pbtxt 完整配置大全
android·性能
小白说大模型21 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·java·人工智能·windows·python
小小勇气大爆发21 小时前
Android17适配总结
android
开源推荐官1 天前
getInvoice 是回填不是开票,Tigshop开源商城发票接口理一理
android·开源·php
醉城夜风~1 天前
HTML表单域学习博客:表单标签、输入框、按钮详解
android·java·缓存