HarmonyOS 鸿蒙Next中SP_daemon获取图层帧率

HarmonyOS 鸿蒙Next中SP_daemon获取图层帧率

求助:“SP_daemon -N 10 -VIEW DisplayNode -f”命令里的参数DisplayNode要用什么方法能够查到?

4 回复

官方没给说明。以下是几个的对比,建议还是用包名的方式。

cke_2216.png

更多关于HarmonyOS 鸿蒙Next中SP_daemon获取图层帧率的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


官方文档只写了:

DisplayNode 是指定的图层名。

但没有告诉怎么获取。

实际使用时,DisplayNode 不是固定写死的字符串,而是当前系统中真实存在的图层名称。

一般可以通过以下方式查看:

先查看系统图层:

hidumper -s RenderService -a screen

或者:

hidumper -s RenderService -a surfaces

不同系统版本输出略有区别。

然后会看到类似:

EntryView
NavigationView
XComponent
WebView
Image
DisplayNode
...

找到你要测的那个图层名称,再作为 -VIEW 参数传入。

例如:

SP_daemon -N 10 -VIEW XComponent -f

或者:

SP_daemon -N 10 -VIEW WebView -f

还有个比较常用的方法:

直接执行:

hidumper -s RenderService

然后搜索:

surface
node
display

相关关键字。

有些版本会直接打印完整的 RenderNode 树,可以找到当前页面对应的图层名。


如果你测的是自己的应用,推荐先执行:

hidumper -s RenderService -a screen | grep 包名

很多时候能直接定位到应用对应的 Surface 名称。

希望能帮到你~~~

在HarmonyOS Next中,SP_daemon通过IPC与图形子系统通信,调用OHOS::Rosen::DisplayManagerGraphic::FrameInfoManager接口订阅或查询图层帧数据,获取每帧绘制完成的时间戳并计算帧率。

SP_daemon中,DisplayNode这类视图参数通常直接源于系统的图层节点名。可通过以下两种方式快速查到:

  1. 使用 -l 参数直接列出
    执行 SP_daemon -l,会打印所有可监控的视图列表,从中可以找到类似 DisplayNode 的节点名称。

  2. 通过 hidumper 获取当前图层信息
    运行 hidumper -s WindowManagerService -a '-a',输出中会包含活动的图层与视图节点名,DisplayNode 即对应具体显示的图层 ID,原样拷贝使用即可。

两者均能准确给出 -VIEW 所需的完整参数名,无需额外解析。

回到顶部