[小技巧]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 跟踪文件,简化了查看跟踪数据的过程。希望这个小技巧能帮助到你!

相关推荐
沙振宇4 小时前
【HarmonyOS】ArkTS开发应用的横竖屏切换
android·华为·harmonyos
橙子199110166 小时前
Kotlin 中的作用域函数
android·开发语言·kotlin
zimoyin6 小时前
Kotlin 懒初始化值
android·开发语言·kotlin
枣伊吕波6 小时前
第六节第二部分:抽象类的应用-模板方法设计模式
android·java·设计模式
萧然CS7 小时前
使用ADB命令操作Android的apk/aab包
android·adb
_extraordinary_11 小时前
MySQL 事务(二)
android·数据库·mysql
鸿蒙布道师15 小时前
鸿蒙NEXT开发动画案例5
android·ios·华为·harmonyos·鸿蒙系统·arkui·huawei
橙子1991101620 小时前
在 Kotlin 中什么是委托属性,简要说说其使用场景和原理
android·开发语言·kotlin
androidwork20 小时前
Kotlin Android LeakCanary内存泄漏检测实战
android·开发语言·kotlin
笨鸭先游21 小时前
Android Studio的jks文件
android·ide·android studio