可以从 XML 动态解析 SceneGraph 吗?

Possible to dynamically parse SceneGraph from XML?

我想通过从远程服务器运出的 XML 组件逐步构建 Roku SceneGraph 体验。也就是说,启用 Roku 频道来驱动 SceneGraph 体验,使用的组件并非全部包含在频道随附的组件/文件夹下的 XML 和 brs 文件中,而是从 Internet 下载动态地。

这个类比是一个以 html 作为声明性标记语言的网络浏览器(尽管那不是我的具体目标)。

我看到了根据 component/ 下存在的内容在频道启动时编译的 SceneGraph 文件的引用。例如,似乎没有办法从 XML 生成 roSGNode

我做了一些调查,但一无所获。很想知道之前是否还有其他人space想过这个?

简而言之,我认为 SceneGraph 通道无法动态加载 XML 定义的组件,这些组件未存储为通道包的一部分。

但这并不一定意味着您不能建立动态渠道。

您可以使用 运行() 或 Eval() 函数至少 运行 在服务器端发送的 Brightscript 代码 https://sdkdocs.roku.com/display/sdkdoc/Runtime+Functions

可以使用 Brightscript 以编程方式完成很多工作,例如您可以为这些组件添加组件和字段。

Roku SceneGraph 确实有一个 ComponentLibrary (https://sdkdocs.roku.com/display/sdkdoc/ComponentLibrary),可让您通过在运行时下载组件(xml & brs)来提供它们。曾经有一个限制,组件库必须打包为.pkg文件,并使用与应用程序相同的开发密钥签名运行代码,但从v7.5开始,只要解除该限制因为组件是通过 HTTPS 提供的。来自上面的link:

“未签名的组件库

从固件版本 7.5 开始可用

从固件版本 7.5 开始,组件库不再需要使用与频道相同的设备进行打包或签名。但是,未签名的组件库需要通过 HTTPS 提供,然后才能通过已发布的渠道访问。请参阅下面的其他案例:

Sideloaded channels can access unsigned component libraries over HTTP or HTTPS.
Published channels can only access unsigned component libraries over HTTPS.
Published channels can access signed component libraries over HTTP if the channel and the library share the same devid."

您可以使用此功能在运行时提供动态 xml/brs 文件。