创作不易,希望能一键三连哦~点赞、保藏、加重视➕,随用随学不走失~

Perfetto 是 Google 开源的一款 Android & Linux 功能追踪与剖析东西。它能够协助开发者剖析 App 的功能体现,找到功能瓶颈,并进行优化

  • Perfetto 官方源码链接地址 github.com/google/perf…
  • Perfetto 在线剖析东西 ui.perfetto.dev/
  • 也可用Android Studio自带东西Profiler进行剖析(有一点点卡,但便利不依赖网络)

Perfetto 的主要功能包含:

  • 搜集盯梢和功能数据: 它能够trace Android平台上的各种体系和运用组件,获取具体的履行信息和功能数据。
  • 实时剖析和检查数据: 在数据搜集过程中,能够实时生成交互式的剖析陈述,协助开发者快速找到功能问题。
  • 保存和导出数据: 搜集的数据能够保存到本地文件或上传到 Perfetto 剖析服务,便利分享和长时刻剖析。
  • 定制盯梢装备: 开发者能够自定义盯梢装备,选择自己重视的体系与运用组件进行盯梢,过滤不需要的数据。

运用perfetto主要有以下步骤:

翻开perfetto

  • perfetto 的指令行东西是这个装备在 Android11 之后是默许翻开的,但是如果你是 Android 9 ( P ) 或者 10 ( Q ) ,那么就需要手动设置一下相应的 prop 特点,用于搜集和剖析盯梢数据。
# 1-翻开,0-关闭
adb shell setprop persist.traced.enable 1

装备盯梢信息

  • 装备盯梢,选择要盯梢的数据源和时刻范围等。装备信息写入文本文件并传给perfetto指令行东西,如:config.pbtx,可借助Perfetto 在线剖析东西中的⏺️Record new trace进行手动勾选想要录制的内容,它会帮你生成装备文件指令,在Recording command,如下图所示。

Perfetto 抓取 trace 使用详解 -- Android APP 性能追踪与分析工具

  • 你能够仿制Recording command中生成好的指令到cmd终端进行履行,等候对应的时刻即可完成录制trace。
  • 你也能够将Recording command中生成好的指令,仿制两个EOF标签之间的指令到config.pbtx装备文件中。并将装备文件上传到Android设备中,如:
adb push config.pbtx /data/local/tmp/config.pbtx
duration_ms: 10000
buffers: {
    size_kb: 522240
    fill_policy: DISCARD
}
buffers: {
    size_kb: 2048
    fill_policy: DISCARD
}
data_sources: {
    config {
        name: "android.gpu.memory"
    }
}
data_sources: {
    config {
        name: "linux.process_stats"
        target_buffer: 1
        process_stats_config {
            scan_all_processes_on_start: true
            proc_stats_poll_ms: 1000
        }
    }
}
data_sources: {
    config {
        name: "android.log"
        android_log_config {
        }
    }
}
data_sources: {
    config {
        name: "android.surfaceflinger.frametimeline"
    }
}
data_sources: {
    config {
        name: "android.game_interventions"
    }
}
data_sources: {
    config {
        name: "linux.sys_stats"
        sys_stats_config {
            meminfo_period_ms: 1000
            vmstat_period_ms: 1000
        }
    }
}
data_sources: {
    config {
        name: "android.heapprofd"
        target_buffer: 0
        heapprofd_config {
            sampling_interval_bytes: 4096
            shmem_size_bytes: 8388608
            block_client: true
            all_heaps: true
        }
    }
}
data_sources: {
    config {
        name: "android.java_hprof"
        target_buffer: 0
        java_hprof_config {
        }
    }
}
data_sources: {
    config {
        name: "linux.ftrace"
        ftrace_config {
            ftrace_events: "sched/sched_switch"
            ftrace_events: "power/suspend_resume"
            ftrace_events: "sched/sched_wakeup"
            ftrace_events: "sched/sched_wakeup_new"
            ftrace_events: "sched/sched_waking"
            ftrace_events: "power/cpu_frequency"
            ftrace_events: "power/cpu_idle"
            ftrace_events: "power/gpu_frequency"
            ftrace_events: "gpu_mem/gpu_mem_total"
            ftrace_events: "raw_syscalls/sys_enter"
            ftrace_events: "raw_syscalls/sys_exit"
            ftrace_events: "mm_event/mm_event_record"
            ftrace_events: "kmem/rss_stat"
            ftrace_events: "ion/ion_stat"
            ftrace_events: "dmabuf_heap/dma_heap_stat"
            ftrace_events: "kmem/ion_heap_grow"
            ftrace_events: "kmem/ion_heap_shrink"
            ftrace_events: "sched/sched_process_exit"
            ftrace_events: "sched/sched_process_free"
            ftrace_events: "task/task_newtask"
            ftrace_events: "task/task_rename"
            ftrace_events: "lowmemorykiller/lowmemory_kill"
            ftrace_events: "oom/oom_score_adj_update"
            ftrace_events: "sched/sched_blocked_reason"
            ftrace_events: "ftrace/print"
            atrace_apps: "lmkd"
            symbolize_ksyms: true
        }
    }
}

运转perfetto trace

  • 运转perfetto trace指令进行盯梢数据搜集。
adb shell 'cat /data/local/tmp/config.pbtx | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace'
  • 上面装备为10秒收集,等候10秒即可看到终端提示履行记载完毕
    Perfetto 抓取 trace 使用详解 -- Android APP 性能追踪与分析工具

导出 .perfetto-trace 记载文件

  • 接下来便是从设备将/data/misc/perfetto-traces/trace.perfetto-trace途径下的文件下载到电脑中,指令如下:
adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace ./traces/

至此,怎么从设备中录制trace文件的作业就完成了,接下来便是怎么进行剖析trace来有针对的进行APP的功能优化了。

创作不易,希望能一键三连哦~点赞、保藏、加重视➕,随用随学不走失~