可以从XML动态解析SceneGraph吗?

时间:2018-10-31 17:57:56

标签: roku brightscript scenegraph

我想构建Roku SceneGraph体验,该体验是通过从远程服务器交付的XML组件逐步构建的。就是说,启用Roku通道以使用不是随通道一起提供的组件/文件夹下的所有XML和brs文件的一部分包含的组件,而是从Internet动态下载的组件来驱动SceneGraph体验。

类推是使用html作为声明性标记语言的Web浏览器(尽管这不是我的特定目标)。

我看到了在component/下基于通道启动时正在编译的SceneGraph文件的引用。例如,似乎没有一种方法可以从XML生成roSGNode

我做了一些研究,但空手而归。想知道是否有人之前曾想过这个空间吗?

2 个答案:

答案 0 :(得分:1)

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

但是,这不一定意味着您无法建立动态渠道。

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

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

答案 1 :(得分:0)

Roku SceneGraph确实具有ComponentLibraryhttps://sdkdocs.roku.com/display/sdkdoc/ComponentLibrary),可让您通过在运行时下载组件来提供组件(xml和brs)。过去存在一个限制,即必须将组件库打包为.pkg文件,并使用与运行代码的应用程序相同的dev密钥进行签名,但是从v7.5开始,只要组件是通过HTTPS服务。从上面的链接:

“未签名的组件库

自固件版本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文件。