EmuLabZip logo EmuLabZip

会话

最后更新 · 在 GitHub 上编辑此页

会话是对应用使用期间设备上所发生之事的录制,保存为一个文件,你可以稍后打开、附加到缺陷报告,或从 CI 中收集。

内部文件内容
session.json设备、应用,以及开始和结束的时间
logs.jsonl每一行日志(最多 500,000 行)
perf.jsonlCPU、内存、帧率和电池的采样,每秒一次
network.har请求(录制了网络时),包含 WebSocket 消息
crashes/运行期间发生的每次崩溃、原生崩溃和 ANR,附带其报告
screens/每隔几秒拍摄的截图(按需),由 index.jsonl 记录时间
input.jsonl触摸(点按、长按、滑动)(按需),仅限 Android
frames.jsonl应用绘制过慢的帧,仅限 Android
video/分段的屏幕录像(按需),由 index.jsonl 说明每段覆盖的内容

session.json 还保存设备的时钟,因此各个数据流可以放在同一条轴上:参见时间线与屏幕录像。

.ezsession 文件是由纯 JSON、一个 HAR 文件、PNG 和 MP4 组成的 zip,因此其他工具也能读取它。其布局为版本 2;来自 EmuLabZip 0.9 或更早版本的版本 1 文件仍然可以打开。

录制#

在应用中,打开 Sessions,在工具栏中选择应用,然后点击 Record。还可以勾选 Network(必须先在 Network 视图中连接设备)、Video 和 Touches,并选择截图的频率。点击 Stop and save;会话会立即打开。在这里录制的会话会列在左侧。

在命令行中:

emulabzip session record -o run.ezsession --app com.example.app --screens 5 --network
# ... use the app, then Ctrl+C. Or add --duration 60 to stop by itself.
emulabzip session record -o run.ezsession --app com.example.app --video --taps   # the screen, and touches (Android)

使用 --network 时,设备在运行期间会指向代理,并在之后恢复,即使出了问题也是如此。

如果录制被终止(崩溃、合上了笔记本电脑),已写入的内容仍保存在名为 run.ezsession.partial 的文件夹中。像打开文件一样打开它;其报告会写明“cut short”。

读取#

emulabzip session show run.ezsession            # for people
emulabzip session show run.ezsession --json     # for scripts
emulabzip session show run.ezsession --markdown # for a pull request comment

报告包含时长、日志错误及重复最多的错误(数字会被忽略,因此“retry 3 of 5”和“retry 4 of 5”算作一个)、崩溃、请求及其中最慢的,以及 CPU 和内存的峰值。

在应用中,打开的会话有这些标签页:Overview、Logs(按级别和文本过滤)、Requests(每个请求的请求头和正文)、Timeline(触摸、请求、日志问题、慢帧、垃圾回收和崩溃都在同一条轴上,并配有随之播放的视频,下方是 CPU 和内存图表)以及 Screens。Replay network 会用录制内容应答应用的请求:参见回放录制。

会话也是日后报告缺陷最简便的方式:在打开的会话中点击 Bug report,或使用 emulabzip report --session run.ezsession,即可把它打包成一个 HTML 文件。参见缺陷报告。

emulabzip session timeline run.ezsession        # everything on one axis
emulabzip session video run.ezsession -o clips/ # the pieces of the screen recording

AI 助手可以使用 MCP 服务器的 list_sessions、session_summary 和 session_timeline 工具读取会话。

须知#

  • 会话可能包含你的应用记录和发送的内容:令牌、地址、个人数据。屏幕录像可能显示屏幕上出现过的任何内容。请像对待日志一样对待它们,并在把会话附加到公开 issue 之前先检查。
  • 由较新版本 EmuLabZip 录制的会话(较新的格式)会被拒绝,并提示你更新。
  • 会话文件只会写入你选择的位置或 EmuLabZip 自己的 sessions 文件夹。

参见 CI 模式,了解如何围绕测试运行进行录制。