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



我在运行自动化测试时试图捕获Android系统。由于我不知道我的测试持续时间,所以我不能使用param&quot-t"。

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

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

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

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基准库: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

Yi Yang的回答后需要注意的是,对于Android 9,当使用'-async_start'调用时,直接运行atrace似乎不会生成输出文件,只有当调用--async_stop时才会生成输出文件。我不需要把它们组合起来就能找出痕迹。

相关内容

  • 没有找到相关文章

最新更新