[小技巧] 右键快速在浏览器中打开 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;
请根据实际路径修改 Exec
和 Icon
的值。
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 跟踪文件,简化了查看跟踪数据的过程。希望这个小技巧能帮助到你!