HarmonyOS 鸿蒙Next中SP_daemon获取图层帧率
HarmonyOS 鸿蒙Next中SP_daemon获取图层帧率
求助:“SP_daemon -N 10 -VIEW DisplayNode -f”命令里的参数DisplayNode要用什么方法能够查到?
官方没给说明。以下是几个的对比,建议还是用包名的方式。

更多关于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::DisplayManager或Graphic::FrameInfoManager接口订阅或查询图层帧数据,获取每帧绘制完成的时间戳并计算帧率。
在SP_daemon中,DisplayNode这类视图参数通常直接源于系统的图层节点名。可通过以下两种方式快速查到:
-
使用
-l参数直接列出
执行SP_daemon -l,会打印所有可监控的视图列表,从中可以找到类似DisplayNode的节点名称。 -
通过 hidumper 获取当前图层信息
运行hidumper -s WindowManagerService -a '-a',输出中会包含活动的图层与视图节点名,DisplayNode即对应具体显示的图层 ID,原样拷贝使用即可。
两者均能准确给出 -VIEW 所需的完整参数名,无需额外解析。

