[小技巧]Ubuntu右键快速在浏览器中打开perfetto文件

[小技巧] 右键快速在浏览器中打开 Perfetto 文件

在使用 Android 性能分析工具 Perfetto 时,录制的跟踪文件通常以 .perfetto-trace 为后缀。虽然可以通过命令行快速打开这些文件,但在日常使用中,手动打开浏览器并选择文件可能会显得繁琐。本文将介绍如何通过右键菜单快速在浏览器中打开 Perfetto 文件。

1. 使用 record_android_trace 录制跟踪

首先,你可以使用 record_android_trace 脚本录制跟踪文件。例如:

bash 复制代码
record_android_trace -c ~/traces/launcher.pbtx -o notouch.perfetto-trace

这条命令会生成一个名为 notouch.perfetto-trace 的跟踪文件,并在浏览器中快速打开。

1.1 record_android_trace 脚本原理

record_android_trace 脚本的主要功能是通过 Perfetto 工具录制 Android 设备上的性能跟踪数据。以下是其工作原理的简要解读:

  • 默认网页地址 :脚本默认指定 https://ui.perfetto.dev 作为打开跟踪文件的网页地址。
  • 构建 Perfetto 命令 :脚本构建一个 perfetto 命令,并在设备上执行该命令以开始录制跟踪数据。
  • 处理配置文件:脚本支持通过配置文件来定义跟踪参数,用户可以指定要记录的事件和持续时间。
  • 在浏览器中打开:录制完成后,脚本会将跟踪文件从设备中拉取到本地,并在浏览器中打开该文件,方便用户查看。

以下是 record_android_trace 脚本的相关代码片段:

python 复制代码
def main():
    ...
    # 默认指定https://ui.perfetto.dev网页地址来打开trace文件
    parser.add_argument('--origin', default='https://ui.perfetto.dev', help=help)
    ...
    # perfetto命令
    perfetto_cmd = 'perfetto'
    
    ...
    # trace文件在设备上的路径和名称格式
    device_dir = '/data/misc/perfetto-traces/'
    tstamp = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M')
    fname = '%s-%s.pftrace' % (tstamp, os.urandom(3).hex())
    device_file = device_dir + fname

    # 构建perfetto命令
    cmd = [perfetto_cmd, '--background']
    ...
    # 打开配置文件~/traces/launcher.pbtx
    with open(on_host_config or os.devnull, 'rb') as f:
        print('Running ' + ' '.join(cmd))
        # 传入文件内容~/traces/launcher.pbtx,并执行perfetto构建好的命令
        proc = adb('shell', *cmd, stdin=f, stdout=subprocess.PIPE)
        proc_out = proc.communicate()[0].decode().strip()

    ...

    # 从设备中拉出文件到电脑端的notouch.perfetto-trace文件
    adb('pull', device_file, host_file).wait()

    if not args.no_open:
        # 在浏览器中打开https://ui.perfetto.dev网页,并传入notouch文件路径
        open_trace_in_browser(host_file, open_browser, args.origin)

2. 直接打开跟踪文件的需求

在下一次查看跟踪文件时,你可能需要手动打开 Perfetto UI,然后点击"Open trace files"从文件夹中选择文件。为了简化这个过程,我们可以参考 record_android_trace 脚本的实现,自动在浏览器中打开跟踪文件。

3. 创建处理脚本

我们将创建一个名为 perfetto_tool.py 的 Python 脚本,用于处理 .perfetto-trace 文件并在浏览器中打开。

3.1 脚本内容

python 复制代码
#!/usr/bin/env python3

import socketserver
import sys
import os
import webbrowser
import http.server

def open_prefetto_file(file_path):
    open_trace_in_browser(file_path)

def main():
    if len(sys.argv) < 2:
        print("Usage: python3 prefetto_tool.py <file_path>")
        return

    file_path = sys.argv[1]
    if not os.path.isfile(file_path):
        print("File not found:", file_path)
        return

    open_prefetto_file(file_path)

def open_trace_in_browser(path):
    PORT = 9001
    os.chdir(os.path.dirname(path))
    fname = os.path.basename(path)
    socketserver.TCPServer.allow_reuse_address = True
    with socketserver.TCPServer(('127.0.0.1', PORT), HttpHandler) as httpd:
        webbrowser.open_new_tab(
            'https://ui.perfetto.dev/#!/?url=http://127.0.0.1:%d/%s' %
            (PORT, fname))
        while httpd.__dict__.get('last_request') != '/' + fname:
            httpd.handle_request()

class HttpHandler(http.server.SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_header('Access-Control-Allow-Origin', '*')
        return super().end_headers()

    def do_GET(self):
        self.server.last_request = self.path
        return super().do_GET()

    def do_POST(self):
        self.send_error(404, "File not found")

if __name__ == "__main__":
    main()

3.2 赋予执行权限

在终端中,导航到脚本所在的目录,并赋予其执行权限:

bash 复制代码
chmod +x perfetto_tool.py

4. 创建 .desktop 文件

为了将脚本添加到右键菜单中,我们需要创建一个 .desktop 文件。

4.1 创建 perfetto_tool.desktop

/usr/share/applications/ 目录下创建一个名为 perfetto_tool.desktop 的文件,内容如下:

ini 复制代码
[Desktop Entry]
Version=1.0
Type=Application
Name=Perfetto Tool
Comment=Tool for opening .perfetto-trace files
Exec=/home/tools/perfetto/perfetto_tool.py %f
Icon=/home/tools/perfetto/icon.jpg
Terminal=false
MimeType=application/x-prefetto;
Categories=Utility;

请根据实际路径修改 ExecIcon 的值。

5. 注册 MIME 类型

为了让系统识别 .perfetto-trace 文件,我们需要创建一个 MIME 类型文件。

5.1 创建 prefetto-trace.xml

/usr/share/mime/packages/ 目录下创建一个名为 prefetto-trace.xml 的文件,内容如下:

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="application/x-prefetto">
        <comment>Prefetto File</comment>
        <glob pattern="*.perfetto-trace"/>
    </mime-type>
</mime-info>

5.2 更新 MIME 数据库

运行以下命令以更新 MIME 数据库:

bash 复制代码
update-mime-database /usr/share/mime

6. 测试右键菜单

现在,右键单击任何 .perfetto-trace 文件,应该会看到 "Perfetto Tool" 选项。选择它将会运行你的 Python 脚本,并在浏览器中打开该文件。

结论

通过以上步骤,你可以在 Ubuntu 中通过右键菜单快速打开 Perfetto 跟踪文件,简化了查看跟踪数据的过程。希望这个小技巧能帮助到你!

相关推荐
inmK12 小时前
蓝奏云官方版不好用?蓝云最后一版实测:轻量化 + 不限速(避更新坑) 蓝云、蓝奏云第三方安卓版、蓝云最后一版、蓝奏云无广告管理工具、安卓网盘轻量化 APP
android·工具·网盘工具
giaoho2 小时前
Android 热点开发的相关api总结
android
咖啡の猫4 小时前
Android开发-常用布局
android·gitee
程序员老刘5 小时前
Google突然“变脸“,2026年要给全球开发者上“紧箍咒“?
android·flutter·客户端
Tans55 小时前
Androidx Lifecycle 源码阅读笔记
android·android jetpack·源码阅读
雨白5 小时前
实现双向滑动的 ScalableImageView(下)
android
峥嵘life5 小时前
Android Studio新版本编译release版本apk实现
android·ide·android studio
studyForMokey8 小时前
【Android 消息机制】Handler
android
敲代码的鱼哇8 小时前
跳转原生系统设置插件 支持安卓/iOS/鸿蒙UTS组件
android·ios·harmonyos
翻滚丷大头鱼8 小时前
android View详解—动画
android