掌桥专利:专业的专利平台
掌桥专利
首页

基于客户端的渲染方法、装置、设备以及存储介质

文献发布时间:2023-06-19 11:11:32


基于客户端的渲染方法、装置、设备以及存储介质

技术领域

本公开涉及计算机技术领域,尤其涉及智能设备、云服务、渲染领域。

背景技术

相关技术中,渲染过程主要包括对需要渲染的文件进行编译后转化为用户可见的结果。可以在云端对文件进行编译,再将编译后的代码发送至设备端显示渲染效果。在此过程中,云端和设备端之间需要传输大量的数据,网络、传输速度、数据丢失等因素会影响渲染效果。而设备端进行渲染需要的计算量大,也可能影响渲染效果。

发明内容

本公开提供了一种基于客户端的渲染方法、装置、设备以及存储介质。

根据本公开的一方面,提供了一种基于客户端的渲染方法,包括:

接收来自客户端的请求,所述请求中包括需要渲染的脚本;

通过渲染模块执行所述脚本,以在设备端中获取容器引擎,并利用所述容器引擎构建容器视图以及生成显示页面。

根据本公开的另一方面,提供了一种基于客户端的渲染方法,包括:

向设备端发送包括需要渲染的脚本的请求;

其中,所述脚本用于在设备端中获取容器引擎,并利用所述容器引擎构建容器视图以及生成显示页面。

根据本公开的另一方面,提供了一种基于客户端的渲染装置,包括:

接收单元,用于接收来自客户端的请求,所述请求中包括需要渲染的脚本;

控制单元,用于通过渲染模块执行所述脚本,以在设备端中获取容器引擎,并利用所述容器引擎构建容器视图以及生成显示页面。

根据本公开的另一方面,提供了一种基于客户端的渲染装置,包括:

发送单元,用于向设备端发送包括需要渲染的脚本的请求;

其中,所述脚本用于在设备端中获取容器引擎,并利用所述容器引擎构建容器视图以及生成显示页面。

根据本公开的另一方面,提供了一种电子设备,包括:

至少一个处理器;以及

与该至少一个处理器通信连接的存储器;其中,

该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开任一实施例中的方法。

根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行本公开任一实施例中的方法。

根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本公开任一实施例中的方法。

根据本公开的技术,设备端的容器引擎等可以复用,利用设备端的容器引擎实现客户端所需的渲染效果,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本公开的限定。其中:

图1是根据本公开一实施例的基于客户端的渲染方法的流程示意图;

图2是根据本公开另一实施例的基于客户端的渲染方法的流程示意图;

图3是根据本公开一实施例的基于客户端的渲染方法的流程示意图;

图4是根据本公开另一实施例的基于客户端的渲染方法的流程示意图;

图5是根据本公开一实施例的基于客户端的渲染装置的框图;

图6是根据本公开另一实施例基于客户端的渲染装置的框图;

图7是根据本公开一实施例的基于客户端的渲染装置的框图;

图8是本公开一实施例的ACE系统设置于智能设备的示意图;

图9是本公开一实施例的跨进程渲染管理模块与客户端通信的示意图;

图10是本公开一实施例的连接流程的一个示意图;

图11是本公开一实施例的请求处理流程的示意图;

图12是本公开一实施例的连接流程的另一示意图;

图13是本公开一实施例的初始化过程的示意图;

图14是本公开一实施例的执行脚本过程的示意图;

图15用来实施本公开的实施例的示例电子设备的示意性框图。

具体实施方式

以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本公开一实施例的基于客户端的渲染方法的流程示意图。该方法可以包括:

S101、接收来自客户端的请求,所述请求中包括需要渲染的脚本;

S102、通过渲染模块执行所述脚本,以在设备端中获取容器引擎,并利用所述容器引擎构建容器视图以及生成显示页面。

示例性地,设备端可以包括能够显示的智能设备。例如,带有屏幕各种语音智能设备。设备端的操作系统中可以包括容器引擎系统,该系统可以包括跨进程处理模块、渲染模块、容器模块等。该系统的通信模块可以称为跨进程处理模块,能够与客户端通信。容器模块可以获取多种类型的容器引擎。例如,页面(Page)容器引擎、对话框(Dialog)容器引擎、小程序(Mini App)容器引擎等。容器引擎可以提供脚本运行环境等。容器引擎还可以称为应用容器引擎、应用容器、容器实例、应用容器实例、引擎实例、容器、引擎等。客户端可以包括应用程序、小程序等。客户端中可以包括通信模块(例如指令接收端)、组件的描述信息的集合(简称组件集)、指令执行模块(例如指令执行器)等。设备端可以包括通信模块、渲染模块、容器模块等。本实施例的方法可以用于容器引擎系统中,例如,具体可以应用于跨进程处理模块中。

在本公开实施例中,客户端可以包括能够在操作系统中运行的应用程序(APP)、小程序(Mini App或Applet)等。客户端的安装包例如APK可以保存在云端。如果需要在设备端运行该客户端,可以从云端下载该客户端的安装包后,在设备端安装后运行或直接运行该客户端。如果客户端需要实现某个渲染效果,可以将容器参数、布局信息、需要显示的组件的描述信息等按照一定的逻辑生成脚本。跨进程处理模块与客户端的通信模块连接,从客户端的通信模块接收需要渲染的脚本和/或其他需要执行的指令等。跨进程处理模块可以将脚本分发给渲染模块,由渲染模块执行脚本得到已渲染数据。渲染模块可以将已渲染数据发送至容器模块,由容器模块获取所需容器引擎,利用容器引擎构建容器视图以及生成显示页面。显示页面中可以包括容器引擎构建的容器视图以及在容器视图中加载的各图形组件。

在本公开实施例中,脚本是依据一定格式编写的可执行文件,脚本包括多种类型。例如,脚本可以包括JavaScript(简称JS)。

本公开实施例中,设备端的容器引擎等可以复用,利用设备端的容器引擎实现客户端所需的渲染效果,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。此外,云端与客户端之间需要传输的数据少,对客户端需要进行的改动少,适应性强。

图2是根据本公开另一实施例的基于客户端的渲染方法的流程示意图。该实施例的方法可以包括上述实施例的各步骤。在一种实施方式中,该方法还包括:

S201、响应于来自客户端的连接请求进行鉴权;

S202、在鉴权成功的情况下,向所述客户端返回远程操作对象。

本实施例的方法可以用于容器引擎系统中,例如,具体可以应用于跨进程处理模块中。

例如,设备端的跨进程处理模块接收到客户端的连接请求后,对客户端进行鉴权。连接请求中可以包括客户端的调用者进程标识、调用者包名、UID等,可以利用其中的至少之一进行鉴权。在鉴权成功的情况下,跨进程处理模块可以向客户端返回远程操作对象。例如,返回绑定(binder)对象或interface接口实例。

在鉴权失败的情况下,跨进程处理模块可以向客户端返回鉴权失败的通知。可以不继续执行客户端本次的请求。

通过鉴权能够保证系统安全性,主要处理鉴权通过的客户端的请求,减少不必要的处理,提高渲染速度。此外,客户端与设备端可以利用远程操作对象进行进程之间的通信(可以简称进程间通信或进程通信)。

在一种实施方式中,S201响应于来自客户端的连接请求进行鉴权,包括:

接收来自所述客户端的安卓接口定义语言(Android Interface DefinitionLanguage,AIDL)连接请求,与所述客户端建立AIDL连接;

接收来自所述客户端的获取远程操作对象的请求;

对所述获取远程操作对象的请求中的调用者进程标识(ProcessIdentification,PID)进行验证;

在所述调用者进程标识验证通过的情况下,获取调用者类型。

在操作系统中,客户端与应用容器引擎系统建立AIDL连接后,可以使的程序实现进程之间的通信(Inter-Process Communication,IPC,简称进程间通信或进程通信)。PID可以是操作系统中的进程识别号。操作系统中每打开一个程序会创建一个进程ID,即PID。跨进程处理模块可以判断调用者PID是否是已经验证过的PID。如果是,可以判定鉴权成功。在利用调用者PID鉴权成功的情况下,可以获取调用者类型。如果调用者PID是没有验证过的PID,可以判定鉴权失败,也可以继续采用其他方式进行鉴权。调用者PID可以是客户端的PID,基于调用者进程标识可以快速准确的进行鉴权。调用者类型可以包括客户端应用、云端应用等。

在一种实施方式中,响应于来自客户端的连接请求进行鉴权,还包括:

在所述调用者进程标识验证未通过的情况下,根据所述获取远程操作对象的请求中的调用者包名获取应用签名;

对所述应用签名进行验证;

在所述应用签名验证通过的情况下,获取调用者类型。

示例性地,可以先利用PID进行鉴权,在PID鉴权失败后,再利用包名进行鉴权。也可以不利用PID进行鉴权,而是直接利用包名进行鉴权。从获取远程操作对象的请求中获取调用者包名例如CallerPackageName。从包名中可以解析得到客户端的应用签名,可以验证该应用签名是否合法。如果合法,判定鉴权成功;如果不合法,判定鉴权失败。可以预先设置白名单,如果应用签名在白名单中,则表示合法,否则表示不合法。利用包名中的应用签名进行鉴权,可以保证调用者的合法性,有利于对调用者进行灵活地管理,保证系统安全性。

此外,也可以利用其它信息进行鉴权,例如用户身份证明(User Identification,UID)等。

在一种实施方式中,所述方法还包括:

获取所述调用者类型对应权限的远程操作对象;

向所述客户端返回所述远程操作对象。

在鉴权通过后,跨进程处理模块可以利用调用者类型获取远程操作对象,例如binder对象或interface实例等。跨进程处理模块基于调用者类型可以确定端能力的权限等级,将调用者类型对应的权限等级的远程操作对象返回给客户端。客户端可以通过远程操作对象初始化渲染所需的容器引擎。

在一种实施方式中,接收来自客户端的请求,包括以下至少之一:

接收来自所述客户端的初始化请求,所述初始化请求用于初始化所述脚本的运行环境和引用依赖资源;

接收来自所述客户端的脚本执行请求,所述脚本执行请求用于请求执行所述脚本得到所述已渲染数据。

如果接收到初始化请求,跨进程处理模块可以调用容器模块初始化该脚本所需的容器引擎或者脚本引擎,得到该脚本的运行环境和引用依赖资源等。其中,初始所述脚本的运行环境和引用依赖资源,可以包括:创建线程;初始化容器引擎;注册指令监听。其中,注册指令监听可以包括:注册渲染指令和/或端能力调用指令监听等。初始化之后,跨进程处理模块可以向客户端返回引擎标识。这样,在初始化之后,客户端可以利用容器引擎实现渲染效果。不同的客户端可能复用容器引擎,这样能够减少渲染所需的数据量和系统资源,提高渲染速度,优化渲染效果。

在一种实施方式中,所述脚本中包括引擎标识,所述引擎标识用于获取所述容器引擎。这样,客户端后续可以利用引擎标识获取对应的容器引擎,利用容器引擎实现渲染效果。不同的客户端可能复用容器引擎,从而能够减少渲染所需的数据量和系统资源,提高渲染速度,优化渲染效果。

如果接收到的脚本执行请求中包括客户端需要渲染的脚本。跨进程处理模块可以调用指令处理模块向渲染模块发送该脚本。渲染模块可以执行该脚本得到已渲染数据(也可以称为预渲染数据)。渲染模块可以向容器模块发送已渲染数据。容器模块可以利用已渲染数据绘制显示页面。例如,已渲染数据中包括引擎标识、容器视图信息、组件信息以及脚本的业务逻辑等的一项或者多项。容器模块可以基于引擎标识查找对应的容器引擎;基于容器视图信息构建容器视图;执行组件信息对应的可执行代码,以在所述容器视图中加载所述组件信息对应的图形组件,生成显示页面。容器视图信息可以包括容器视图的尺寸、颜色、位置等信息。组件信息可以包括需要在显示页面展现的各个图形组件的尺寸、颜色、位置、文字、形状等信息。例如,圆形按钮、方形输入框等。脚本的业务逻辑可以包括多种,例如组件的显示顺序、消失顺序等。

图3是根据本公开一实施例的基于客户端的渲染方法的流程示意图。该方法可以包括:S301、向设备端发送包括需要渲染的脚本的请求;其中,所述脚本用于在设备端中获取容器引擎,并利用所述容器引擎构建容器视图以及生成显示页面。

本实施例的方法可以用于客户端中,例如,具体可以应用于跨进程处理模块中。在本公开实施例中,客户端可以包括能够在操作系统中运行的应用程序(APP)、小程序(MiniApp或Applet)等。客户端的安装包例如APK可以保存在云端。如果需要在设备端运行该客户端,可以从云端下载该客户端的安装包后,在设备端安装后运行或直接运行。

本实施例,设备端的容器引擎等可以复用,利用设备端的容器引擎实现客户端所需的渲染效果,可以减少渲染所需的计算量,提高渲染速度,优化渲染效果。

本实施例中客户端与容器引擎系统之间的交互,可以参见上述实施例中的相关描述,在此不赘述。

图4是根据本公开另一实施例的基于客户端的渲染方法的流程示意图。该实施例的方法可以包括上述实施例的各步骤。在一种实施方式中,所述方法还包括向所述设备端的跨进程处理模块发送以下请求的至少之一:

连接请求,用于请求对所述客户端进行鉴权和建立连接;

初始化请求,用于请求初始化所述脚本的运行环境和引用依赖资源;

脚本执行请求,用于请求执行所述脚本得到所述已渲染数据。

示例性地,该方法具体可以包括:

S401、客户端向设备端的跨进程处理模块发送连接请求,请求跨进程处理模块对所述客户端进行鉴权和建立连接。鉴权通过并且建立连接之后,客户端和跨进程处理模块可以进行进程间通信。

S402、客户端向设备端的跨进程处理模块发送初始化请求,请求容器模块初始化客户端需要渲染的脚本的运行环境和引用依赖资源。例如,在客户端与跨进程处理模块建立连接后,如果跨进程处理模块接收到初始化请求,跨进程处理模块可以调用设备端的容器模块来初始化容器引擎,或者通过渲染模块向容器模块发送初始化请求以初始化容器引擎。容器模块初始化容器引擎,可以得到客户端需要渲染的脚本的运行环境和引用依赖资源。初始化之后,可以利用容器引擎实现更好的渲染效果。

S403、客户端向设备端的跨进程处理模块发送脚本执行请求,请求渲染模块执行客户端需要渲染的脚本得到已渲染数据。例如,如果从客户端接收到需要选的脚本和/或脚本执行请求,跨进程处理模块可以向容器引擎系统的渲染模块发送包括需要渲染的脚本和/或脚本执行请求。渲染模块可以执行脚本得到已渲染数据,并向设备端的容器模块发送已渲染数据。容器模块基于已渲染数据获取容器引擎,得到客户端需要渲染的脚本的运行环境和引用依赖资源,进而实现更好的渲染效果。

本实施例中客户端与容器引擎系统之间的交互,可以参见上述实施例中的相关描述,在此不赘述。

图5是根据本公开一实施例的基于客户端的渲染装置的框图。该装置可以包括:

接收单元501,用于接收来自客户端的请求,所述请求中包括需要渲染的脚本;

控制单元502,用于通过渲染模块执行所述脚本,以在设备端中获取容器引擎,并利用所述容器引擎构建容器视图以及生成显示页面。

本实施例的装置中的各单元的功能可以参见上述方法中跨进程处理模块执行的方法的对应描述,在此不再赘述。

图6是根据本公开另一实施例基于客户端的渲染装置的框图。该实施例的装置可以包括上述装置实施例的各组件。在一种实施方式中,该装置还包括:鉴权单元601,用于响应于来自客户端的连接请求进行鉴权;在鉴权成功的情况下,向所述客户端返回远程操作对象。

在一种实施方式中,所述鉴权单元具体用于接收来自所述客户端的AIDL连接请求,与所述客户端建立AIDL连接;接收来自所述客户端的获取远程操作对象的请求;对所述获取远程操作对象的请求中的调用者进程标识进行验证。

在一种实施方式中,所述鉴权单元还用于在所述调用者进程标识验证通过的情况下,获取调用者类型。

在一种实施方式中,所述鉴权单元还在所述调用者进程标识验证未通过的情况下,根据所述获取远程操作对象的请求中的调用者包名获取应用签名;对所述应用签名进行验证;在所述应用签名验证通过的情况下,获取调用者类型。

在一种实施方式中,所述渲染装置还包括:

对象获取单元602,用于获取所述调用者类型对应权限的远程操作对象;

对象返回单元603,用于向所述客户端返回所述远程操作对象。

在一种实施方式中,所述接收单元用于执行以下步骤的至少之一:

接收来自所述客户端的初始化请求,所述初始化请求用于初始化所述脚本的运行环境和引用依赖资源;

接收来自所述客户端的脚本执行请求,所述脚本执行请求用于请求执行所述脚本得到所述已渲染数据。

在一种实施方式中,所述脚本中包括引擎标识,所述引擎标识用于获取所述容器引擎。

本实施例的装置中的各单元的功能可以参见上述方法中跨进程处理模块执行的方法的对应描述,在此不再赘述。

图7是根据本公开一实施例的基于客户端的渲染装置的框图。该装置可以包括:发送单元701,用于向设备端发送包括需要渲染的脚本的请求;其中,所述脚本用于在设备端中获取容器引擎,并利用所述容器引擎构建容器视图以及生成显示页面。

本实施例的装置中的各单元的功能可以参见上述方法中客户端执行的方法的对应描述,在此不再赘述。

本公开另一实施例提供了一种基于客户端的渲染装置。该实施例的装置可以包括上述装置实施例的各组件。在一种实施方式中,该装置的发送单元还用于向所述设备端的跨进程处理模块发送以下请求的至少之一:

连接请求,用于请求对所述客户端进行鉴权和建立连接;

初始化请求,用于请求初始化所述脚本的运行环境和引用依赖资源;

脚本执行请求,用于请求执行所述脚本得到所述已渲染数据。

本实施例的装置中的各单元的功能可以参见上述方法中客户端执行的方法的对应描述,在此不再赘述。

在一种应用示例中,带有屏幕的智能设备例如:智能音箱等语音智能设备中可以包括应用容器引擎(Application Container Engine,ACE)系统。ACE系统可以是嵌入式应用系统。如图8所示,该系统主要包括以下几个部分:

一、客户端通信管理模块。例如图8的有屏语音智能设备中,客户端通信管理模块可以为跨进程渲染管理模块(也可以称为客户端渲染管理模块、客户端管理模块、跨进程管理模块等,是上述方法实施例中跨进程处理模块的示例)。该跨进程渲染管理模块可以与客户端进行通信。

可选地,该ACE系统也可以包括客户端(可以称为ACE系统客户端、客户端插件、客户端模块等)。ACE系统客户端可以设置在其他需要动态渲染内容的应用程序中。例如,第三方接入的应用(APP)的安装包例如APK中可以集成ACE系统客户端,该客户端可以安装或下载到设备端运行。客户端可以通过ACE系统的跨进程渲染管理模块与其他模块进行交互。客户端中可以包括通信模块(例如指令接收端)、组件集(组件的描述信息的集合)、指令执行模块(例如指令执行器)等。

二、指令解析分发模块(或者称为指令解析分发子系统、协议解析分发子系统等,是上述方法实施例中指令处理模块的示例),用于基于系统协议进行指令的解析与分发。例如,通过指令收发服务模块可以从云端(也可以称为云服务、云端服务等)或客户端接收渲染指令。指令解析分发模块对渲染指令进行解析得到已渲染数据后,可以将已渲染数据分发给容器模块进行处理。指令解析分发模块也可以通过渲染模块向容器模块透传已渲染数据。

例如,云端可以将需要渲染的内容编译成各个渲染指令,发送给设备端的指令收发服务模块。指令收发服务模块可以与云端通信,从云端接收渲染指令。渲染指令中可以为已编译代码,主要包括布局相关的信息等,数据量较少。指令收发服务模块将来自云端的渲染指令发送至指令处理模块。指令处理模块收到渲染指令后,可以对渲染指令进行解析,得到已渲染数据。这样,云端与设备端之间通过渲染指令实现渲染效果,不需要传输大量的数据内容,通过渲染指令传输较少的数据量即可实现所需的渲染效果。类似的,客户端也可以通过渲染指令,通过传输较少的数据量在设备端实现所需渲染效果。

三、设备端能力模块(或者称为端能力模块、设备端能力子系统、端能力子系统等)。渲染过程中,可能需要调用设备端的各种能力(也可以称为技能)。端能力模块可以从指令解析分发模块接收端能力调用指令,根据端能力调用指令向设备端系统服务模块发送对应的调用指令。例如,打开麦克风的指令,打开摄像头的指令等。端能力可以包括多种,例如硬件能力、智能服务和云端服务等。

进一步地,如果设备端能力模块基于端能力调用指令所调用的设备端的服务能力具有特定的渲染效果,可以向渲染模块返回所调用的设备端的服务能力对应的脚本、渲染指令或已渲染数据等信息中至少之一。渲染模块可以对收到的信息进行相应的处理后发送至容器模块。由容器模块基于已渲染数据获取所调用的服务能力的容器引擎,利用该容器引擎构建所调用的服务能力的容器视图,以及生成所调用的服务能力的显示页面。例如,打开麦克风的调用指令的渲染效果包括带有麦克风图像的局部显示的动画,设备端能力模块可以向渲染模块发送该动画对应的已渲染数据。渲染模块可以获取该动画所需的容器引擎例如对话框容器引擎。在对话框容器引擎中可以基于已渲染数据中的视图信息构建容器视图,并基于组件信息运行组件的可执行代码,得到显示页面。

此外,在设备端能力模块调用设备端系统服务时,设备端系统服务可以按照调用指令执行相应的操作。设备端系统服务可以通过设备端能力模块向云端上报所调用的服务能力执行相应的操作后,出现的状态和/或事件等。例如,响应于调用指令,音乐播放器开启并播放音乐。音乐播放器可以向设备端能力模块返回音乐播放记录等,由设备端能力模块上报至云端。

四、容器模块(或者称为容器子系统),用于对各种容器引擎进行管理。容器引擎可以包括页面容器引擎、对话框容器引擎、小程序容器引擎等。容器模块可以基于来自渲染模块、指令解析分发模块或跨进程渲染管理模块的已渲染数据,获取所需的容器引擎。例如,如果存在已经打开的页面容器引擎,可以使用该页面容器引擎构建容器页面。如果不存在已经打开的容器引擎,可以启动新的页面容器引擎,使用该新的页面容器引擎构建容器页面。再如,如果存在已经打开的对话框容器引擎,可以先关闭该对话框容器引擎,再基于已渲染数据启动新的对话框容器引擎构建容器页面。如果不存在已经打开的对话框容器引擎,可以直接启动新的对话框容器引擎。使用该新的对话框容器引擎构建容器页面。再如,如果存在已经打开的小程序容器引擎,可以使用该小程序容器引擎构建容器页面。如果不存在已经打开的小程序容器引擎,可以启动新的小程序容器引擎,使用该新的小程序容器引擎构建容器页面。

利用容器引擎构建容器页面后,在容器页面中加载渲染所需的组件的可执行代码,,生成能够在设备端的屏幕上展现渲染效果的显示页面。进而,在设备端的屏幕上,可以展现该显示页面。

五、渲染模块(或者称为渲染子系统),用于实现设备的屏幕渲染。

渲染模块可以执行脚本得到已渲染数据,或者从指令解析分发模块接收已渲染数据。然后,渲染模块可以向容器模块发送已渲染数据。

此外,渲染模块还可以从已渲染数据中解析确定是否需要调用端能力。如果需要调用端能力,可以向设备端能力模块发送端能力调用指令,以调用设备端的服务能力。如果设备端能力模块向渲染模块返回了基于端能力调用指令所调用的服务能力对应的已渲染数据,则设备端能力模块可以将该已渲染数据发送至容器模块进行处理。

此外,ACE系统中可以包括组件集。ACE系统的组件集中可以包括各组件的可执行代码的集合。ACE系统客户端中也可以包括组件集,客户端的组件集中可以包括部分自定义组件的描述信息的集合。客户端需要渲染的脚本中,可以包括容器引擎的标识、容器组件信息、组件的描述信息等。如果需要在ACE系统中注册自定义组件,客户端需要渲染的脚本中可以包括各自定义组件的描述信息。例如,某个视频网站的APP中,除了包括自身的各种组件、布局之外,还可以包括用于显示“新年快乐”、“中秋快乐”的渲染效果的自定义组件。

在一种示例中,该ACE系统可以应用于带有屏幕的语音智能设备,为设备的系统应用及第三方应用的内容展现提供高效的处理方式,作为智能语音交互的有益补充,能够提高语音智能设备的表现力,达到更好的用户体验。

该ACE系统可以提供多种通信方式的服务:1)基于客户端插件的第三方通信服务;2)基于注册协议的云服务通信;3)基于设备端本地系统的服务通信。具有约定的通信内容,应用容器引擎系统分配相应的容器,在容器中通过组件集及相关指令组织相关内容,完成屏幕内容的渲染,从而完成各个调用方(调用者)的服务目标。此外,该ACE系统还可以对相应服务的生命周期进行管理。

该ACE系统可以在语音智能设备中完成渲染,减少与外部例如云端需要传输的数据量;通过复用容器能够提高渲染处理速度和显示效果。

如图9所示,跨进程渲染管理模块可以包括鉴权模块、脚本运行环境(V8)调用模块、端能力调用模块和指令收发模块等。在接入方APP中可以集成ACE系统客户端。该客户端可以包括通信模块(例如指令接收端)、组件集(例如包括组件的描述信息的集合)、指令执行模块(例如指令执行器)等。其中,云端可以保存APP的安装包等数据,从云端下载APP后,可以在设备端运行该APP。APP中的ACE系统客户端的通信模块可以与ACE系统的跨进程渲染管理模块连接,实现进程间通信。ACE系统客户端的组件集中可以包括注册自定义组件得到的组件的描述信息。此外,ACE系统客户端还可以包括布局管理器,提供容器视图所需的布局信息等。ACE系统客户端的指令执行器可以解析和/或执行收到的各种指令,例如对从云端接收的渲染指令进行解析。

如图10所示,在连接流程中,客户端向跨进程渲染管理模块发送连接请求。跨进程渲染管理模块对连接请求进行鉴权。如果鉴权失败,返回失败的通知。如果鉴权成功,向客户端返回对应权限的远程操作对象例如binder对象,例如内存引用地址。

如图11所示,在请求处理流程中,客户端向跨进程渲染管理模块发起渲染请求或其他事件。例如,跨进程渲染管理模块接收到处理请求后,可以分别对各种处理请求进行处理。例如,对于初始化客户端请求,初始化脚本运行环境以及其他引用依赖资源,获得容器引擎。再如,对于脚本执行请求,查找对应的脚本运行环境实例例如容器引擎。运行代码,产生渲染指令和/或已渲染数据。通过容器引擎构建容器页面,生成显示页面,以显示客户端所需的渲染效果。再如,对于其他端能力请求,可以向设备端能力模块发送(或通过渲染模块向端能力模块发送)端能力调用指令,请求对应的端能力。此外,设备端能力模块还可以产生回执,将该端能力所需的渲染指令和/或已渲染数据等发送给渲染模块。由渲染模块发送给容器模块实现渲染效果。

如图12所示,在连接流程中,可以通过PID(进程标识)、包名等进行鉴权。鉴权过程的示例如下:

客户端向跨进程渲染管理模块请求建立AIDL连接。通过AIDL实现进程间通信。

客户端向跨进程渲染管理模块请求获取远程操作对象。跨进程渲染管理模块判断调用者PID是否是已经验证过的PID。如果是,获取对应权限等级的调用者类型。否则,利用调用者包名进行鉴权。具体可以根据调用者包名获取应用签名,然后判断应用签名是否在预先设置的白名单中。如果是,则获取对应权限等级的调用者类型。否则,返回空(Null),表示鉴权失败。

鉴权成功后,跨进程渲染管理模块可以根据调用者类型获取对应权限的远程操作对象实例,向客户端返回远程操作对象例如interface实例。

如图13所示,在初始化过程中,客户端可以通过远程操作对象实例请求跨进程渲染管理模块初始化脚本引擎(或容器引擎)。跨进程渲染管理模块创建线程、初始化脚本引擎(或容器引擎),注册指令(commands)监听。指令可以包括渲染指令、端能力调用指令等。跨进程渲染管理模块向客户端返回引擎标识。客户端可以通过引擎标识找到对应的容器实例,运行容器实例的代码实现渲染。

如图14所示,在执行脚本过程中,客户端可以向跨进程渲染管理模块请求执行脚本。跨进程渲染管理模块可以根据请求中的引擎标识获取容器引擎(或称为引擎实例)。例如,跨进程渲染管理模块调用容器模块查找引擎标识对应的容器引擎。此外,跨进程渲染管理模块也可以调用渲染模块运行脚本(或称为执行脚本),产生渲染指令和/或已渲染数据。向客户端返回渲染指令和/或已渲染数据的执行结果和状态等,可以操作客户端的组件,更新用户界面。

对于有客户端运行在有屏音箱设备上的第三方应用,想接入动态渲染能力,如一些交互广告等,只需要通过接入轻量级的ACE客户端ACE Client SDK(softwaredevelopment kit,指软件开发工具包)。该SDK可以主要包含基本组件集、渲染指令执行器、布局引擎等,而不包括脚本(例如JS)的v8引擎,不包括端能力实现等等。通过ACE的客户端管理模块(即跨进程渲染管理模块)使用应用容器引擎的提供的服务,实现在屏幕上的相关展示。

根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

图15示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或要求的本公开的实现。

如图15所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入输出(I/O)接口805也连接至总线804。

电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如上述的渲染方法。例如,在一些实施例中,渲染方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的渲染方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行渲染方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

相关技术
  • 基于客户端的渲染方法、装置、设备以及存储介质
  • 小程序组件的渲染方法、客户端、电子设备及存储介质
技术分类

06120112837533