首页> 中国专利> 应用程序中功能的实现方法、装置、电子设备和存储介质

应用程序中功能的实现方法、装置、电子设备和存储介质

摘要

本公开关于一种应用程序中功能的实现方法、装置、电子设备和存储介质,涉及电子技术领域,能够利用跨平台应用程序接口方便的实现应用程序在不同运行环境中的正常使用。该方法包括:监听并获取应用程序的第一事件;确定与第一事件对应的跨平台应用程序接口;跨平台应用程序接口由具备有第一事件对应的功能的至少一种平台应用程序接口封装得到,每种平台应用程序接口对应一种运行环境;通过跨平台应用程序接口调用当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

著录项

  • 公开/公告号CN113094123A

    专利类型发明专利

  • 公开/公告日2021-07-09

    原文格式PDF

  • 申请/专利权人 北京达佳互联信息技术有限公司;

    申请/专利号CN202110310126.9

  • 发明设计人 徐祎村;

    申请日2021-03-23

  • 分类号G06F9/448(20180101);G06F8/41(20180101);G06F8/76(20180101);

  • 代理机构11274 北京中博世达专利商标代理有限公司;

  • 代理人申健

  • 地址 100085 北京市海淀区上地西路6号1幢1层101D1-7

  • 入库时间 2023-06-19 11:45:49

说明书

技术领域

本公开实施例涉及电子技术领域,尤其涉及一种应用程序中功能的实现方法、装置、电子设备和存储介质。

背景技术

随着移动互联网的蓬勃发展,目前存在终端设备可以使用的多种不同的操作系统(简称终端平台或平台),所以为了提升开发效率,降低开发成本,使得自身研发的软件应用可以在不同的平台运行使用,各个软件应用的厂商往往会采用跨平台的开发方案,实现一套软件应用的代码能运行在不同平台的技术方案。

但是目前的跨平台的开发方案,大多针对的场景有限,使得开发得出的跨平台软件应用的性能有限,不能很好的在不同平台的运行环境中正常使用。

发明内容

本公开关于一种应用程序中功能的实现方法、装置、服务器和可读存储介质,能够不通过原生平台安全的实现一套代码支持多种不同平台的开发方案。

为达到上述目的,本公开实施例采用如下技术方案:

第一方面,提供一种应用程序中功能的实现方法,包括:监听并获取应用程序的第一事件;确定与第一事件对应的跨平台应用程序接口;跨平台应用程序接口由具备有第一事件对应的功能的至少一种平台应用程序接口封装得到,每种平台应用程序接口对应一种运行环境;通过跨平台应用程序接口调用当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

可选的,通过跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,以实现目标事件的功能,包括:利用预设引擎通过跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

可选的,该方法还包括:获取应用程序对应的软件包;对软件包进行编译解析,以构建包括有多个跨平台应用程序接口的跨平台应用程序接口层、包括有多种平台应用程序接口的平台应用程序接口层和包括预设引擎的引擎层;每种跨平台应用程序接口对应一种事件,每种平台应用程序接口能够实现一种事件对应的功能,每种事件对应多种目标平台应用程序接口,每种目标平台应用程序接口对应一种运行环境。

可选的,至少一种平台应用程序接口中存在第一平台应用程序接口;第一平台应用程序接口是在原生应用程序接口的基础上扩展了对应功能后得到的。

可选的,该方法还包括:监听并获取应用程序的第二事件;确定与第二事件对应的插件;运行插件,以实现第二事件对应的功能。

可选的,通过跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能,包括:通过跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,获取第一事件所需的平台资源;平台资源包括以下任一项或多项:网路资源、GPU资源、CPU资源、文件IO资源、内存资源、跨进程通信资源;加载平台资源,以实现第一事件对应的功能。

第二方面,提供一种应用程序中功能的实现装置,包括监听模块、确定模块和处理模块。其中,监听模块,被配置为监听并获取应用程序的第一事件;确定模块,被配置为确定与监听模块获取的第一事件对应的跨平台应用程序接口;跨平台应用程序接口由具备有第一事件对应的功能的至少一种平台应用程序接口封装得到,每种平台应用程序接口对应一种运行环境;处理模块,被配置为通过确定模块确定的跨平台应用程序接口调用当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

可选的,处理模块具体被配置为:利用预设引擎通过确定模块确定的跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

可选的,该装置还包括获取模块;获取模块被配置为:获取应用程序对应的软件包;对软件包进行编译解析,以构建包括有多个跨平台应用程序接口的跨平台应用程序接口层、包括有多种平台应用程序接口的平台应用程序接口层和包括预设引擎的引擎层;每种跨平台应用程序接口对应一种事件,每种平台应用程序接口能够实现一种事件对应的功能,每种事件对应多种目标平台应用程序接口,每种目标平台应用程序接口对应一种运行环境。

可选的,至少一种平台应用程序接口中存在第一平台应用程序接口;第一平台应用程序接口是在原生应用程序接口的基础上扩展了对应功能后得到的。

可选的,监听模块还被配置为监听并获取应用程序的第二事件;确定模块还被配置为确定与监听模块获取的第二事件对应的插件;处理模块还被配置为运行确定模块确定的插件,以实现第二事件对应的功能。

可选的,处理模块具体被配置为:通过跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,获取第一事件所需的平台资源;平台资源包括以下任一项或多项:网路资源、GPU资源、CPU资源、文件IO资源、内存资源、跨进程通信资源;加载平台资源,以实现第一事件对应的功能。

第三方面,本公开提供一种电子设备,该电子设备包括处理器和用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现如第一方面提供及其任一种可能的实施方式的应用程序中功能的实现方法。

第四方面,本公开提供一种计算机可读存储介质,该计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备执行如第一方面提供及其任一种可能的实施方式的应用程序中功能的实现方法。

第五方面,本申请实施例还提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以在电子设备上运行,使得电子设备执行如第一方面及其任一种可能的实施方式的应用程序中功能的实现方法。

可以理解的,本公开提供的技术方案中,用于实现应用程序中功能的实现方法的设备在监听并获取到应用程序的第一时间后,会首先确定与该第一时间对应的跨平台应用程序接口;因为该跨平台应用程序接口是由具备有第一事件对应的功能的至少一种平台应用程序接口封装得到的,而且每种平台应用程序接口对应一种运行环境;所以之后该设备可以通过该跨平台应用程序接口调用该应用程序当前所处的平台的运行环境对应的平台应用程序接口,进而实现该第一时间对应的功能。本公开提供的技术方案中,因为开发应用程序时便预先设置了上述的跨平台应用程序接口,所以该应用程序在多种不同的平台或运行环境中都可以正常实现相应的功能,提高用户体验。进一步的,因为存在该跨平台应用程序接口,开发人员在对需要跨平台的应用程序也就可以不依赖多种原生平台来开发对应的应用程序,也就提高了开发效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

图1为本公开实施例提供的一种实施环境示意图;

图2为本公开实施例提供的一种应用程序中功能的实现方法的流程示意图一;

图3为本公开实施例提供的一种应用程序中功能的实现方法的流程示意图二;

图4为本公开实施例提供的一种应用程序中功能的实现方法的流程示意图三;

图5为本公开实施例提供的一种应用程序开发方法的流程示意图一;

图6为本公开实施例提供的一种运行时容器的结构示意图;

图7为本公开实施例提供的一种应用程序开发方法的流程示意图二;

图8为本公开实施例提供的一种应用程序开发方法的流程示意图三;

图9为本公开实施例提供的一种应用程序开发方法的流程示意图四;

图10为本公开实施例提供的一种应用程序中功能的实现方法的补充流程示意图一;

图11为本公开实施例提供的一种应用程序开发方法的流程示意图五;

图12为本公开实施例提供的一种应用程序中功能的实现方法的补充流程示意图二;

图13为本公开实施例提供的一种应用程序中功能的实现装置的结构示意图;

图14为本公开实施例提供的一种电子设备的结构示意图;

图15为本公开实施例提供的另一种电子设备的结构示意图。

具体实施方式

为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。

需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

另外,在本公开实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本公开实施例的描述中,“多个”是指两个或多于两个。

本公开所涉及的数据可以为经用户授权或者经过各方充分授权的数据。

首先,对本公开所涉及的技术术语进行介绍:

Flutter:是Google开源的UI(user interface,用户界面)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web(world wide web,万维网)、桌面和嵌入式平台。

Flutter引擎:是一个用于运行高品质移动应用的可移植运行时。它实现了Flutter的核心库,动画和图形,文件和网络的I/O,支持可访问性(accessibility),插件架构,以及用于开发,编译和运行Flutter应用程序的Dart运行时和开发工具。

Skia:是个2D向量图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现。

API:全称为application programming interface,即应用程序编程接口或应用程序接口,是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定,用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

运行时容器:软件运行时期需要的运行环境,该运行环境内包含有软件运行需要的各个功能。

SDK:全称为software development kit,即软件开发工具包,具体是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。

Dart:谷歌公司开发的计算机编程语言,是面向对象的、类定义的、单继承的语言。

参考图1所示,为本公开实施例提供的技术方案可能涉及的实施环境的示意图。该实施环境,可以包括客户端01和服务器02,客户端01通过有线通讯方式或无线通讯方式与服务器02通信。

示例性的,本公开实施例中的客户端01可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备等可以进行项目开发的设备,本申请实施例对该客户端的具体形态不作特殊限制。

示例性的,本公开中的服务器02可以是一台服务器,也可以是多台服务器组成的服务器集群,或者是一个云计算服务中心,本公开对此不做限定。服务器02主要用于接收客户端发送的应用程序的内容请求并返回对应内容,以及用于接收客户端发送的开发请求和代码,并使用自身设定的框架完成应用的构建。

目前的跨平台的开发方案,大多针对的场景有限,导致有些开发内容只能在原生平台上进行原生开发,进而使得最终开发得出的软件应用的性能有限,不能很好的在不同的平台实现对应的功能。

针对上述问题,本公开提供一种应用程序中功能的实现方法,该方法能够利用跨平台应用程序接口方便的实现应用程序在不同运行环境中的正常使用。该方法的具体执行主体可以为上述的客户端,也可以为上述的服务器,具体根据实际需求而定。本公开实施例后续的描述中,“客户端”指开发人员使用的终端,“服务器”则根据情况的不同,可以是开发人员使用的终端,也可以是和开发人员通过自身使用的终端进行通信交互的服务器。

参照图2所示,为本公开实施例提供一种应用程序中功能的实现方法的流程示意图。该方法由应用程序中功能的实现装置执行,当该应用程序中功能的实现装置为客户端或客户端中的一部分时,该方法可以包括201-203:

201、监听并获取应用程序的第一事件。

示例性的,第一事件可以是用户在使用某个应用程序时,对应用程序的显示界面中单击某个控件(例如“播放”、“分享”、“转发”等)的点击;或者应用程序在接收到用户触发的相应功能后产生的相关事件;对此本申请不做具体限制,具体依据实际而定。

一种可实现的方式中,实际中因为第一事件产生时,必然会实时产生相应的记录信息,所以201步骤也可以是获取第一事件的记录信息用于表征第一事件。具体可以从记录用于存储各项事件的记录信息的数据库中获取第一事件的记录信息。第一事件的记录信息可以是第一事件的描述信息。例如,第一事件的记录信息可以包括第一事件的记录时间、第一事件的属性以及第一事件的内容说明等。

202、确定与第一事件对应的跨平台应用程序接口;跨平台应用程序接口由具备有第一事件对应的功能的至少一种平台应用程序接口封装得到,每种平台应用程序接口对应一种运行环境。

示例性的,以第一事件对应的功能为对目标图像进行渲染为例,第一事件对应的快平台应用程序接口可以由安卓平台、ios平台和微软平台中能够实现对目标图像进行渲染的平台应用程序接口封装得到。具体封装方式可以为任一可行方式。在本公开中运行环境和平台一一对应,即每种平台都仅对应各自的运行环境。

203、通过跨平台应用程序接口调用当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

本公开提供的技术方案中,用于实现应用程序中功能的实现方法的设备在监听并获取到应用程序的第一时间后,会首先确定与该第一时间对应的跨平台应用程序接口;因为该跨平台应用程序接口是由具备有第一事件对应的功能的至少一种平台应用程序接口封装得到的,而且每种平台应用程序接口对应一种运行环境;所以之后该设备可以通过该跨平台应用程序接口调用该应用程序当前所处的平台的运行环境对应的平台应用程序接口,进而实现该第一时间对应的功能。本公开提供的技术方案中,因为开发应用程序时便预先设置了上述的跨平台应用程序接口,所以该应用程序在多种不同的平台或运行环境中都可以正常实现相应的功能,提高用户体验。进一步的,因为存在该跨平台应用程序接口,开发人员在对需要跨平台的应用程序也就可以不依赖多种原生平台来开发对应的应用程序,也就提高了开发效率。

可选的,结合图2,参照图3所示,203步骤具体可以为:

203、利用预设引擎通过所述跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

示例性的,预设引擎可以为flutter引擎。

可选的,结合图2,参照图4所示,203步骤具体还可以包括2031和2032:

2031、通过跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,获取第一事件所需的平台资源。

其中,平台资源包括以下任一项或多项:网路资源、GPU资源、CPU资源、文件IO资源、内存资源、跨进程通信资源;

2032、加载平台资源,以实现第一事件对应的功能。

这样一来,便可以使得第一时间对应的平台API获取到相应的平台资源以顺利实现相应的功能。

这样一来,因为平台API不是直接被调用的,需要经过flutter引擎,而flutter引擎中会预先设定好调用规则,不能任意调用,也就保证了应用程序在使用过程中的安全性。

可选的,为了能够使得客户端实现上述实施例提供的技术方案,结合图2,参照图3所示,在201步骤之前还可以包括200A和200B:

200A、获取应用程序对应的软件包。

示例性的,以安卓平台为例,这里的软件包可以为jar包和so文件。

200B、对软件包进行编译解析,以构建包括有多个跨平台应用程序接口的跨平台应用程序接口层、包括有多种平台应用程序接口的平台应用程序接口层和包括预设引擎的引擎层。

其中,每种跨平台应用程序接口对应一种事件,每种平台应用程序接口能够实现一种事件对应的功能,每种事件对应多种目标平台应用程序接口,每种目标平台应用程序接口对应一种运行环境。

具体的,以安卓平台为例,对软件包进行编译解析后,会存在两部分内容,一部分为包含有预设引擎的编译产物,另一部则为用于启动预设引擎形成引擎层和能够加载形成平台应用程序接口层和跨平台应用程序接口层的编译产物。其中,因为加载编译产物必然会消耗客户端的相关资源,而平台应用程序接口层中的每个平台应用程序接口并不会全部同时使用,所以为了降低对客户端资源的侵占,在本公开实施例中,对平台应用程序接口层中各个平台应用程序接口可以采用懒加载的方式,后续在需要使用到时再进行相关资源的申请和占用。

这样一来,便可以使得应用程序在客户端或其他电子设备中运行时,构建出需要的跨平台应用程序接口,从而使得不论当前平台或运行环境是什么,该应用程序的都可以顺利正常的实施自身具备的功能。

一种可实现的方式中,参照图5所示,为了形成上述的软件包,需要在本公开提供的应用程序中功能的实现方法实施之前,需要实施下述301和302步骤,301和302步骤对应的技术方案的执行主体可以为开发者使用的客户端或者服务器。

301、获取至少一种平台应用程序接口。

其中,每一种平台API对应一种操作系统/平台/运行环境,每一种平台API用于实现一种事件对应的功能。示例性的,每一种平台API具体可以为具备以下操作系统级别功能的API中的一种:图片解码、视频编解码、自定义网络通信协议、进程间内存拷贝。

具体的,获取至少一种平台API可以先获取开发需求(可以是具体的功能清单,功能清单中需要的功能可以是绘制窗口、获取内存信息、读写数据等在开发过程中需要用到的各个功能),然后从至少一种操作系统中获取对应开发需求的平台API。以开发需求为功能清单为例,每一种操作系统中都有对应其平台API的说明文档,所以这里可以根据功能清单中的各个功能和每一种操作系统的平台API说明文档,选取对应的平台API。

示例性的,本公开中,针对不同的操作系统,可以根据操作系统的技术文档等获取各个底层功能对应的平台API,在获取平台API了之后,根据平台API形成对应的平台API列表,然后可以根据不同的功能或类别对所有平台API进行封装。本公开中获取的平台API经过封装后可以形成如图6所示的运行时容器的功能分层中的平台应用程序接口层;在本公开中,这一层定义了统一的API和规范,限定了图6所示的运行时容器在不同平台上运行时实现平台API层中各个API对应的能力时必须遵守的规范。另外,需要说明的是,这一层在形成时,对平台API可以是根据其相应的功能进行封装,也可以是其他任意可行方式,对此本申请不做具体限制。

302、在预设容器中通过预设引擎暴露平台应用程序接口。

示例性的,在本公开中,该预设容器可以是flutter运行时容器、预设引擎可以是flutter引擎。参照图6所示,以预设容器为flutter运行时容器、预设引擎为flutter引擎为例,本公开通过对flutter引擎进行改写,将原flutter依赖的实现改为使用301步骤可以形成的平台应用程序接口层,同时对flutter引擎的增加、修改、删除了一些对框架framework层暴露的API,这样一来,在为flutter运行时容器中,flutter引擎(本公开中,flutter引擎可以为flutter引擎层)便可以将平台API层中的平台API封装形成最上层(本公开称为跨平台API层)中的flutter framework api(flutter框架应用程序接口,即前述的跨平台应用程序接口)中的一些API暴露(相当于上述的302步骤),从而使得开发者可以利用最上层暴露的flutter framework api按照自身需求,编写应用代码(即应用程序对应的代码)调用不同的API,实现相应的功能。进一步的,因为flutter引擎中用skia作为渲染引擎,而Skia不是自定义一套组件去映射不同平台的UI组件的,而是用户根据自身需求完成UI组件的设计的,所以如果本公开采用flutter引擎和flutter运行时容器,则可以达到对不同场景自由拓展的目的,也就避免了现有的跨平台开发方案中场景有限的缺陷。另外,flutter技术还会提供一套类似web网页微件widget系统来构建UI,而widget是可以自由拓展的,所以在本公开采用flutter引擎和flutter运行时容器时,开发人员在开发时,还可以更加自由的对UI进行构建,保证应用的丰富显示效果,以提高用户体验。本公开中,暴露属于软件工程中的专用词汇,具体是指提供给开发人员可以调用的接口,不暴露API的话,开发人员在开发时将无法调用相应功能。

需要说明的是,因为实际中如果平台API过多,会导致预设引擎的性能需求过大,从而使得开发出来的应用程序的代码自身过于臃肿庞大,不便于调试和维护,所以为了避免这一点,本公开中的平台API可以只有那些会对操作系统的关键性能产生影响的功能对应的API。另外,预设引擎在对平台API进行暴露时,会根据不同操作平台的区别,将隶属于不同操作系统的平台API按照相应功能封装后暴露,从而使得开发人员可以调用统一的跨平台API,即开发人员在调用某个跨平台API时,实际上调用了隶属于不同操作系统的多个平台API,从而保证开发出的代码可以适用于多个不同的操作系统。

基于上述方案,因为平台API是在预设容器中通过预设引擎暴露的,所以保证了平台API的安全,同时因为上述技术方案中的平台API是对应多个操作系统的,所以开发人员在通过暴露的平台API对某个应用进行开发时,可以根据自身需求,使得开发出的应用代码能够调用针对不同操作系统的不同API,所以最终开发得出的代码可以适用于多种不同操作系统,开发效率高且不需要依赖于原生平台进行开发,所以能够达到不通过原生平台安全的实现一套代码支持多种不同平台的开发方案。进一步的,因为在本公开的技术方案中可以对操作系统级的平台API进行调用,而平台API中具备有可以直接在进程间进行数据交换和通信,不需要通过通信序列化通信,提高了开发完成后应用程序的性能,提高了用户体验。

可选的,结合图5,参照图7所示,因为在使用预设引擎作为开发应用的重要部分时,预设引擎本身的一些功能也需要供开发人员使用,所以为了满足开发人员对预设引擎本身的使用需求,301步骤之后还可以包括303:

303、在预设容器中暴露预设引擎对应的核心应用程序接口。

示例的,以预设容器为flutter运行时容器、预设引擎为flutter引擎为例,参照图6所示,在flutter运行时容器中,核心API位于第二层(本公开中称为平台拓展层),该层可以将自身包含的核心API封装成最上层(跨平台应用程序接口层)的flutter框架应用程序接口中的一部分供开发人员使用。

结合图5,参照图8所示,因为实际中的平台API的功能可能会较为固定,有时开发人员在需要的功能可能会需要平台API对应功能的变种,例如原平台API可以实现画圆功能,而开发人员可能会需要画方功能,此时如果无法对平台API修改,则可能导致开发人员的需求无法得到满足,所以302步骤可以包括3021-3023:

3021、接收修改指令。

其中,修改指令用于指示对平台API进行修改。

因为,并不是所有平台API都需要对功能进行修改,所以修改指令还可以包括有需要修改的平台API的标识。具体修改可以新增可选参数,以使原始平台API增加新的功能。

3022、根据修改指令对平台应用程序接口修改得到目标平台应用程序接口。

3023、在预设容器中通过预设引擎暴露目标平台应用程序接口。

示例性的,以预设容器为flutter运行时容器、预设引擎为flutter引擎为例,参照图6所示,flutter引擎在将平台API层的平台API暴露出来后,如果接收到开发客户端发送的修改指令,则会根据修改指令对其中的部分平台API进行修改并封装形成第二层(平台拓展层)的定制架构应用程序接口(customized framework api),然后再和未修改的平台API以及核心API一起封装成为最上层(跨平台API层)中flutter框架应用程序接口的一部分。需要说明的是,上述3022步骤的目标平台API包括修改后的部分平台API和未修改的平台API,对于未修改的平台API而言,可以认为修改指令指示对其的修改为空。

这样一来,便可以方便开发人员对平台API进行修改,以满足更多的开发需求。

进一步可选的,基于上述图8对应的技术方案中的平台拓展层,在本公开中,至少一种平台应用程序接口中存在第一平台应用程序接口;第一平台应用程序接口是在原生应用程序接口的基础上扩展了对应功能后得到的。

这样一来,可以使得平台固有的平台API拓展出更多的功能,方便用户使用,提高用户体验。

结合图5,参照图9所示,因为开发者在对某个应用进行开发时,可以会需要用到平台API完全不具备的功能,此时单单对平台API进行修改是无法达到需求的,所以此时需要开发人员设计相应的插件以完成相应的功能,所以在301和302对应的技术方案中,还可以包括X1-X3:

X1、接收插件建立指令。

其中,插件建立指令携带有插件建立信息;插件建立指令用于指示建立插件。

X2、根据所插件建立指令建立插件,并对建立的插进进行注册以获取插件对应的插件应用程序接口。

示例性的,以预设容器为flutter运行时容器、预设引擎为flutter引擎为例,参照图6所示,插件可以注册在最上层(即跨平台API层),当插件完全使用dart代码编写时,其可以称为flutter功能块(flutter module),当插件不仅由dart代码实现还需要对某类原生平台的功能封装时,可以称为flutter插件(flutter plugin)。在本公开中,这里的插件可以是全新的功能,也可以是对平台API或核心API(对应flutter引擎)的全面覆盖(即包含原有功能,又存在新的功能)。

X3、在预设容器中暴露插件应用程序接口。

示例性的,以预设容器为flutter运行时容器、预设引擎为flutter引擎为例,参照图6所示,插件API可以为插件接口(pluin-insservice api),当该插件接口被开发人员使用时,其可以提供其对应的flutter module和flutter plugin对应的插件功能。X3步骤主要由最上层跨平台API层实现。

这样一来,便可以保证开发人员在不同场景的开发需求,开发出的应用程序也就包含有能够实现独特功能的插件,即保证开发的顺利进行也提高后续应用程序的使用体验。

基于图9对应的技术方案,参照图10所示,本公开提供的应用程序中功能的实现方法还可以包括S1-S3:

S1、监听并获取应用程序的第二事件。

S2、确定与第二事件对应的插件。

其中,插件可以为图9对应的技术方案中的插件。当然,为了实现图10对应的技术方案,在200A步骤中获取的软件包中应当包含有如图9中所示的平台拓展层对应的代码,后续在200B步骤中,对该软件包进行编译解析时,则可以构建出该平台拓展层,以保证后续应用程序在被使用时产生的第二事件可以由相应的插件调用。具体该插件是使用自有的函数实现相应的功能还是利用平台API实现相应功能,本公开不做具体显示,具体根据实际需求而定。

S3、运行插件,以实现第二事件对应的功能。

这样一来,因为应用程序存在能够实现独特功能的插件,所以其中的某些功能可以更加多元化、个性化,从而达到提高用户体验的目的。

结合图5,参照图11所示,在301和302对应的技术方案中,还可以包括304:

304、在预设容器中暴露第三方软件开发工具包的应用程序接口。

其中,第三方SDK软件开发工具包(SDK,software development kit)至少用于以下一项或多项:调用所有平台API中的预设API、调用第三方开源数据库中的第三方API;预设API为稳定参数大于预设值的API,稳定参数用于表征所属API被调用时所属API对应的应用程序运行时的稳定以及数据安全程度。

示例性的,以预设容器为flutter运行时容器、预设引擎为flutter引擎为例,参照图6所示,能够实现调用所有平台API中的预设API的功能的第三方SDK可以位于第二层(平台拓展层),具体可以为“直调SDK”,能够实现调用第三方开源数据库中的第三方API的第三方SDK可以为“平台特定实现(plat specific implement)”。

这样一来,因为在实际开发中除了本公开中可以提供的各类API以外,如果开发人员不想建立插件或者对平台API进行修改,但又想使用其他功能的API时,可以从其他开源AIP库中获取相应的API,所以需要上述的“平台特定实现”,这样一来,可以给开发人员提供更多的开发可能性,提高开发人员的使用体验。另外,对于预设API,其即便不经过flutter引擎也能保证最终开发得出应用以及应用所处操作系统的安全性,所以对于预设API,处于方便考虑,本公开设计上述的“直调SDK”,方便开发人员在使用某种第三方SDK时直接调用平台API层中的预设API,提高开发效率。

需要说明的是,以预设容器为flutter运行时容器、预设引擎为flutter引擎为例,参照图6所示,因为flutter技术对应的编写代码是dart代码,而不同操作系统的平台API不一定是使用dart代码编写的,所以为了完成对所有API(平台API)的具体实现以及对上述“平台特定实现”获取的第三方API的代码转换,在第二层(平台拓展层)还包括有“dart实现”。

上述技术方案中,首先获取多个操作系统的平台API,然后在预设容器中通过预设引擎暴露该平台API。因为平台API是在预设容器中通过预设引擎暴露的,所以保证了平台API的安全,同时因为本公开的技术方案中的平台API是对应多个操作系统的,所以开发人员在通过暴露的平台API对某个应用进行开发时,可以根据自身需求,使得开发出的应用代码能够调用针对不同操作系统的不同API,所以最终开发得出的代码可以适用于多种不同操作系统,开发效率高且不需要依赖于原生平台进行开发,所以能够达到不通过原生平台安全的实现一套代码支持多种不同平台的开发方案。

基于前述技术方案,开发人员在使用该方案编译好一个应用的后,该应用的程序包在任一平台(操作系统,例如ios系统)编译时,会根据平台的特性,编译生成两部分,第一部分包括对应该平台的flutter引擎和对应该平台的平台API,第二一部分包括运行在第一部分创建的运行环境(flutter运行时容器和dart虚拟机(由flutter引擎生成))中的AOT(aheadof time)编译产物snapshot。当该应用被启动时,第一部分中的flutter引擎会立即加载完成初始化,形成flutter运行时容器中的flutter引擎层和平台API层,并提供可供平台拓展层调用的API(方便平台拓展层调用);其中平台API层中的平台API会向该平台申请底层资源,为了保证底层资源(内存资源、CPU资源等)被该应用申请过多,这里的平台API层中的一部分平台API会懒加载,即在初始化时只会给部分平台API申请底层资源,另外一部分,只有在需要被使用时,才会为其申请底层资源。在flutter引擎层和平台API层初始化完成后,第二部分的AOT编译产物snapshot会在flutter引擎层和平台API层初始化完成形成的运行环境中,完成跨平台API层和平台拓展层的初始化。而后应用便启动成功,在应用被用户使用时,flutter引擎会控制页面UI的渲染,并监听用户的操作,对于用户的操作需要改应用执行的任务,flutter引擎会触发相应回调事件发送给跨平台API层中对应的上层API(例如前述实施例中的flutter framework api),跨平台API层会利用根据接收到该事件的上层API调用不同层的能力来调用该平台的资源(包括网路资源、GPU资源、CPU资源、文件IO资源、内存资源、跨进程通信资源等),已完成用户操作对应的图片编辑、视频转码等功能。总体上,通过本申请方案开发出的应用会在平台中生产前述实施例中的flutter运行时容器,该容器接管了类似原生应用中的原生进程的任务,并可以通过容器中的不同层将平台的能力或资源逐层进行了封装,最终通过跨平台API层暴露简单易用的上层API供应用使用,所以本申请提供的技术方案,能够保障最终开发出的跨平台应用能够顺利在不同平台实现对应的宫那个。

可选的,基于上述图11对应的技术方案,本公开提供的应用程序中功能的实现方法中,参照图12所示,还可以包括L1-L3:

L1、监听并获取应用程序的第三事件。

L2、确定与第三事件对应的第三方软件开发工具包应用程序接口。

L3、通过第三方软件开发工具包应用程序接口实现第三事件对应的功能。

这样一来,应用程序在被使用时,对于一些不影响操作系统的安全性和稳定性的平台API或者操作系统以外的开源API数据库,可以通过第三方SDK应用程序接口实现,保证了应用程序功能的多样化和自由性,提高了用户体验。

上述说明主要从服务器的角度对本公开实施例提供的方案进行了介绍。可以理解的是,服务器可以分别通过其中配置的应用程序中功能的实现装置实现上述功能。为了实现上述功能,应用程序中功能的实现装置包含了执行各个功能相应的硬件结构和/或软件模块,这些执行各个功能相应的硬件结构和/或软件模块可以构成一个终端。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。

本公开实施例可以根据上述方法示例对服务器进行功能模块的划分,例如,服务器可以包括应用程序中功能的实现装置,应用程序中功能的实现装置可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图13给出了应用在图1所示客户端01中的应用程序中功能的实现装置03的一种可能的结构示意图,该应用程序中功能的实现装置03包括:监听模块31、确定模块32和处理模块33。

具体的,监听模块31,被配置为监听并获取应用程序的第一事件;确定模块32,被配置为确定与监听模块31获取的第一事件对应的跨平台应用程序接口;跨平台应用程序接口由具备有第一事件对应的功能的至少一种平台应用程序接口封装得到,每种平台应用程序接口对应一种运行环境;处理模块33,被配置为通过确定模块32确定的跨平台应用程序接口调用当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

可选的,处理模块33具体被配置为:利用预设引擎通过确定模块32确定的跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,以实现第一事件对应的功能。

可选的,该装置还包括获取模块;获取模块被配置为:获取应用程序对应的软件包;对软件包进行编译解析,以构建包括有多个跨平台应用程序接口的跨平台应用程序接口层、包括有多种平台应用程序接口的平台应用程序接口层和包括预设引擎的引擎层;每种跨平台应用程序接口对应一种事件,每种平台应用程序接口能够实现一种事件对应的功能,每种事件对应多种目标平台应用程序接口,每种目标平台应用程序接口对应一种运行环境。

可选的,至少一种平台应用程序接口中存在第一平台应用程序接口;第一平台应用程序接口是在原生应用程序接口的基础上扩展了对应功能后得到的。

可选的,监听模块31还被配置为监听并获取应用程序的第二事件;确定模块32还被配置为确定与监听模块31获取的第二事件对应的插件;处理模块33还被配置为运行确定模块32确定的插件,以实现第二事件对应的功能。

可选的,处理模块33具体被配置为:通过跨平台应用程序接口调用与当前运行环境对应的平台应用程序接口,获取第一事件所需的平台资源;平台资源包括以下任一项或多项:网路资源、GPU资源、CPU资源、文件IO资源、内存资源、跨进程通信资源;加载平台资源,以实现第一事件对应的功能。

关于上述实施例中的应用程序中功能的实现装置,其中各个模块执行操作的具体方式和相关有益效果已经在前述中的应用程序中功能的实现方法的实施例中进行了详细描述,此处将不再做详细阐述说明。

在采用集成的单元的情况下,图14是根据一示例性实施例示出的所示的电子设备的一种可能结构示意图,该电子设备可以为上述的应用程序中功能的实现装置,也可以为包含有该装置的客户端或服务器。如图14所示,该电子设备包括处理器41和存储器42。其中,存储器42用于存储处理器41可执行的指令,处理器41则可以实现上述实施例中应用程序中功能的实现装置03中各个模块的功能。

其中,在具体的实现中,作为一种实施例,处理器41(41-1和41-2)可以包括一个或多个CPU,例如图14中所示的CPU0和CPU1。且作为一种实施例,空调的控制装置可以包括多个处理器41,例如图14中所示的处理器41-1和处理器41-2。这些处理器41中的每一个CPU可以是一个单核处理器(Single-CPU),也可以是一个多核处理器(Multi-CPU)。这里的处理器41可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

存储器42可以是只读存储器42(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘可读存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器42可以是独立存在,通过总线43与处理器41相连接。存储器42也可以和处理器41集成在一起。

总线43,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component interconnect,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线43可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

另外,为了方便电子设备与其他设备(例如服务器或客户端)进行信息交互,该电子设备包括通信接口44。通信接口44,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如控制系统、无线接入网(radio access network,RAN),无线局域网(wirelesslocal area networks,WLAN)等。通信接口44可以包括接收单元实现接收功能,以及发送单元实现发送功能。

在一些实施例中,参照图15所示,该电子设备可以为客户端,此时该电子设备还可选包括有:外围设备接口45和至少一个外围设备。处理器41、存储器42和外围设备接口45之间可以通过总线43或信号线相连。各个外围设备可以通过总线43、信号线或电路板与外围设备接口45相连。具体地,外围设备包括:射频电路46、显示屏47、摄像头48、音频电路49、定位组件50和电源51中的至少一种。

外围设备接口45可被用于将I/O(input/output,输入/输出)相关的至少一个外围设备连接到处理器41和存储器42。在一些实施例中,处理器41、存储器42和外围设备接口45被集成在同一芯片或电路板上;在一些其他实施例中,处理器41、存储器42和外围设备接口45中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不予限定。

射频电路46用于接收和发射RF(radio frequency,射频)信号,也称电磁信号。射频电路46通过电磁信号与通信网络以及其他通信设备进行通信。射频电路46将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路404包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路46可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或Wi-Fi(wireless fidelity,无线保真)网络。在一些实施例中,射频电路46还可以包括NFC(near field communication,近距离无线通信)有关的电路,本公开对此不加以限定。

显示屏47用于显示UI(user interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏47是显示屏时,显示屏47还具有采集在显示屏47的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器41进行处理。此时,显示屏47还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏47可以为一个,设置客户端的前面板;显示屏47可以采用LCD(liquidcrystal display,液晶显示屏)、OLED(organic light-emitting diode,有机发光二极管)等材质制备。

摄像头组件48用于采集图像或视频。可选地,摄像头组件48包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。音频电路49可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器41进行处理,或者输入至射频电路46以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在客户端的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器41或射频电路46的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路49还可以包括耳机插孔。

定位组件50用于定位客户端的当前地理位置,以实现导航或LBS(location basedservice,基于位置的服务)。定位组件50可以是基于美国的GPS(global positioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源51用于为客户端中的各个组件进行供电。电源51可以是交流电、直流电、一次性电池或可充电电池。当电源51包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,电子设备还包括有一个或多个传感器410。该一个或多个传感器410包括但不限于:加速度传感器、陀螺仪传感器、压力传感器、指纹传感器、光学传感器以及接近传感器。

加速度传感器可以检测以客户端建立的坐标系的三个坐标轴上的加速度大小。陀螺仪传感器可以检测客户端的机体方向及转动角度,陀螺仪传感器可以与加速度传感器协同采集用户对客户端的3D动作。压力传感器可以设置在客户端的侧边框和/或显示屏47的下层。当压力传感器设置在终端01的侧边框时,可以检测用户对客户端的握持信号。指纹传感器用于采集用户的指纹。光学传感器用于采集环境光强度。接近传感器,也称距离传感器,通常设置在客户端的前面板。接近传感器用于采集用户与客户端的正面之间的距离。

本领域技术人员可以理解,图14或图15中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有指令,当该可读存储介质上的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例中提供的应用在电子设备中的应用程序中功能的实现装置上的应用程序中功能的实现方法。

本公开实施例还提供一种包含指令的计算机程序产品,当其在电子设备上运行时,使得电子设备执行前述实施例提供的应用程序中功能的实现方法。

通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号