CN110851240B - 功能调用方法、装置及存储介质 - Google Patents
功能调用方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110851240B CN110851240B CN201911130079.9A CN201911130079A CN110851240B CN 110851240 B CN110851240 B CN 110851240B CN 201911130079 A CN201911130079 A CN 201911130079A CN 110851240 B CN110851240 B CN 110851240B
- Authority
- CN
- China
- Prior art keywords
- function
- target
- file
- fast application
- target function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Abstract
本公开是关于一种功能调用方法、装置及存储介质,属于终端技术领域。所述方法包括:当快应用接收到对应于操作系统提供的目标功能的调用请求时,从操作系统中将目标可执行文件调用至快应用的运行进程;通过快应用执行目标可执行文件以调用目标功能。本公开实施例提供了一种快应用与操作系统的功能接口之间的调用方式,使得快应用能够调用操作系统提供的功能,扩展快应用的能力。
Description
技术领域
本公开实施例涉及终端技术领域,特别涉及一种功能调用方法、装置及存储介质。
背景技术
快应用是一种无需下载、即搜即用的新形态应用,使用了前端技术栈开发,同时具备HTML 5(Hyper Text Markup Language 5,超文本标记语言5)与原生应用的双重优点。
快应用一般采用JS(JavaScript)进行开发,而终端操作系统提供的功能接口一般采用C或C++等程序设计语言编写,这就导致快应用与操作系统的功能接口之间的调用存在问题。
发明内容
本公开实施例提供了一种功能调用方法、装置及存储介质,所述技术方案如下:
当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到所述快应用的运行进程,所述目标可执行文件用于实现所述目标功能;
调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中;
通过所述快应用在所述JS环境中调用所述功能接口以执行所述目标功能;
其中,所述快应用是基于集成在所述操作系统中的快应用框架运行且无需手动安装的应用。
可选地,所述调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中,包括:
调用所述目标可执行文件的初始化函数,在所述JS环境中创建JS对象;
将所述目标可执行文件提供的所述功能接口注册到所述JS对象上。
可选地,所述方法还包括:
获取所述目标功能对应的接口定义语言文件,所述接口定义语言文件用于定义所述功能接口;
根据所述接口定义语言文件对所述目标功能对应的源文件进行编译,生成所述目标可执行文件。
可选地,所述根据所述接口定义语言文件对所述目标功能对应的代码进行编译,生成所述目标可执行文件,包括:
将所述接口定义语言文件转换为采用第一编程语言编写的文件,得到转换后的文件;
对所述转换后的文件和所述目标功能对应的源文件共同进行编译,生成所述目标可执行文件,所述目标功能对应的代码是采用所述第一编程语言编写的。
可选地,所述方法还包括:
将第一回调函数传给所述目标功能的执行函数;
通过所述目标功能的执行函数在获取到所述目标功能的相关参数之后,调用所述第一回调函数将所述目标功能的相关参数发送给所述快应用。
可选地,所述方法还包括:
在所述目标功能的对象上添加第二回调函数,所述第二回调函数用于监听所述目标功能的事件;
当所述目标功能的对象监听到所述事件时,通过所述第二回调函数将所述目标功能的相关参数发送给所述快应用。
根据本公开实施例的第二方面,提供了一种功能调用装置,所述装置包括:
文件载入模块,被配置为当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到所述快应用的运行进程,所述目标可执行文件用于实现所述目标功能;
函数调用模块,被配置为调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中;
接口调用模块,被配置为通过所述快应用在所述JS环境中调用所述功能接口以执行所述目标功能;其中,所述快应用是基于集成在所述操作系统中的快应用框架运行且无需手动安装的应用。
可选地,所述函数调用模块,被配置为:
调用所述目标可执行文件的初始化函数,在所述JS环境中创建JS对象;
将所述目标可执行文件提供的所述功能接口注册到所述JS对象上。
可选地,所述装置还包括:
文件获取模块,被配置为获取所述目标功能对应的接口定义语言文件,所述接口定义语言文件用于定义所述功能接口;
文件生成模块,被配置为根据所述接口定义语言文件对所述目标功能对应的源文件进行编译,生成所述目标可执行文件。
可选地,所述文件生成模块,被配置为:
将所述接口定义语言文件转换为采用第一编程语言编写的文件,得到转换后的文件;
对所述转换后的文件和所述目标功能对应的源文件共同进行编译,生成所述目标可执行文件,所述目标功能对应的代码是采用所述第一编程语言编写的。
可选地,所述装置还包括:
函数传递模块,被配置为将第一回调函数传给所述目标功能的执行函数;
第一参数发送模块,被配置为通过所述目标功能的执行函数在获取到所述目标功能的相关参数之后,调用所述第一回调函数将所述目标功能的相关参数发送给所述快应用。
可选地,所述装置还包括:
函数添加模块,被配置为在所述目标功能的对象上添加第二回调函数,所述第二回调函数用于监听所述目标功能的事件;
第二参数发送模块,被配置为当所述目标功能的对象监听到所述事件时,通过所述第二回调函数将所述目标功能的相关参数发送给所述快应用。
根据本公开实施例的第三方面,提供了一种功能调用装置,所述装置包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到所述快应用的运行进程,所述目标可执行文件用于实现所述目标功能;
调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中;
通过所述快应用在所述JS环境中调用所述功能接口以执行所述目标功能;
其中,所述快应用是基于集成在所述操作系统中的快应用框架运行且无需手动安装的应用。
根据本公开实施例的第四方面,提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的功能调用方法的步骤。
本公开实施例提供的技术方案可以带来以下有益效果:
当快应用接收到对应于操作系统提供的目标功能的调用请求时,通过将目标可执行文件载入到快应用的运行进程,然后调用该目标可执行文件的初始化函数,将目标可执行文件提供的功能接口注册到JS环境中,从而使得快应用能够在JS环境中调用上述功能接口以执行目标功能;提供了一种快应用与操作系统的功能接口之间的调用方式,使得快应用能够调用操作系统提供的功能,扩展快应用的能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种功能调用方法的流程图;
图2是根据一个示例性实施例示出的快应用框架的框图;
图3是根据一个示例性实施例示出的快应用的启动流程图;
图4是根据一示例性实施例示出的一种功能调用装置的框图;
图5是根据另一示例性实施例示出的一种功能调用装置的框图;
图6是根据一示例性实施例示出的一种装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
快应用是一种基于手机硬件平台的新型应用形态,无需安装,即点即用,又兼具原生应用体验(性能、系统整合、交互等)。同时,快应用在诞生之初就在开发规范、能力接入、开发者服务等层面实现了手机厂商间的标准化统一,极大地降低开发者的适配成本。
与传统应用相比,快应用具备如下特点:
Instant:即点即用,用户无需等待;
Everywhere:与手机的使用场景深度整合,入口无处不在(搜索,智能助手,智能推荐,应用市场,浏览器……);
Efficient:准前端的开发方式,效率高。
由于快应用的特殊性,快应用被期待完成更多的任务,实现更多的功能。目前,快应用的功能正在逐步完善中,本公开实施例就是提供了一种快应用的新功能,利用该新功能实现快应用调用操作系统提供的功能接口,扩展了快应用的功能,提高了快应用的处理能力以及实用性。
在本公开实施例中,各步骤的执行主体可以是终端,如手机、平板电脑、电子书阅读器、多媒体播放设备、可穿戴设备、PC(Personal Computer,个人计算机)等电子设备。可选地,上述终端的操作系统中可以设置有快应用框架。其中,快应用是基于集成在操作系统中的快应用框架运行且无需手动安装的应用,操作系统是用于对终端的硬件和软件资源进行管理的计算机程序。可选地,上述操作系统可以是Android(安卓)操作系统、iOS操作系统、Windows操作系统或者其它定制操作系统,或者自研操作系统等,本公开实施例对此不作限定。需要说明的一点是,在本公开实施中,各步骤的执行主体可以是终端的处理器。在下述的方法实施例中,为了便于描述说明,仅以各步骤的执行主体为终端进行介绍说明。
图1是根据一示例性实施例示出的一种功能调用方法的流程图。该方法可以包括以下几个步骤(101~103):
在步骤101中,当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到快应用的运行进程。
目标功能是指由操作系统提供的某种功能,例如相机功能、录音功能、下载功能等。目标功能的调用请求用于向操作系统请求调用上述目标功能。可选地,该调用请求基于用户在快应用上执行的操作生成。例如,用户在使用快应用时点击快应用提供的拍照按钮,由于拍照需要启用操作系统提供的相机功能,因此生成对应于相机功能的调用请求。
目标可执行文件是用于实现上述目标功能的可执行文件。可选地,该目标可执行文件为动态库文件。可选地,终端可以通过操作系统将该目标可执行文件载入到快应用的运行进程中,进一步地,快应用可以通过调用该目标可执行文件中的功能接口,并通过该功能接口调用上述目标功能的执行函数,进而执行上述目标功能。目标可执行文件中可以包括与目标功能相关的至少一个功能接口,例如,当目标功能为相机功能时,与该相机功能相关的功能接口可以包括打开相机的功能接口、拍摄图像的功能接口、关闭相机的功能接口等。
另外,当快应用处于运行状态时,该快应用具有相应的运行进程。例如,当用户打开快应用时,该快应用对应的运行进程启动,当用户退出该快应用时,该快应用对应的运行进程结束。需要说明的一点是,上述快应用的打开方式可以是通过快应用框架基于已存储的快应用文件打开快应用,也可以是从快应用仓库下载获取快应用文件,启动运行快应用。
由于目标功能是系统级的功能,因此目标功能对应的功能接口一般采用第一编程语言编写,如该第一编程语言可以是C或C++等程序设计语言,而快应用一般采用第二编程语言开发,该第二编程语言与第一编程语言不同,该第二编程语言可以是JS。
在步骤102中,调用目标可执行文件的初始化函数,将目标可执行文件提供的功能接口注册到JS环境中。
初始化函数用于将目标可执行文件提供的功能接口注册到JS环境中,使得快应用可以在JS环境中调用该功能接口。由于快应用是采用JS进行开发的,快应用的运行环境为JS环境,因此需要将目标功能的功能接口注册到JS环境中,才能确保快应用能够成功调用该功能接口。
可选地,上述目标可执行文件包括初始化函数和目标功能对应的功能接口。终端可以通过调用目标可执行文件的初始化函数,将该目标可执行文件提供的功能接口注册到JS环境中。
可选地,上述步骤102包括以下几个子步骤:
1、调用目标可执行文件的初始化函数,在JS环境中创建JS对象;
2、将目标可执行文件提供的功能接口注册到JS对象上。
终端在将目标可执行文件载入到快应用的运行进程之后,调用该目标可执行文件的初始化函数,通过该初始化函数在JS环境中创建JS对象。之后,终端将上述目标可执行文件提供的功能接口注册到上述JS对象上,从而实现将目标可执行文件提供的功能接口注册到JS环境中。这样,快应用可以在JS环境中通过调用该功能接口,以执行上述目标功能。
在步骤103中,通过快应用在JS环境中调用功能接口以执行目标功能。
可选地,终端在将上述功能接口注册到JS环境之后,快应用可以通过在JS环境中调用上述功能接口以执行上述目标功能。
综上所述,本公开实施例提供的技术方案中,当快应用接收到对应于操作系统提供的目标功能的调用请求时,通过将目标可执行文件载入到快应用的运行进程,然后调用该目标可执行文件的初始化函数,将目标可执行文件提供的功能接口注册到JS环境中,从而使得快应用能够在JS环境中调用上述功能接口以执行目标功能;提供了一种快应用与操作系统的功能接口之间的调用方式,使得快应用能够调用操作系统提供的功能,扩展快应用的能力。
需要说明的一点是,在本公开实施例中,快应用对应的程序语言是JS程语言,调用操作系统提供的功能时所需的调用程序语言为第一编程语言,如C++。由于上述第一编程语言与上述JS程序语言为不同的计算机程序语言,因此,快应用在调用上述操作系统提供的功能时,需要通过接口定义语言获取上述目标可执行文件。其中,该接口定义语言可以是JIDL(JavaScript Interface Definition Language,JS接口定义语言)。
下面,对上述目标可执行文件的生成过程进行介绍。可选地,该目标可执行文件的生成过程包括以下几个步骤:
1、获取目标功能对应的接口定义语言文件。
目标功能对应的接口定义语言文件用于定义目标功能对应的功能接口。不同的功能对应于不同的接口定义语言文件。当快应用接收到对应于操作系统提供的目标功能的调用请求时,终端可以获取该目标功能对应的接口定义语言文件。
在本公开实施例中,接口定义语言可以是一种自定义的接口定义语言,该自定义的接口定义语言可以称为JIDL(JavaScript Interface Definition Language,JS接口定义语言)。该接口定义语言的作用是将第一编程语言编写的程序语言转换为JS环境可调用的机器语言。
2、根据接口定义语言文件对目标功能对应的源文件进行编译,生成目标可执行文件。
目标功能对应的源文件可以是采用第一编程语言编写的,用于实现上述目标功能的源代码文件。可选地,该目标功能对应的源文件可以包括上述目标功能的执行函数,进而用来执行上述目标功能。在本公开实施例中,由于接口定义语言与第一编程语言不能共同编译,因此终端在获取上述接口定义语言文件之后,可以将该接口定义语言文件转换为采用第一编程语言编写的文件,得到转换后的文件,然后对该转换后的文件和目标功能对应的源文件共同进行编译,生成目标可执行文件。
综上所述,通过获取目标功能对应的接口定义语言文件,根据该接口定义语言文件对目标功能对应的源文件进行编译,生成目标可执行文件,从而使得快应用能够基于该目标可执行文件调用操作系统提供的目标功能。
需要说明的一点是,快应用还可以支持异步调用功能。下面,对该异步调用功能进行介绍说明。
在一种可能的实施方式中,上述异步调用功能依赖于第一回调函数。该异步调用功能的流程可以如下:
1、将第一回调函数传给目标功能的执行函数。
快应用在JS环境中调用目标功能对应的功能接口之后,可以将第一回调函数传给目标功能的执行函数。该目标功能的执行函数是指可以执行以实现上述目标功能的函数。第一回调函数用于将目标功能的相关参数回传给快应用。其中,目标功能的相关参数是指执行上述目标功能获得的参数,例如当目标功能为相机功能时,其相关参数可以是拍摄的一张图像。
可选地,第一回调函数是JS程序语言的函数,此时终端可以通过JIDL将上述第一回调函数从JS函数转换为第一编程语言对应的函数,进而,将该转换后的第一回调函数传递给上述目标功能的执行函数。
2、通过目标功能的执行函数在获取到目标功能的相关参数之后,调用第一回调函数将目标功能的相关参数发送给快应用。
可选地,终端在通过上述执行函数实现目标功能之后,通过第一回调函数将相关参数发送给快应用。
通过上述方式,快应用在调用目标功能对应的功能接口之后,通过将第一回调函数传给目标功能的执行函数,无需等待目标功能执行完成并接收到目标功能的相关参数之后再处理其它事务,快应用可以在调用目标功能对应的功能接口之后立即执行其它事务,从而实现异步调用功能。
在另一种可能的实施方式中,上述异步调用功能依赖于第二回调函数。该异步调用功能的流程可以如下:
1、在目标功能的对象上添加第二回调函数。
快应用在JS环境中调用目标功能对应的功能接口之后,可以在目标功能的对象上添加第二回调函数。第二回调函数用于监听上述目标功能的事件,该事件是指上述目标功能执行结束时产生的事件。例如,若上述目标功能为打开相机获取照片,则该目标功能对应的事件为获得照片的事件。
可选地,该第二回调函数是JS程序语言的函数,此时终端可以通过JIDL将上述第二回调函数从JS函数转换为第一编程语言对应的函数,进而,将该转换后的第二回调函数添加至目标功能的对象上。
2、当目标功能的对象监听到该事件时,通过第二回调函数将目标功能的相关参数发送给快应用。
可选地,当上述目标功能的对象监听到上述事件时,可以通过上述第二回调函数将相关参数发送给快应用。
通过上述方式,快应用在调用目标功能对应的功能接口之后,通过在目标功能的对象上添加第二回调函数,无需等待目标功能执行完成并接收到目标功能的相关参数之后再处理其它事务,快应用可以在调用目标功能对应的功能接口之后立即执行其它事务,从而实现异步调用功能。
综上所述,本公开实施例使得快应用支持异步调用功能,使得快应用可以同时调用或执行多种不同的功能,充分提升了快应用的能力。
图2是本公开的一个示例性实施例示出的快应用框架的框图200,该快应用框架包括:场景入口220、快应用引擎240和操作系统(Operating System,OS)基础设施&硬件260。
场景入口220包括负一屏、全局搜索、锁屏、桌面、应用市场、浏览器和二维码中的至少一种。场景入口220的外在展现形式可以为页面形式和卡片形式。
快应用引擎240包括前端框架241、通用场景242、轻量化场景243、嵌入式SDK(Software Development Kit,软件开发工具包)244和业务接入245。
其中,前端框架241包括MVVM(Model-View-View-Model)、V-DOM、路由、基础API(Application Programming Interface,应用程序编程接口)、业务API、UI(UserInterface,用户界面)组件等;
通用场景242和轻量化场景243包括JavaScript引擎、标准渲染引擎、极速渲染引擎、端-云-芯加速、安全机制、新兴场景(AI(Artificial Intelligence,人工智能)、AR(Augmented Reality,增强现实)等)、系统整合(应用管理、权限管理等);
业务接入245包括推送(Push)、账号/支付等。
OS基础设施&硬件260包括:图形库、原生控件、系统服务和GPU(GraphicsProcessing Unit,图形处理器)/NPU(Neural-network Processing Unit,嵌入式神经网络处理器)等。
从执行路径层面,有标准的HTML5方式支撑通用的Web场景(一般通过系统的Webview组件或定制的Webview),以及JS(JavaScript)+Native的方式,支撑更轻量、更快速的体验。下面将按3个层面方面简要介绍快应用引擎的架构。
1)应用开发(前端框架+组件&API能力)
快应用的前端设计借鉴并整合了主流前端框架(Vue,React等)的设计思路:以组件化的方式构建应用,以数据绑定为核心的MVVM设计模式,以V-DOM的方式提升性能,同时选择了简洁清晰的类Vue的模板。同时对布局方面做了相应精简。从新的应用形态、映射原生UI、能力开放的角度,需要定义一套组件与API规范,方便开发这快速开发应用。
2)系统整合(应用管理,卡片-嵌入式SDK,安全机制等等)
快应用作为完整的应用形态,可以与系统深入整合,如同原生应用一样运行,以及和系统交互。快应用目前有两种形态:全屏方式的独立应用形态与嵌入方式的卡片形态。在独立应用的形态下,给用户的体验就像原生的应用程序,有完整的生命周期管理,页面管理,路由等。快应用可以寄生于安卓的Activity,页面寄生于Fragment,并通过独立的后台Service进行实例的管控。卡片则是另外一种形态,通过嵌入式SDK作为一个独立的局部控件嵌入到系统的各个角落,轻量化的展现动态内容。在安全隔离方面,可通过沙盒机制,进程隔离,权限控制,并结合操作系统层的支持做到较好的安全保障。
3)性能体验&新兴场景(JavaScript引擎,渲染引擎,端-云-芯加速,新兴场景)
在交互体验、资源开销和稳定性等方面,快应用通过引入原生渲染路径,进而实现前端开发方式+原生渲染与平台能力有效组合。
不同于其它的应用层的跨平台框架,快应用植根于手机的操作系统,可实现从芯片<-->操作系统<-->云的深度整合。端和云的结合以启动性能加速为例,通过云和端的协同渲染,网络链路层的优化可以大大加速快应用启动速度。同时可以整合硬件平台的特有能力,进一步提升体验。例如可以结合手机AI芯片,将NPU的算力整合到快应用引擎中来,使得AI场景(人脸识别、图像超分等)在端侧可以低延时、高性能的执行,同时又有效保护了用户的隐私,并节省带宽。
图3示出了本公开的一个示例性实施例示出的快应用的启动流程图,包括:
1)首次启动时,用户点击触发快应用的程序包的下载,同时做快应用引擎的初始化相关工作。当整个快应用的程序包下载与校验完成后,需要展示的第一个页面的JavaScript文件才会被加载并开始渲染。这个过程中的程序包下载是瓶颈,从前期的实测数据看,正常网络下200K左右的包下载时间至少要400毫秒以上,2M包要2秒以上。
2)页面渲染包括JavaScript加载、页面与JavaScript框架逻辑的执行、布局的运算,最终到原生UI控件的绘制。其中,页面内逻辑执行时会有一次或多次的网络请求(页面到应用自己的三方服务器的),网络请求返还的数据驱动页面的再次渲染,直至首屏内容完全展示。
这里网络请求、JavaScript执行、排版与绘制并非简单的串行关系,而是并行化地交织在一起影响着整个页面的渲染性能,并与页面设计的逻辑、网络状况与设备运行的状态强相关。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图4是根据一示例性实施例示出的一种功能调用装置的框图。该装置具有实现上述功能调用方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是终端,也可以设置在终端中。该装置400可以包括:文件载入模块401、函数调用模块402和接口调用模块403。
文件载入模块401,被配置为当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到所述快应用的运行进程,所述目标可执行文件用于实现所述目标功能。
函数调用模块402,被配置为调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中。
接口调用模块403,被配置为通过所述快应用在所述JS环境中调用所述功能接口以执行所述目标功能;其中,所述快应用是基于集成在所述操作系统中的快应用框架运行且无需手动安装的应用。
在示例性实施例中,所述函数调用模块402,被配置为调用所述目标可执行文件的初始化函数,在所述JS环境中创建JS对象;将所述目标可执行文件提供的所述功能接口注册到所述JS对象上。
在示例性实施例中,如图5所示,所述装置400还包括:文件获取模块404和文件生成模块405。
文件获取模块404,被配置为获取所述目标功能对应的接口定义语言文件,所述接口定义语言文件用于定义所述功能接口。
文件生成模块405,被配置为根据所述接口定义语言文件对所述目标功能对应的源文件进行编译,生成所述目标可执行文件。
在示例性实施例中,所述文件生成模块405,被配置为将所述接口定义语言文件转换为采用第一编程语言编写的文件,得到转换后的文件;对所述转换后的文件和所述目标功能对应的源文件共同进行编译,生成所述目标可执行文件,所述目标功能对应的代码是采用所述第一编程语言编写的。
在示例性实施例中,如图5所示,所述装置400还包括:函数传递模块406和第一参数发送模块407。
函数传递模块406,被配置为将第一回调函数传给所述目标功能的执行函数。
第一参数发送模块407,被配置为通过所述目标功能的执行函数在获取到所述目标功能的相关参数之后,调用所述第一回调函数将所述目标功能的相关参数发送给所述快应用。
在示例性实施例中,如图5所示,所述装置400还包括:函数添加模块408和第二参数发送模块409。
函数添加模块408,被配置为在所述目标功能的对象上添加第二回调函数,所述第二回调函数用于监听所述目标功能的事件。
第二参数发送模块409,被配置为当所述目标功能的对象监听到所述事件时,通过所述第二回调函数将所述目标功能的相关参数发送给所述快应用。
综上所述,本公开实施例提供的技术方案中,当快应用接收到对应于操作系统提供的目标功能的调用请求时,通过将目标可执行文件载入到快应用的运行进程,然后调用该目标可执行文件的初始化函数,将目标可执行文件提供的功能接口注册到JS环境中,从而使得快应用能够在JS环境中调用上述功能接口以执行目标功能;提供了一种快应用与操作系统的功能接口之间的调用方式,使得快应用能够调用操作系统提供的功能,扩展快应用的能力。
本公开一示例性实施例还提供了一种功能调用装置,能够实现本公开提供的功能调用方法。该装置包括:处理器,以及用于存储处理器的可执行指令的存储器。其中,处理器被配置为:
当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到所述快应用的运行进程,所述目标可执行文件用于实现所述目标功能;
调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中;
通过所述快应用在所述JS环境中调用所述功能接口以执行所述目标功能;
其中,所述快应用是基于集成在所述操作系统中的快应用框架运行且无需手动安装的应用。
在一些可能的设计中,所述处理器还被配置为:
调用所述目标可执行文件的初始化函数,在所述JS环境中创建JS对象;
将所述目标可执行文件提供的所述功能接口注册到所述JS对象上。
在一些可能的设计中,所述处理器还被配置为:
获取所述目标功能对应的接口定义语言文件,所述接口定义语言文件用于定义所述功能接口;
根据所述接口定义语言文件对所述目标功能对应的源文件进行编译,生成所述目标可执行文件。
在一些可能的设计中,所述处理器还被配置为:
将所述接口定义语言文件转换为采用第一编程语言编写的文件,得到转换后的文件;
对所述转换后的文件和所述目标功能对应的源文件共同进行编译,生成所述目标可执行文件,所述目标功能对应的代码是采用所述第一编程语言编写的。
在一些可能的设计中,所述处理器还被配置为:
将第一回调函数传给所述目标功能的执行函数;
通过所述目标功能的执行函数在获取到所述目标功能的相关参数之后,调用所述第一回调函数将所述目标功能的相关参数发送给所述快应用。
在一些可能的设计中,所述处理器还被配置为;
在所述目标功能的对象上添加第二回调函数,所述第二回调函数用于监听所述目标功能的事件;
当所述目标功能的对象监听到所述事件时,通过所述第二回调函数将所述目标功能的相关参数发送给所述快应用。
图6是根据一示例性实施例示出的一种装置600的框图。例如,装置600可以是手机、平板电脑、电子书阅读器、多媒体播放设备、可穿戴设备等便携式电子设备。
参照图6,装置600可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(I/O,Input/Output)接口612,传感器组件614,以及通信组件616。
处理组件602通常控制装置600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604被配置为存储各种类型的数据以支持在装置600的操作。这些数据的示例包括用于在装置600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM,Static Random-Access Memory),电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory),可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory),可编程只读存储器(PROM,Programmable Read-only Memory),只读存储器(ROM,Read Only Memory),磁存储器,快闪存储器,磁盘或光盘。
电源组件606为装置600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为装置600生成、管理和分配电力相关联的组件。
多媒体组件608包括在所述装置600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD,Liquid Crystal Display)和触摸面板(TP,TouchPad)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当装置600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC,Microphone),当装置600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为装置600提供各个方面的状态评估。例如,传感器组件614可以检测到装置600的打开/关闭状态,组件的相对定位,例如所述组件为装置600的显示器和小键盘,传感器组件614还可以检测装置600或装置600一个组件的位置改变,用户与装置600接触的存在或不存在,装置600方位或加速/减速和装置600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如互补金属氧化物半导体(CMOS,Complementary Metal Oxide Semiconductor)或电荷耦合器件(CCD,Charge CoupledDevice)图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616被配置为便于装置600和其他设备之间有线或无线方式的通信。装置600可以接入基于通信标准的无线网络,如Wi-Fi,2G,3G,4G,5G,或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(NFC,Near FieldCommunication)模块,以促进短程通信。
在示例性实施例中,装置600可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、数字信号处理器(DSP,Demand-SidePlatform)、数字信号处理设备(DSPD,Digital Demand-Side Platform)、可编程逻辑器件(PLD,Programmable Logic Device)、现场可编程门阵列(FPGA,Field Programmable GateArray)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述功能调用方法。
在示例性实施例中,还提供了一种包括计算机程序的非临时性计算机可读存储介质,例如包括计算机程序的存储器604,上述计算机程序可由装置600的处理器620执行以完成上述功能调用方法。例如,所述非临时性计算机可读存储介质可以是ROM、RAM、光盘只读存储器(CD-ROM,Compact Disc Read-Only Memory)、磁带、软盘和光数据存储设备等。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (14)
1.一种功能调用方法,其特征在于,所述方法包括:
当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到所述快应用的运行进程,所述目标可执行文件用于实现所述目标功能;
调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中;
通过所述快应用在所述JS环境中调用所述功能接口以执行所述目标功能;
其中,所述快应用是基于集成在所述操作系统中的快应用框架运行且无需手动安装的应用。
2.根据权利要求1所述的方法,其特征在于,所述调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中,包括:
调用所述目标可执行文件的初始化函数,在所述JS环境中创建JS对象;
将所述目标可执行文件提供的所述功能接口注册到所述JS对象上。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标功能对应的接口定义语言文件,所述接口定义语言文件用于定义所述功能接口;
根据所述接口定义语言文件对所述目标功能对应的源文件进行编译,生成所述目标可执行文件。
4.根据权利要求3所述的方法,其特征在于,所述根据所述接口定义语言文件对所述目标功能对应的代码进行编译,生成所述目标可执行文件,包括:
将所述接口定义语言文件转换为采用第一编程语言编写的文件,得到转换后的文件;
对所述转换后的文件和所述目标功能对应的源文件共同进行编译,生成所述目标可执行文件,所述目标功能对应的代码是采用所述第一编程语言编写的。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
将第一回调函数传给所述目标功能的执行函数;
通过所述目标功能的执行函数在获取到所述目标功能的相关参数之后,调用所述第一回调函数将所述目标功能的相关参数发送给所述快应用。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
在所述目标功能的对象上添加第二回调函数,所述第二回调函数用于监听所述目标功能的事件;
当所述目标功能的对象监听到所述事件时,通过所述第二回调函数将所述目标功能的相关参数发送给所述快应用。
7.一种功能调用装置,其特征在于,所述装置包括:
文件载入模块,被配置为当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到所述快应用的运行进程,所述目标可执行文件用于实现所述目标功能;
函数调用模块,被配置为调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中;
接口调用模块,被配置为通过所述快应用在所述JS环境中调用所述功能接口以执行所述目标功能;其中,所述快应用是基于集成在所述操作系统中的快应用框架运行且无需手动安装的应用。
8.根据权利要求7所述的装置,其特征在于,所述函数调用模块,被配置为:
调用所述目标可执行文件的初始化函数,在所述JS环境中创建JS对象;
将所述目标可执行文件提供的所述功能接口注册到所述JS对象上。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
文件获取模块,被配置为获取所述目标功能对应的接口定义语言文件,所述接口定义语言文件用于定义所述功能接口;
文件生成模块,被配置为根据所述接口定义语言文件对所述目标功能对应的源文件进行编译,生成所述目标可执行文件。
10.根据权利要求9所述的装置,其特征在于,所述文件生成模块,被配置为:
将所述接口定义语言文件转换为采用第一编程语言编写的文件,得到转换后的文件;
对所述转换后的文件和所述目标功能对应的源文件共同进行编译,生成所述目标可执行文件,所述目标功能对应的代码是采用所述第一编程语言编写的。
11.根据权利要求7至10任一项所述的装置,其特征在于,所述装置还包括:
函数传递模块,被配置为将第一回调函数传给所述目标功能的执行函数;
第一参数发送模块,被配置为通过所述目标功能的执行函数在获取到所述目标功能的相关参数之后,调用所述第一回调函数将所述目标功能的相关参数发送给所述快应用。
12.根据权利要求7至10任一项所述的装置,其特征在于,所述装置还包括:
函数添加模块,被配置为在所述目标功能的对象上添加第二回调函数,所述第二回调函数用于监听所述目标功能的事件;
第二参数发送模块,被配置为当所述目标功能的对象监听到所述事件时,通过所述第二回调函数将所述目标功能的相关参数发送给所述快应用。
13.一种功能调用装置,其特征在于,所述装置包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
当快应用接收到对应于操作系统提供的目标功能的调用请求时,将目标可执行文件载入到所述快应用的运行进程,所述目标可执行文件用于实现所述目标功能;
调用所述目标可执行文件的初始化函数,将所述目标可执行文件提供的功能接口注册到JS环境中;
通过所述快应用在所述JS环境中调用所述功能接口以执行所述目标功能;
其中,所述快应用是基于集成在所述操作系统中的快应用框架运行且无需手动安装的应用。
14.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911130079.9A CN110851240B (zh) | 2019-11-18 | 2019-11-18 | 功能调用方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911130079.9A CN110851240B (zh) | 2019-11-18 | 2019-11-18 | 功能调用方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851240A CN110851240A (zh) | 2020-02-28 |
CN110851240B true CN110851240B (zh) | 2022-04-29 |
Family
ID=69602103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911130079.9A Active CN110851240B (zh) | 2019-11-18 | 2019-11-18 | 功能调用方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851240B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764836A (zh) * | 2021-01-28 | 2021-05-07 | 深圳市欢太科技有限公司 | 运行快应用的方法、装置及电子设备 |
CN113434213B (zh) * | 2021-06-26 | 2022-11-25 | 赞同科技股份有限公司 | 一种终端的程序运行方法以及装置 |
CN114756243A (zh) * | 2022-05-05 | 2022-07-15 | 上海节卡机器人科技有限公司 | 自定义模块控制系统、方法、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805829A (en) * | 1996-10-01 | 1998-09-08 | International Business Machines Corp | Process for running applets over non-IP networks |
CN1609794A (zh) * | 2003-10-24 | 2005-04-27 | 微软公司 | 用于计算机平台的编程接口 |
US6957439B1 (en) * | 2000-05-09 | 2005-10-18 | International Business Machines Corporation | Method, system, and program for mapping objects in different language formats |
CN1694064A (zh) * | 2004-05-05 | 2005-11-09 | 惠普开发有限公司 | 组件化嵌入式系统信息检索系统和方法 |
CN101770395A (zh) * | 2008-12-29 | 2010-07-07 | 上海科泰世纪科技有限公司 | Applet线程模型及基于Applet线程模型的调用构件的方法 |
CN102200909A (zh) * | 2010-07-30 | 2011-09-28 | 深圳市融创天下科技发展有限公司 | 一种移动终端统一界面方法及系统 |
CN102541567A (zh) * | 2012-01-05 | 2012-07-04 | 深圳市天拓立方通讯科技有限公司 | 一种2d手机游戏引擎及兼容手机操作系统的方法 |
CN103688240A (zh) * | 2011-05-20 | 2014-03-26 | 梦芯片技术股份有限公司 | 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备 |
CN105743955A (zh) * | 2014-12-11 | 2016-07-06 | 中国科学院声学研究所 | 一种扩展JavaScript对象方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539437B1 (en) * | 1998-11-30 | 2003-03-25 | Intel Corporation | Remote control inputs to java applications |
EP1117220A1 (en) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Method and system for protocol conversion |
US20140040725A1 (en) * | 2012-08-03 | 2014-02-06 | Brian Foster | System and method for displaying an rss feed on an electronic display |
-
2019
- 2019-11-18 CN CN201911130079.9A patent/CN110851240B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805829A (en) * | 1996-10-01 | 1998-09-08 | International Business Machines Corp | Process for running applets over non-IP networks |
US6957439B1 (en) * | 2000-05-09 | 2005-10-18 | International Business Machines Corporation | Method, system, and program for mapping objects in different language formats |
CN1609794A (zh) * | 2003-10-24 | 2005-04-27 | 微软公司 | 用于计算机平台的编程接口 |
CN1694064A (zh) * | 2004-05-05 | 2005-11-09 | 惠普开发有限公司 | 组件化嵌入式系统信息检索系统和方法 |
CN101770395A (zh) * | 2008-12-29 | 2010-07-07 | 上海科泰世纪科技有限公司 | Applet线程模型及基于Applet线程模型的调用构件的方法 |
CN102200909A (zh) * | 2010-07-30 | 2011-09-28 | 深圳市融创天下科技发展有限公司 | 一种移动终端统一界面方法及系统 |
CN103688240A (zh) * | 2011-05-20 | 2014-03-26 | 梦芯片技术股份有限公司 | 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备 |
CN102541567A (zh) * | 2012-01-05 | 2012-07-04 | 深圳市天拓立方通讯科技有限公司 | 一种2d手机游戏引擎及兼容手机操作系统的方法 |
CN105743955A (zh) * | 2014-12-11 | 2016-07-06 | 中国科学院声学研究所 | 一种扩展JavaScript对象方法 |
Non-Patent Citations (7)
Title |
---|
Comet模式的异步推送技术的研究与实现;叶柏龙 等;《计算机应用与软件》;20150615;第32卷(第6期);17-19,41 * |
Design and Implementation of WeChat Mini Program for University Dormitory Based on SOA;Jiawei Wang 等;《Journal of Physics: Conference Series》;20180624;第1069卷;1-8 * |
Toke Høiland-Jørgensen 等.The express data path: Fast programmable packet processing in the operating system kernel.《CoNEXT "18: Proceedings of the 14th International Conference on emerging Networking EXperiments and Technologies》.2018,54-66. * |
一种基于微信小程序在RTS2的控制框架扩展;梁波 等;《天文研究与技术》;20180103;第15卷(第2期);202-207 * |
基于Android的移动终端浏览器沙盒机制的研究与设计;周莉婕;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150415(第4期);I139-381 * |
微信小程序开发;王婷婷;《信息技术与信息化》;20181231(第12期);62-63 * |
支持异步调用的WebKit浏览器的JavaScript事件扩展方法;王硕 等;《计算机应用与软件》;20160115;第33卷(第1期);226-229 * |
Also Published As
Publication number | Publication date |
---|---|
CN110851240A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111026396B (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN110874217B (zh) | 快应用的界面显示方法、装置及存储介质 | |
CN110990075B (zh) | 快应用的启动方法、装置、设备及存储介质 | |
CN106569800B (zh) | 前端界面生成方法及装置 | |
CN109032606B (zh) | 原生应用程序的编译处理方法、装置及终端 | |
CN110851240B (zh) | 功能调用方法、装置及存储介质 | |
CN111026490B (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN110865863B (zh) | 快应用的界面显示方法、装置及存储介质 | |
CN111427622B (zh) | 应用程序中脚本代码的执行方法及装置 | |
CN110851108A (zh) | 电子设备操作方法、装置、电子设备及存储介质 | |
CN109117144B (zh) | 页面处理方法、装置、终端及存储介质 | |
CN110968362B (zh) | 应用运行方法、装置及存储介质 | |
CN110971974B (zh) | 配置参数创建方法、装置、终端及存储介质 | |
CN111008057A (zh) | 页面展示方法、装置及存储介质 | |
CN110865864B (zh) | 快应用的界面显示方法、装置、设备及存储介质 | |
CN111078325B (zh) | 应用程序运行方法、装置、电子设备及存储介质 | |
EP3416070A1 (en) | Page display method and device and storage medium | |
US11507633B2 (en) | Card data display method and apparatus, and storage medium | |
CN111104183B (zh) | 应用程序运行方法、装置、电子设备及存储介质 | |
CN111008050B (zh) | 页面任务执行方法、装置、终端及存储介质 | |
US20210173681A1 (en) | Method and device for displaying interface, electronic equipment, server, and storage medium | |
CN110865760A (zh) | 电子设备操作方法、装置、电子设备及存储介质 | |
CN110908629A (zh) | 电子设备操作方法、装置、电子设备和存储介质 | |
CN110853643A (zh) | 快应用中进行语音识别的方法、装置、设备及存储介质 | |
CN111104110A (zh) | 全局样式共享方法、全局样式共享装置及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |