我在运行自动化测试时试图捕获Android系统。由于我不知道我的测试持续时间,所以我不能使用param"-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时才会生成输出文件。我不需要把它们组合起来就能找出痕迹。