如何从我的自动化脚本中捕获 Android Systrace

问题描述

我正在尝试在运行自动化测试时捕获 Android systrace。因为我不知道测试的持续时间,所以我不能使用参数 "-t" 。

我使用以下命令进行跟踪 -

python systrace.py -a com.myapp -o testauto.html

手动停止我们需要按回车键的跟踪。我该怎么做 ? 如何停止捕获跟踪以便它自动创建跟踪文件

解决方法

systrace.py 是手动运行的,所以如果你想自动化它,你可以使用底层的 atrace 命令。有点复杂,所以我会在最后加上步骤。

我强烈建议您查看 Perfetto 命令行工具。您可以在此处找到更详细的文档:https://perfetto.dev/docs/quickstart/android-tracing

TLDR:

adb shell perfetto -o /data/misc/perfetto-traces/trace_file.pftrace -b 32mb <add_list_of_categories>

然后发送终止信号(即Ctrl+C)停止跟踪。根据您的主机操作系统实现自动化应该很简单。

另一个值得研究的资源是用于 CI/CD 集成的 AndroidX Benchmark 库:https://developer.android.com/studio/profile/benchmark

--附录--

直接运行 atrace

adb shell /system/bin/atrace -z -b <buffer_size_in_kb> -a <app_name> -o /data/local/tmp/test.trace --async_start

然后停止跟踪:

adb shell /system/bin/atrace -z -a <app_name> -o /data/local/tmp/test.trace0 --async_stop

最后你需要合并文件:

cat test.trace test.trace0 > combined.trace