CN111684420A - 功能模块的调用方法、设备、计算机可读存储介质 - Google Patents

功能模块的调用方法、设备、计算机可读存储介质 Download PDF

Info

Publication number
CN111684420A
CN111684420A CN201980010025.0A CN201980010025A CN111684420A CN 111684420 A CN111684420 A CN 111684420A CN 201980010025 A CN201980010025 A CN 201980010025A CN 111684420 A CN111684420 A CN 111684420A
Authority
CN
China
Prior art keywords
sdk
event
engine
function module
target
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.)
Pending
Application number
CN201980010025.0A
Other languages
English (en)
Inventor
李小军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SZ DJI Technology Co Ltd
Original Assignee
SZ DJI Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SZ DJI Technology Co Ltd filed Critical SZ DJI Technology Co Ltd
Publication of CN111684420A publication Critical patent/CN111684420A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例一种功能模块的调用方法、设备、计算机可读存储介质,该方法应用于电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;该方法包括:所述SDK通过预置的事件接口接收到来自所述引擎传输的事件,所述事件与需调用的目标功能模块相关,所述事件接口是所述SDK与所述引擎之间的接口;所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块。可避免引擎中会引入大量调用功能模块的接口导致接口维护较为困难的问题。

Description

功能模块的调用方法、设备、计算机可读存储介质
技术领域
本发明涉及软件技术领域,尤其是涉及一种功能模块的调用方法、设备、计算机可读存储介质。
背景技术
随着计算机技术的发展,各种开发语言的系统平台不断走向成熟,例如windows、Mac、Android、iOS等操作系统平台。各个系统平台的本地语言不同,比如Android可以为Java或者kotlin,iOS可以用swift或者objectc等。通常,在各种系统平台上部署运行开发的应用程序APP时,需要基于具体系统平台开发相应语言的APP,不仅需要开发多种语言的APP,而且代码逻辑维护需要消耗大量的人力资源。
因此,跨平台技术应运而生,采用跨平台软件开发引擎比如Unity来实现APP的开发,以实现APP的跨平台。但是,跨平台软件开发引擎中可实现的功能是有限的,如果需要扩展更多的功能,就需要调用第三方库或其他库中的功能模块来实现。
相关功能模块的调用方式中,跨平台软件开发引擎中需要配置每一个库对应的接口,跨平台软件开发引擎直接通过该功能模块所在库对应的接口调用该功能模块。因此,为了能够实现调用跨平台软件开发引擎之外各种库的功能模块的调用,引擎中会引入大量调用功能模块的接口,导致接口维护较为困难的问题。
发明内容
本发明提供一种功能模块的调用方法、设备、计算机可读存储介质,可避免引擎中会引入大量调用功能模块的接口导致接口维护较为困难的问题。
本发明实施例第一方面,提供一种功能模块的调用方法,应用于电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
该方法包括:
所述SDK通过预置的事件接口接收到来自所述引擎传输的事件,所述事件与需调用的目标功能模块相关,所述事件接口是所述SDK与所述引擎之间的接口;
所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
本发明实施例第二方面,提供一种功能模块的调用方法,应用于电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
该方法包括:
在需调用目标功能模块时,所述引擎触发事件,所述事件与所述目标功能模块相关;
所述引擎通过预置的事件接口将所述事件传输至所述SDK,所述事件接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
本发明实施例第三方面,提供一种电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
所述设备包括:存储器和处理器;
所述存储器,用于存储程序代码;
所述处理器,用于调用所述程序代码,当程序代码被执行时,用于执行以下操作:
利用所述SDK通过预置的事件接口接收到来自所述引擎传输的事件,所述事件与需调用的目标功能模块相关,所述事件接口是所述SDK与所述引擎之间的接口;
利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
本发明实施例第四方面,提供一种电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
所述设备包括:存储器和处理器;
所述存储器,用于存储程序代码;
所述处理器,用于调用所述程序代码,当程序代码被执行时,用于执行以下操作:
在需调用目标功能模块时,利用所述引擎触发事件,所述事件与所述目标功能模块相关;
利用所述引擎通过预置的事件接口将所述事件传输至所述SDK,所述事件接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
本发明实施例第五方面,提供一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质上存储有计算机指令,所述计算机指令被执行时,实现前述实施例所述的功能模块的调用方法。
基于上述技术方案,本发明实施例中,可通过事件机制由引擎通知SDK调用功能模块,引擎可在需要调用目标功能模块时,通过引擎与SDK之间事件接口将与目标功能模块相关的事件传输给SDK,SDK依据该事件从SDK集成的功能模块中调用该目标功能模块,无需在引擎中为每个库的功能模块配置相应调用接口,不但减少了引擎中所需的接口,避免引擎中引入大量调用功能模块的接口导致接口维护较为困难的问题,而且功能模块集成在SDK中,避免了引擎需管理大量库的问题。
附图说明
为了更加清楚地说明本发明实施例中的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以依据本发明实施例的这些附图获得其它的附图。
图1是本发明一实施例的功能模块的调用方法的流程示意图;
图2是本发明一实施例的引擎与SDK的交互示意图;
图3是本发明另一实施例的功能模块的调用方法的流程示意图;
图4是本发明一实施例的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本发明使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明。本发明和权利要求书所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。应当理解的是,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或者,“当……时”,或者,“响应于确定”。
本发明实施例的功能模块的调用方法可以用在需实现跨平台的APP中,APP是基于跨平台软件开发引擎开发的,可以跨平台使用,无需为不同系统平台开发相应平台本地语言的APP,减少了APP开发的工作量,也减小代码逻辑维护所需消耗的人力资源。
本发明实施例中,可以实现跨平台软件开发引擎的功能扩展,通过SDK调用引擎之外各种库的功能模块来实现相应功能,只需在引擎和SDK之间配置统一的接口即可,无需在引擎中为不同库配置相应的接口,避免引入大量接口导致接口维护较为困难的问题。
跨平台是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖硬件环境,一个操作系统下开发的APP,放到另一个操作系统下依然可以运行。
本发明实施例中的跨平台,可以是跨两个系统平台、或者跨更多系统平台。系统平台可以包括windows、Mac、Android、iOS、Linux等热门操作系统平台,当然,还可以包括其他的系统平台,在此不再列举。
下面对本发明实施例的功能模块的调用方法进行展开说明,但不应以此为限。
本发明实施例第一方面提供一种功能模块的调用方法,应用于电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
参看图1,在一个实施例中,该功能模块的调用方法可以包括以下步骤:
S100:所述SDK通过预置的事件接口接收到来自所述引擎传输的事件,所述事件与需调用的目标功能模块相关,所述事件接口是所述SDK与所述引擎之间的接口;
S200:所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
本实施例中,功能模块的调用方法的执行主体可以为电子设备,进一步地可以为电子设备的处理器,其中,所述处理器可以为一个或多个,所述处理器可以为通用处理器或者专用处理器。电子设备具体类型不限,比如可以额是计算机设备、移动设备等。
电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK。可以在电子设备上安装包含引擎和SDK的APP,实现引擎和SDK的安装。在APP运行过程中,可通过引擎和SDK的配合实现功能模块的调用,为APP实现所需的功能。
跨平台软件开发引擎是一种软件开发平台,开发出的软件可实现跨平台。本发明实施例中提及的引擎均指跨平台软件开发引擎。跨平台软件开发引擎比如有Unity、Cocos2d-x、Qt等,具体不限。
以跨平台软件开发引擎为Unity为例,Unity技术框架不断成熟,因为其具有跨平台特性,且使用了易于掌握使用的C#开发语言,所以逐渐地受到开发者欢迎,不仅在游戏开发,且在普通的应用软件也开始逐步使用。Unity在完成开发后可以被分别编译成支持各种系统平台的文件,各种文件的格式不同,比如,支持iOS的文件格式为.framework,支持MacOS X的文件格式为.bundle,支持Windows的文件格式为.dll,支持安卓的文件格式为.so等。本实施例中,用支持电子设备的文件格式的文件在相应的系统平台安装Unity。
软件开发工具包(缩写为SDK,外语全称为Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
步骤S100中,所述SDK通过预置的事件接口接收到来自所述引擎传输的事件,所述事件与需调用的目标功能模块相关,所述事件接口是所述SDK与所述引擎之间的接口。
引擎在需要调用目标功能模块时,会触发与目标功能模块相关的事件,以事件形式通知SDK需要调用目标功能模块。事件是通过引擎和SDK之间的事件接口传输的,事件接口可以包括引擎上用于发送事件的事件发送接口和SDK上用于接收事件的事件接收接口。
参看图2,事件接口可以包括事件发送接口501和事件接收接口601,通过事件发送接口501和事件接收接口601可实现引擎50与SDK 60之间的事件传输。引擎50在触发一个事件时,会通过事件发送接口501发送该事件,SDK 60通过事件接收接口601接收该事件。
事件接口可以在开发APP时预先在引擎和SDK中配置好。所有与功能模块相关的事件均可通过引擎和SDK之间的事件接口进行传输,换言之,无论是第三方库还是自定义库中的功能模块,均可通过同一事件接口来通知SDK调用,无需在引擎中为每个库的功能模块配置一个对应的接口,大大减少了引擎中所需的接口数量。
步骤S200中,所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
SDK中可以集成多个不同的库,每个库中可以包含一个或两个以上的功能模块,当然,也可以只集成一个库,具体并不做限定。SDK是软件工具包,通常自带有一些功能模块库。
本实施例中,SDK集成的功能模块可以包括SDK自带的功能模块,也可以包括预先(比如在APP开发过程时)添加到SDK中的功能模块。当前,也不排除后续如果APP需要更多的功能时,将新功能模块加入到SDK中的可能性。SDK及其集成的功能模块的语言可以是适合于底层开发的语言,可以支持跨平台使用,比如可以是C或C++等语言。
SDK在收到来自引擎传输的事件时,由于事件与目标功能模块相关,所以可依据事件从SDK集成的所有功能模块中确定并调用目标功能模块。SDK中可以配置有各个库的功能模块的调用接口,通过目标功能模块的调用接口来调用目标功能模块。
目标功能模块被调用后实现相应的功能。比如,需要目标对象加速时,引擎会触发与加速功能模块相关的事件并将事件发送给SDK,SDK收到事件后会依据事件调用加速功能模块,以实现目标对象的加速。
本发明实施例中,可通过事件机制由引擎通知SDK调用功能模块,引擎可在需要调用目标功能模块时,通过引擎与SDK之间事件接口将与目标功能模块相关的事件传输给SDK,SDK依据该事件从SDK集成的功能模块中调用该目标功能模块,无需在引擎中为每个库的功能模块配置相应调用接口,不但减少了引擎中所需的接口,避免引擎中引入大量调用功能模块的接口导致接口维护较为困难的问题,而且功能模块集成在SDK中,避免了引擎需管理大量库的问题。
在一个实施例中,所述事件具有记录所述事件所属类型信息的类型字段;
步骤S200中,所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块,包括:
S201:所述SDK解析所述事件的类型字段;
S202:所述SDK依据解析出的类型信息从所述SDK集成的功能模块中调用所述目标功能模块。
引擎在触发事件时,可在事件的类型字段上写入该事件的类型信息,类型信息一方面表明了事件的类型,另一方面可用于确定目标功能模块。SDK收到事件后,可根据事件的类型字段上的类型信息确定并调用目标功能模块。
目标功能模块与该事件中的类型信息之间可以具有直接或间接的对应关系,如此,SDK可以根据类型信息确定与类型信息对应的目标功能模块,并调用该目标功能模块。当然,此处仅是举例,具体的调用方式不限,只要能够实现依据类型信息调用目标功能模块即可。
类型字段的位数可以自定义,可以根据所有事件类型的数量来确定,比如可以为32位、64位等,具体位数不限。事件上可以只具有类型字段,当然还可以具有其他的字段,具体可以根据需要而定。
在一个实施例中,所述类型字段包括第一字段和第二字段;
所述第一字段上记录了所述事件所属的目标总类型信息,所述第二字段上记录了所述目标总类型信息的所有子类型信息中所述事件所属的目标子类型信息;
步骤S202中,所述SDK依据解析出的类型信息从所述SDK集成的功能模块中调用所述目标功能模块,包括:
S2021:所述SDK依据所述目标总类型信息与目标子类型信息调用所述目标功能模块。
将类型字段划分成第一字段和第二字段,第一字段和第二字段分别用来记录事件的目标总类型信息和目标子类型信息。比如,可以将类型字段的高32位作为第一字段,将低32位作为第二字段,当然,如何分配类型字段可根据需要而定。
将所有事件类型先进行大类划分,划分出几个总类型,再对每个总类型进行小类划分,进一步划分出总类型下的几个子类型,根据目标总类型信息可以确定事件所属的总类型,根据目标子类型信息进而可以确定该总类型下事件所属的子类型。当然,具体如何对事件类型进行分类并不作为限制。
本实施例中,以总类型和子类型的分类方式对所有事件进行归类,可以分级地确定事件类型,便于确定事件类型,以便快速调用目标功能模块。
在一个实施例中,步骤S2021中,所述SDK依据所述目标总类型信息与目标子类型信息调用所述目标功能模块,包括:
所述SDK调用与所述目标总类型信息对应的目标消息处理对象,以利用所述目标消息处理对象确定与所述目标子类型信息对应的目标事件处理对象;
所述SDK调用所述目标事件处理对象,以利用所述目标事件处理对象确定与所述目标子类型信息对应的功能模块;
所述SDK将确定出的功能模块作为目标功能模块并调用所述目标功能模块。
SDK中可以预先配置有各个总类型信息对应的消息处理对象(Handler),以及每个总类型信息下的子类型信息对应的事件处理对象(EventHandler),通过这些对象来完成功能模块的调用。
SDK中可以预先创建有SDK管理对象,用于创建和管理各事件处理对象。事件处理对象可以通过事件类型注册的方式来负责一个或多个类型事件的处理。用户可以方便地扩展事件处理对象,用于处理各种不同事务。
SDK收到事件后,可根据事件中的目标总类型信息调用与该目标总类型信息对应的目标消息处理对象,目标消息处理对象可以根据目标子类型信息找到目标事件处理对象,并将目标子类型信息传入到该目标事件处理对象,目标事件处理对象可依据目标子类型信息确定出目标功能模块,从而调用目标功能模块。
本实施例中,先确定出目标消息处理对象,再由目标消息处理对象将事件分发给目标事件处理对象进行处理,不同事件处理对象可以根据事件子类型确定需调用的功能模块,实现了事件的分发处理,可以提升事件的处理效率。
在一个实施例中,所述SDK通过预置的事件接口接收到来自所述引擎传输的事件之前,该方法还包括以下步骤:
S010:所述SDK通过预置的对象管理接口接收所述引擎传输的创建消息,所述创建消息用于指示创建SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象管理接口是所述SDK与所述引擎之间的接口;
S020:所述SDK依据所述创建消息创建SDK管理对象。
引擎和SDK之间具有对象管理接口,对象管理接口可包括引擎上用于发送消息的第一消息发送接口及SDK上用于接收消息的第一消息接收接口(图2中未示出)。引擎可通过第一消息发送接口发送创建消息给SDK,SDK可通过第一消息接收接口接收来自引擎的创建消息。
创建消息用于指示创建SDK管理对象,SDK收到创建消息后,可依据该创建消息创建SDK管理对象。SDK管理对象可以为一个或者两个以上,用于管理调用功能模块所需的对象,比如管理各个事件处理对象。
本实施例中,SDK管理对象管理事件处理对象,事实上就是管理功能模块,通过对象管理接口传输创建消息来创建SDK管理对象,可便于各个事件处理对象、功能模块的管理,减轻了引擎所需的管理工作。
当然,对象管理接口还可用于传输其他消息,比如用于指示销毁SDK管理对象的销毁消息,引擎可通过第一消息发送接口发送销毁消息给SDK,SDK可通过第一消息接收接口接收来自引擎的销毁消息、并根据销毁消息销毁已创建的SDK管理对象。
在一个实施例中,所述SDK通过预置的事件接口接收到来自所述引擎传输的事件之前,该方法还包括以下步骤:
S030:所述SDK通过预置的对象初始化接口接收所述引擎传输的初始化消息,所述初始化消息用于指示初始化SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象初始化接口是所述SDK与所述引擎之间的接口;
S040:所述SDK依据所述初始化消息初始化SDK管理对象。
当然,步骤S030和S040在步骤S010和S020之后执行,先创建好SDK对象,再对SDK对象进行初始化。
引擎和SDK之间具有对象初始化接口,对象初始化接口可包括引擎上用于发送消息的第二消息发送接口及SDK上用于接收消息的第二消息接收接口(图2中未示出)。引擎可通过第二消息发送接口发送初始化消息给SDK,SDK可通过第二消息接收接口接收来自引擎的初始化消息。
初始化消息用于指示初始化SDK管理对象,SDK收到初始化消息后,可依据该初始化消息初始化已创建的SDK管理对象。SDK管理对象的初始化状态可根据需要进行定义。
本实施例中,引擎可通过初始化消息来通知SDK初始化SDK管理对象,使得初始化操作更为方便。
在一个实施例中,所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块之后,该方法还包括以下步骤:
S300:所述SDK获取调用所述目标功能模块所得的目标执行结果;
S400:所述SDK通过预置的回调接口将所述目标执行结果传输至所述引擎;所述回调接口是所述SDK与所述引擎之间的接口,用于将所述SDK调用各功能模块所得的执行结果传输至所述引擎。
引擎和SDK之间具有回调接口,回调接口可包括SDK上用于发送执行结果的结果发送接口、引擎上用于接收执行结果的结果接收接口。SDK在调用目标功能模块后,可通过结果发送接口将调用所得的目标执行结果发送给引擎,引擎通过结果接收接口接收目标执行结果。
继续参看图2,回调接口包括结果发送接口602和结果接收接口502,通过结果发送接口602和结果接收接口502可以实现SDK 60与引擎50之间的执行结果的传输。SDK 60在调用完一个功能模块时可以得到执行结果,通过结果发送接口602将执行结果发送给引擎50,引擎50通过结果接收接口接收执行结果。
引擎在收到目标执行结果后,可以对目标执行结果进行提示、或依据目标执行结果进行下一步的事务处理等,实现所需的功能。
在一个实施例中,所述事件是所述引擎在收到指示需调用的目标功能模块的调用指令时触发的,所述事件还携带有用于标识所述调用指令的标识符;
步骤S400中,所述SDK通过预置的回调接口将所述目标执行结果传输至所述引擎,包括:
S401:所述SDK从所述事件中获取标识符;
S402:所述SDK将所述标识符携带在目标执行结果中并通过所述回调接口传输至所述引擎。
本实施例中,事件可由调用指令触发,调用指令可以是由外部用户输入的,或者可以是电子设备在执行过程中产生的,具体不作限定。
在电子设备上多次操作同一按键可以触发多个调用指令,比如,在同一加速键上操作两次,会进行两次加速,而两次加速的基础速度不同,所以即使调用同一功能模块,所得的执行结果也可能并不相同。为了使得引擎及SDK能够区分每次的调用指令,为每个调用指令确定了一个标识符。
在事件中携带标识调用指令的标识符,使得SDK可依据标识符区分触发事件的调用指令;在SDK返回的执行结果中也携带该标识符,使得引擎可以依据标识符确定该执行结果所对应的调用指令,以正确地对执行结果进行提示或进一步处理。
基于前述实施例中的描述,目标消息处理对象在将目标子类型信息传入到对应的目标事件处理对象时,还可将标识符传入目标事件处理对象,在得到目标执行结果时,还将标识符携带在目标执行结果,SDK将携带了标识符的目标执行结果传输给引擎。
在一个实施例中,所述事件携带有与所述事件相关的数据;
步骤S200中,所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块时,该方法还包括:
S210:所述SDK将所述数据输入至所述目标功能模块中,以使所述目标功能模块依据所述数据执行处理。
事件中携带的数据是目标功能模块运行所需的数据,具体每个功能模块所需的数据不同,可以根据实际需要而定。数据可以包括调用指令中携带的数据、电子设备上获取的数据等。
SDK将事件携带的数据作为传参输入到目标功能模块后,目标功能模块依据输入的数据执行相应的处理。当然,也不排除一些功能模块在运行时不需要输入数据的情况,此时,事件中也可以不携带相关数据。
在一个实施例中,所述SDK的语言支持本设备的操作系统,并且所述SDK支持与本设备的操作系统不同的操作系统。
换言之,SDK的语言可以支持两个以上的操作系统,当然其中包括作为本发明实施例执行主体的电子设备的操作系统,如此,可以保证SDK能够跨平台使用。
SDK的语言比如可以包括C、C++等语言,当然具体不限于此,其他可支持不同操作系统的语言亦可。
本发明实施例中,SDK上接口的语言优选为C语言,由于C++具有重载等特性,容易产生重命名的问题,使用C语言编写接口可以避免函数重命名的问题,保证接口名称的唯一性,避免调用错误。
在一个实施例中,所述SDK的语言与所述SDK集成的功能模块的语言相同。SDK和功能模块的语言相同,使得SDK与功能模块之间的调用接口更容易编写,可以更方便地实现功能模块的调用。
SDK和SDK集成的功能模块的语言比如可以均为C或C++等语言,SDK和功能模块的语言均支持不同操作系统,保证APP整体实现跨平台。
在一个实施例中,所述SDK集成了多个不同的功能模块。如此,可以为引擎扩展更多的功能。
这些功能模块可以是同一库中的功能模块,也可以是不同库中的功能模块。当然,也不排除SDK仅集成一个功能模块的情况。
本发明实施例第二方面提供一种功能模块的调用方法,应用于电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
参看图3,在一个实施例中,该功能模块的调用方法包括以下步骤:
T100:在需调用目标功能模块时,所述引擎触发事件,所述事件与所述目标功能模块相关;
T200:所述引擎通过预置的事件接口将所述事件传输至所述SDK,所述事件接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
本实施例中,功能模块的调用方法的执行主体可以为电子设备,进一步地可以为电子设备的处理器,其中,所述处理器可以为一个或多个,所述处理器可以为通用处理器或者专用处理器。电子设备具体类型不限,比如可以额是计算机设备、移动设备等。电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK。
步骤T100中,在需调用目标功能模块时,所述引擎触发事件,所述事件与所述目标功能模块相关。
引擎在需要调用目标功能模块时,会触发与目标功能模块相关的事件,以事件形式通知SDK需要调用目标功能模块。
步骤T200中,所述引擎通过预置的事件接口将所述事件传输至所述SDK,所述事件接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
事件是通过引擎和SDK之间的事件接口传输的,事件接口可以包括引擎上用于发送事件的事件发送接口和SDK上用于接收事件的事件接收接口。
参看图2,事件接口可以包括事件发送接口501和事件接收接口601,通过事件发送接口501和事件接收接口601可实现引擎50与SDK 60之间的事件传输。引擎50在触发一个事件时,会通过事件发送接口501发送该事件,SDK 60通过事件接收接口601接收该事件。
事件接口可以在开发APP时预先在引擎和SDK中配置好。所有与功能模块相关的事件均可通过引擎和SDK之间的事件接口进行传输,换言之,无论是第三方库还是自定义库中的功能模块,均可通过同一事件接口来通知SDK调用,无需在引擎中为每个库的功能模块配置一个对应的接口,大大减少了引擎中所需的接口数量。
SDK中可以集成多个不同的库,每个库中可以包含一个或两个以上的功能模块,当然,也可以只集成一个库,具体并不做限定。SDK是软件工具包,通常自带有一些功能模块库。
本实施例中,SDK集成的功能模块可以包括SDK自带的功能模块,也可以包括预先(比如在APP开发过程时)添加到SDK中的功能模块。当前,也不排除后续如果APP需要更多的功能时,将新功能模块加入到SDK中的可能性。SDK及其集成的功能模块的语言可以是适合于底层开发的语言,可以支持跨平台使用,比如可以是C或C++等语言。
SDK在收到来自引擎传输的事件时,由于事件与目标功能模块相关,所以可依据事件从SDK集成的所有功能模块中确定并调用目标功能模块。SDK中可以配置有各个库的功能模块的调用接口,通过目标功能模块的调用接口来调用目标功能模块。
目标功能模块被调用后实现相应的功能。比如,需要目标对象加速时,引擎会触发与加速功能模块相关的事件并将事件发送给SDK,SDK收到事件后会依据事件调用加速功能模块,以实现目标对象的加速。
本发明实施例中,可通过事件机制由引擎通知SDK调用功能模块,引擎可在需要调用目标功能模块时,通过引擎与SDK之间事件接口将与目标功能模块相关的事件传输给SDK,SDK依据该事件从SDK集成的功能模块中调用该目标功能模块,无需在引擎中为每个库的功能模块配置相应调用接口,不但减少了引擎中所需的接口,避免引擎中引入大量调用功能模块的接口导致接口维护较为困难的问题,而且功能模块集成在SDK中,避免了引擎需管理大量库的问题。
在一个实施例中,所述事件具有记录所述事件所属类型信息的类型字段。
引擎在触发事件时,可在事件的类型字段上写入该事件的类型信息,类型信息一方面表明了事件的类型,另一方面可用于确定目标功能模块。SDK收到事件后,可根据事件的类型字段上的类型信息确定并调用目标功能模块。
目标功能模块与该事件中的类型信息之间可以具有直接或间接的对应关系,如此,SDK可以根据类型信息确定与类型信息对应的目标功能模块,并调用该目标功能模块。当然,此处仅是举例,具体的调用方式不限,只要能够实现依据类型信息调用目标功能模块即可。
类型字段的位数可以自定义,可以根据所有事件类型的数量来确定,比如可以为32位、64位等,具体位数不限。事件上可以只具有类型字段,当然还可以具有其他的字段,具体可以根据需要而定。
在一个实施例中,所述类型字段包括第一字段和第二字段;
所述第一字段上记录了所述事件所属的目标总类型信息,所述第二字段上记录了所述目标总类型信息的所有子类型信息中所述事件所属的目标子类型信息。
将类型字段划分成第一字段和第二字段,第一字段和第二字段分别用来记录事件的目标总类型信息和目标子类型信息。比如,可以将类型字段的高32位作为第一字段,将低32位作为第二字段,当然,如何分配类型字段可根据需要而定。
将所有事件类型先进行大类划分,划分出几个总类型,再对每个总类型进行小类划分,进一步划分出总类型下的几个子类型,根据目标总类型信息可以确定事件所属的总类型,根据目标子类型信息进而可以确定该总类型下事件所属的子类型。当然,具体如何对事件类型进行分类并不作为限制。
本实施例中,以总类型和子类型的分类方式对所有事件进行归类,可以分级地确定事件类型,便于确定事件类型,以便快速调用目标功能模块。
在一个实施例中,所述引擎触发事件之前,该方法还包括:
在需创建SDK管理对象时,所述引擎通过预置的对象管理接口传输创建消息至所述SDK,所述创建消息用于指示创建SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象管理接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的创建消息创建SDK管理对象。
引擎和SDK之间具有对象管理接口,对象管理接口可包括引擎上用于发送消息的第一消息发送接口及SDK上用于接收消息的第一消息接收接口(图2中未示出)。引擎可通过第一消息发送接口发送创建消息给SDK,SDK可通过第一消息接收接口接收来自引擎的创建消息。
创建消息用于指示创建SDK管理对象,SDK收到创建消息后,可依据该创建消息创建SDK管理对象。SDK管理对象可以为一个或者两个以上,用于管理调用功能模块所需的对象,比如管理各个事件处理对象。
本实施例中,SDK管理对象管理事件处理对象,事实上就是管理功能模块,通过对象管理接口传输创建消息来创建SDK管理对象,可便于各个事件处理对象、功能模块的管理,减轻了引擎所需的管理工作。
当然,对象管理接口还可用于传输其他消息,比如用于指示销毁SDK管理对象的销毁消息,引擎可通过第一消息发送接口发送销毁消息给SDK,SDK可通过第一消息接收接口接收来自引擎的销毁消息、并根据销毁消息销毁已创建的SDK管理对象。
在一个实施例中,所述引擎触发事件之前,该方法还包括:
在需初始化SDK管理对象时,所述引擎通过预置的对象初始化接口传输初始化消息至所述SDK,所述初始化消息用于指示初始化SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象初始化接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的初始化消息初始化SDK管理对象。
引擎和SDK之间具有对象初始化接口,对象初始化接口可包括引擎上用于发送消息的第二消息发送接口及SDK上用于接收消息的第二消息接收接口(图2中未示出)。引擎可通过第二消息发送接口发送初始化消息给SDK,SDK可通过第二消息接收接口接收来自引擎的初始化消息。
初始化消息用于指示初始化SDK管理对象,SDK收到初始化消息后,可依据该初始化消息初始化已创建的SDK管理对象。SDK管理对象的初始化状态可根据需要进行定义。
本实施例中,引擎可通过初始化消息来通知SDK初始化SDK管理对象,使得初始化操作更为方便。
在一个实施例中,所述引擎通过预置的事件接口将所述事件传输至所述SDK之后,该方法还包括:
所述引擎通过预置的回调接口接收来自所述SDK传输的目标执行结果,所述目标执行结果是调用所述目标功能模块所得的执行结果;所述回调接口是所述SDK与所述引擎之间的接口,用于将所述SDK调用各功能模块所得的执行结果传输至所述引擎。
引擎和SDK之间具有回调接口,回调接口可包括SDK上用于发送执行结果的结果发送接口、引擎上用于接收执行结果的结果接收接口。SDK在调用目标功能模块后,可通过结果发送接口将调用所得的目标执行结果发送给引擎,引擎通过结果接收接口接收目标执行结果。
继续参看图2,回调接口包括结果发送接口602和结果接收接口502,通过结果发送接口602和结果接收接口502可以实现SDK 60与引擎50之间的执行结果的传输。SDK 60在调用完一个功能模块时可以得到执行结果,通过结果发送接口602将执行结果发送给引擎50,引擎50通过结果接收接口接收执行结果。
引擎在收到目标执行结果后,可以对目标执行结果进行提示、或依据目标执行结果进行下一步的事务处理等,实现所需的功能。
在一个实施例中,所述引擎触发事件之前,该方法还包括:
所述引擎接收指令;
当接收到调用指令时,所述调用指令用于指示需调用的目标功能模块,所述引擎确定需调用目标功能模块。
本实施例中,事件可由调用指令触发,调用指令可以是由外部用户输入的,或者可以是电子设备在执行过程中产生的,具体不作限定。只要是收到了指示需调用的目标功能模块的调用指令,便可确定需调用目标功能模块,执行步骤T100。
在一个实施例中,所述引擎通过预置的事件接口将所述事件传输至所述SDK,包括:
所述引擎依据所述调用指令确定用于标识所述调用指令的标识符;
所述引擎将所述标识符携带在所述事件中并通过所述事件接口传输至所述SDK,以使所述SDK将所述标识符携带在目标执行结果中并通过所述回调接口传输至所述引擎。
在电子设备上多次操作同一按键可以触发多个调用指令,比如,在同一加速键上操作两次,会进行两次加速,而两次加速的基础速度不同,所以即使调用同一功能模块,所得的执行结果也可能并不相同。为了使得引擎及SDK能够区分每次的调用指令,为每个调用指令确定了一个标识符。
在事件中携带标识调用指令的标识符,使得SDK可依据标识符区分触发事件的调用指令;在SDK返回的执行结果中也携带该标识符,使得引擎可以依据标识符确定该执行结果所对应的调用指令,以正确地对执行结果进行提示或进一步处理。
基于前述实施例中的描述,目标消息处理对象在将目标子类型信息传入到对应的目标事件处理对象时,还可将标识符传入目标事件处理对象,在得到目标执行结果时,还将标识符携带在目标执行结果,SDK将携带了标识符的目标执行结果传输给引擎。
在一个实施例中,所述指令携带有与所述事件相关的数据;
所述引擎通过预置的事件接口将所述事件传输至所述SDK,包括:
所述引擎从所述调用指令中获取所述数据;
所述引擎将所述数据携带在所述事件中并通过所述事件接口传输至所述SDK,以使所述SDK将所述数据输入至所述目标功能模块中。
调用指令中会携带目标功能模块运行所需的数据,从其中获取数据后,将获取的数据携带在事件中,并通过事件接口将携带了数据的事件传输至SDK。
事件中携带的数据是目标功能模块运行所需的数据,具体每个功能模块所需的数据不同,可以根据实际需要而定。
SDK将事件携带的数据作为传参输入到目标功能模块后,目标功能模块依据输入的数据执行相应的处理。当然,也不排除一些功能模块在运行时不需要输入数据的情况,此时,事件中也可以不携带相关数据。
在一个实施例中,所述SDK的语言支持本设备的操作系统,并且所述SDK支持与本设备的操作系统不同的操作系统。
换言之,SDK的语言可以支持两个以上的操作系统,当然其中包括作为本发明实施例执行主体的电子设备的操作系统,如此,可以保证SDK能够跨平台使用。
SDK的语言比如可以包括C、C++等语言,当然具体不限于此,其他可支持不同操作系统的语言亦可。
本发明实施例中,SDK上接口的语言优选为C语言,由于C++具有重载等特性,容易产生重命名的问题,使用C语言编写接口可以避免函数重命名的问题,保证接口名称的唯一性,避免调用错误。
在一个实施例中,所述SDK的语言与所述SDK集成的功能模块的语言相同。SDK和功能模块的语言相同,使得SDK与功能模块之间的调用接口更容易编写,可以更方便地实现功能模块的调用。
SDK和SDK集成的功能模块的语言比如可以均为C或C++等语言,SDK和功能模块的语言均支持不同操作系统,保证APP整体实现跨平台。
在一个实施例中,所述SDK集成了多个不同的功能模块。如此,可以为引擎扩展更多的功能。
这些功能模块可以是同一库中的功能模块,也可以是不同库中的功能模块。当然,也不排除SDK仅集成一个功能模块的情况。
本发明实施例第三方面提供一种电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK。
参看图4,在一个实施例中,所述电子设备100包括:存储器101和处理器102。所述存储器101用于存储程序代码。所述处理器102用于调用所述程序代码,当程序代码被执行时,用于执行以下操作:
利用所述SDK通过预置的事件接口接收到来自所述引擎传输的事件,所述事件与需调用的目标功能模块相关,所述事件接口是所述SDK与所述引擎之间的接口;
利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
在一个实施例中,所述事件具有记录所述事件所属类型信息的类型字段;
所述处理器利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块时,具体用于:
利用所述SDK解析所述事件的类型字段;
利用所述SDK依据解析出的类型信息从所述SDK集成的功能模块中调用所述目标功能模块。
在一个实施例中,所述类型字段包括第一字段和第二字段;
所述第一字段上记录了所述事件所属的目标总类型信息,所述第二字段上记录了所述目标总类型信息的所有子类型信息中所述事件所属的目标子类型信息;
所述处理器利用所述SDK依据解析出的类型信息从所述SDK集成的功能模块中调用所述目标功能模块时,具体用于:
利用所述SDK依据所述目标总类型信息与目标子类型信息调用所述目标功能模块。
在一个实施例中,
所述处理器利用所述SDK依据所述目标总类型信息与目标子类型信息调用所述目标功能模块时,具体用于:
利用所述SDK调用与所述目标总类型信息对应的目标消息处理对象,以利用所述目标消息处理对象确定与所述目标子类型信息对应的目标事件处理对象;
利用所述SDK调用所述目标事件处理对象,以利用所述目标事件处理对象确定与所述目标子类型信息对应的功能模块;
利用所述SDK将确定出的功能模块作为目标功能模块并调用所述目标功能模块。
在一个实施例中,所述处理器利用SDK通过预置的事件接口接收到来自所述引擎传输的事件之前,还用于:
利用所述SDK通过预置的对象管理接口接收所述引擎传输的创建消息,所述创建消息用于指示创建SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象管理接口是所述SDK与所述引擎之间的接口;
利用所述SDK依据所述创建消息创建SDK管理对象。
在一个实施例中,所述处理器利用所述SDK通过预置的事件接口接收到来自所述引擎传输的事件之前,还用于:
利用所述SDK通过预置的对象初始化接口接收所述引擎传输的初始化消息,所述初始化消息用于指示初始化SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象初始化接口是所述SDK与所述引擎之间的接口;
利用所述SDK依据所述初始化消息初始化SDK管理对象。
在一个实施例中,所述处理器利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块之后,还用于:
利用所述SDK获取调用所述目标功能模块所得的目标执行结果;
利用所述SDK通过预置的回调接口将所述目标执行结果传输至所述引擎;所述回调接口是所述SDK与所述引擎之间的接口,用于将所述SDK调用各功能模块所得的执行结果传输至所述引擎。
在一个实施例中,
所述事件是所述引擎在收到指示需调用的目标功能模块的调用指令时触发的,所述事件还携带有用于标识所述调用指令的标识符;
所述处理器利用所述SDK通过预置的回调接口将所述目标执行结果传输至所述引擎时,具体用于:
利用所述SDK从所述事件中获取标识符;
利用所述SDK将所述标识符携带在目标执行结果中并通过所述回调接口传输至所述引擎。
在一个实施例中,
所述事件携带有与所述事件相关的数据;
所述处理器利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块时,还用于:
利用所述SDK将所述数据输入至所述目标功能模块中,以使所述目标功能模块依据所述数据执行处理。
在一个实施例中,所述SDK的语言支持本设备的操作系统,并且所述SDK支持与本设备的操作系统不同的操作系统。
在一个实施例中,所述SDK的语言与所述SDK集成的功能模块的语言相同。
在一个实施例中,所述SDK集成了多个不同的功能模块。
关于本发明实施例第三方面提供的电子设备的具体内容可参看本发明实施例第一方面提供的功能模块的调用方法中的描述内容,在此不再赘述。
本发明实施例第四方面提供一种电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK。
参看图4,在一个实施例中,所述电子设备100包括:存储器101和处理器102。所述存储器101用于存储程序代码。所述处理器102用于调用所述程序代码,当程序代码被执行时,用于执行以下操作:
在需调用目标功能模块时,利用所述引擎触发事件,所述事件与所述目标功能模块相关;
利用所述引擎通过预置的事件接口将所述事件传输至所述SDK,所述事件接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
在一个实施例中,所述事件具有记录所述事件所属类型信息的类型字段。
在一个实施例中,所述类型字段包括第一字段和第二字段;
所述第一字段上记录了所述事件所属的目标总类型信息,所述第二字段上记录了所述目标总类型信息的所有子类型信息中所述事件所属的目标子类型信息。
在一个实施例中,所述处理器利用所述引擎触发事件之前,还用于:
在需创建SDK管理对象时,利用所述引擎通过预置的对象管理接口传输创建消息至所述SDK,所述创建消息用于指示创建SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象管理接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的创建消息创建SDK管理对象。
在一个实施例中,所述处理器利用所述引擎触发事件之前,还用于:
在需初始化SDK管理对象时,利用所述引擎通过预置的对象初始化接口传输初始化消息至所述SDK,所述初始化消息用于指示初始化SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象初始化接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的初始化消息初始化SDK管理对象。
在一个实施例中,所述处理器利用所述引擎通过预置的事件接口将所述事件传输至所述SDK之后,还用于:
利用所述引擎通过预置的回调接口接收来自所述SDK传输的目标执行结果,所述目标执行结果是调用所述目标功能模块所得的执行结果;所述回调接口是所述SDK与所述引擎之间的接口,用于将所述SDK调用各功能模块所得的执行结果传输至所述引擎。
在一个实施例中,所述处理器利用所述引擎触发事件之前,还用于:
利用所述引擎接收指令;
当接收到调用指令时,所述调用指令用于指示需调用的目标功能模块,利用所述引擎确定需调用目标功能模块。
在一个实施例中,所述处理器利用所述引擎通过预置的事件接口将所述事件传输至所述SDK时,具体用于:
利用所述引擎依据所述调用指令确定用于标识所述调用指令的标识符;
利用所述引擎将所述标识符携带在所述事件中并通过所述事件接口传输至所述SDK,以使所述SDK将所述标识符携带在目标执行结果中并通过所述回调接口传输至所述引擎。
在一个实施例中,所述指令携带有与所述事件相关的数据;
所述处理器利用所述引擎通过预置的事件接口将所述事件传输至所述SDK时,具体用于:
利用所述引擎从所述调用指令中获取所述数据;
利用所述引擎将所述数据携带在所述事件中并通过所述事件接口传输至所述SDK,以使所述SDK将所述数据输入至所述目标功能模块中。
在一个实施例中,所述SDK的语言支持本设备的操作系统,并且所述SDK支持与本设备的操作系统不同的操作系统。
在一个实施例中,所述SDK的语言与所述SDK集成的功能模块的语言相同。
在一个实施例中,所述SDK集成了多个不同的功能模块。
关于本发明实施例第四方面提供的电子设备的具体内容可参看本发明实施例第二方面提供的功能模块的调用方法中的描述内容,在此不再赘述。
基于与上述方法同样的发明构思,本发明实施例中还提供一种计算机可读存储介质上存储有计算机指令,所述计算机指令被执行(如所述计算机指令被处理器执行)时,可以实现前述实施例中所述的功能模块的调用方法。
上述实施例阐明的系统、装置、模块或单元,可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照依据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进,均应包含在本发明的权利要求范围之内。

Claims (49)

1.一种功能模块的调用方法,其特征在于,应用于电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
该方法包括:
所述SDK通过预置的事件接口接收到来自所述引擎传输的事件,所述事件与需调用的目标功能模块相关,所述事件接口是所述SDK与所述引擎之间的接口;
所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
2.如权利要求1所述的功能模块的调用方法,其特征在于,所述事件具有记录所述事件所属类型信息的类型字段;
所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块,包括:
所述SDK解析所述事件的类型字段;
所述SDK依据解析出的类型信息从所述SDK集成的功能模块中调用所述目标功能模块。
3.如权利要求2所述的功能模块的调用方法,其特征在于,所述类型字段包括第一字段和第二字段;
所述第一字段上记录了所述事件所属的目标总类型信息,所述第二字段上记录了所述目标总类型信息的所有子类型信息中所述事件所属的目标子类型信息;
所述SDK依据解析出的类型信息从所述SDK集成的功能模块中调用所述目标功能模块,包括:
所述SDK依据所述目标总类型信息与目标子类型信息调用所述目标功能模块。
4.如权利要求3所述的功能模块的调用方法,其特征在于,
所述SDK依据所述目标总类型信息与目标子类型信息调用所述目标功能模块,包括:
所述SDK调用与所述目标总类型信息对应的目标消息处理对象,以利用所述目标消息处理对象确定与所述目标子类型信息对应的目标事件处理对象;
所述SDK调用所述目标事件处理对象,以利用所述目标事件处理对象确定与所述目标子类型信息对应的功能模块;
所述SDK将确定出的功能模块作为目标功能模块并调用所述目标功能模块。
5.如权利要求1所述的功能模块的调用方法,其特征在于,所述SDK通过预置的事件接口接收到来自所述引擎传输的事件之前,该方法还包括:
所述SDK通过预置的对象管理接口接收所述引擎传输的创建消息,所述创建消息用于指示创建SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象管理接口是所述SDK与所述引擎之间的接口;
所述SDK依据所述创建消息创建SDK管理对象。
6.如权利要求1所述的功能模块的调用方法,其特征在于,所述SDK通过预置的事件接口接收到来自所述引擎传输的事件之前,该方法还包括:
所述SDK通过预置的对象初始化接口接收所述引擎传输的初始化消息,所述初始化消息用于指示初始化SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象初始化接口是所述SDK与所述引擎之间的接口;
所述SDK依据所述初始化消息初始化SDK管理对象。
7.如权利要求1所述的功能模块的调用方法,其特征在于,所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块之后,该方法还包括:
所述SDK获取调用所述目标功能模块所得的目标执行结果;
所述SDK通过预置的回调接口将所述目标执行结果传输至所述引擎;所述回调接口是所述SDK与所述引擎之间的接口,用于将所述SDK调用各功能模块所得的执行结果传输至所述引擎。
8.如权利要求7所述的功能模块的调用方法,其特征在于,
所述事件是所述引擎在收到指示需调用的目标功能模块的调用指令时触发的,所述事件还携带有用于标识所述调用指令的标识符;
所述SDK通过预置的回调接口将所述目标执行结果传输至所述引擎,包括:
所述SDK从所述事件中获取标识符;
所述SDK将所述标识符携带在目标执行结果中并通过所述回调接口传输至所述引擎。
9.如权利要求1所述的功能模块的调用方法,其特征在于,
所述事件携带有与所述事件相关的数据;
所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块时,该方法还包括:
所述SDK将所述数据输入至所述目标功能模块中,以使所述目标功能模块依据所述数据执行处理。
10.如权利要求1-9中任一项所述的功能模块的调用方法,其特征在于,所述SDK的语言支持本设备的操作系统,并且所述SDK支持与本设备的操作系统不同的操作系统。
11.如权利要求1-9中任一项所述的功能模块的调用方法,其特征在于,所述SDK的语言与所述SDK集成的功能模块的语言相同。
12.如权利要求1-9中任一项所述的功能模块的调用方法,其特征在于,所述SDK集成了多个不同的功能模块。
13.一种功能模块的调用方法,其特征在于,应用于电子设备,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
该方法包括:
在需调用目标功能模块时,所述引擎触发事件,所述事件与所述目标功能模块相关;
所述引擎通过预置的事件接口将所述事件传输至所述SDK,所述事件接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
14.如权利要求13所述的功能模块的调用方法,其特征在于,所述事件具有记录所述事件所属类型信息的类型字段。
15.如权利要求14所述的功能模块的调用方法,其特征在于,所述类型字段包括第一字段和第二字段;
所述第一字段上记录了所述事件所属的目标总类型信息,所述第二字段上记录了所述目标总类型信息的所有子类型信息中所述事件所属的目标子类型信息。
16.如权利要求13所述的功能模块的调用方法,其特征在于,所述引擎触发事件之前,该方法还包括:
在需创建SDK管理对象时,所述引擎通过预置的对象管理接口传输创建消息至所述SDK,所述创建消息用于指示创建SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象管理接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的创建消息创建SDK管理对象。
17.如权利要求13所述的功能模块的调用方法,其特征在于,所述引擎触发事件之前,该方法还包括:
在需初始化SDK管理对象时,所述引擎通过预置的对象初始化接口传输初始化消息至所述SDK,所述初始化消息用于指示初始化SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象初始化接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的初始化消息初始化SDK管理对象。
18.如权利要求13所述的功能模块的调用方法,其特征在于,所述引擎通过预置的事件接口将所述事件传输至所述SDK之后,该方法还包括:
所述引擎通过预置的回调接口接收来自所述SDK传输的目标执行结果,所述目标执行结果是调用所述目标功能模块所得的执行结果;所述回调接口是所述SDK与所述引擎之间的接口,用于将所述SDK调用各功能模块所得的执行结果传输至所述引擎。
19.如权利要求18所述的功能模块的调用方法,其特征在于,所述引擎触发事件之前,该方法还包括:
所述引擎接收指令;
当接收到调用指令时,所述调用指令用于指示需调用的目标功能模块,所述引擎确定需调用目标功能模块。
20.如权利要求19所述的功能模块的调用方法,其特征在于,所述引擎通过预置的事件接口将所述事件传输至所述SDK,包括:
所述引擎依据所述调用指令确定用于标识所述调用指令的标识符;
所述引擎将所述标识符携带在所述事件中并通过所述事件接口传输至所述SDK,以使所述SDK将所述标识符携带在目标执行结果中并通过所述回调接口传输至所述引擎。
21.如权利要求19所述的功能模块的调用方法,其特征在于,所述指令携带有与所述事件相关的数据;
所述引擎通过预置的事件接口将所述事件传输至所述SDK,包括:
所述引擎从所述调用指令中获取所述数据;
所述引擎将所述数据携带在所述事件中并通过所述事件接口传输至所述SDK,以使所述SDK将所述数据输入至所述目标功能模块中。
22.如权利要求13-21中任一项所述的功能模块的调用方法,其特征在于,所述SDK的语言支持本设备的操作系统,并且所述SDK支持与本设备的操作系统不同的操作系统。
23.如权利要求13-21中任一项所述的功能模块的调用方法,其特征在于,所述SDK的语言与所述SDK集成的功能模块的语言相同。
24.如权利要求13-21中任一项所述的功能模块的调用方法,其特征在于,所述SDK集成了多个不同的功能模块。
25.一种电子设备,其特征在于,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
所述设备包括:存储器和处理器;
所述存储器,用于存储程序代码;
所述处理器,用于调用所述程序代码,当程序代码被执行时,用于执行以下操作:
利用所述SDK通过预置的事件接口接收到来自所述引擎传输的事件,所述事件与需调用的目标功能模块相关,所述事件接口是所述SDK与所述引擎之间的接口;
利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
26.如权利要求25所述的设备,其特征在于,所述事件具有记录所述事件所属类型信息的类型字段;
所述处理器利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块时,具体用于:
利用所述SDK解析所述事件的类型字段;
利用所述SDK依据解析出的类型信息从所述SDK集成的功能模块中调用所述目标功能模块。
27.如权利要求26所述的设备,其特征在于,所述类型字段包括第一字段和第二字段;
所述第一字段上记录了所述事件所属的目标总类型信息,所述第二字段上记录了所述目标总类型信息的所有子类型信息中所述事件所属的目标子类型信息;
所述处理器利用所述SDK依据解析出的类型信息从所述SDK集成的功能模块中调用所述目标功能模块时,具体用于:
利用所述SDK依据所述目标总类型信息与目标子类型信息调用所述目标功能模块。
28.如权利要求27所述的设备,其特征在于,
所述处理器利用所述SDK依据所述目标总类型信息与目标子类型信息调用所述目标功能模块时,具体用于:
利用所述SDK调用与所述目标总类型信息对应的目标消息处理对象,以利用所述目标消息处理对象确定与所述目标子类型信息对应的目标事件处理对象;
利用所述SDK调用所述目标事件处理对象,以利用所述目标事件处理对象确定与所述目标子类型信息对应的功能模块;
利用所述SDK将确定出的功能模块作为目标功能模块并调用所述目标功能模块。
29.如权利要求25所述的设备,其特征在于,所述处理器利用SDK通过预置的事件接口接收到来自所述引擎传输的事件之前,还用于:
利用所述SDK通过预置的对象管理接口接收所述引擎传输的创建消息,所述创建消息用于指示创建SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象管理接口是所述SDK与所述引擎之间的接口;
利用所述SDK依据所述创建消息创建SDK管理对象。
30.如权利要求25所述的设备,其特征在于,所述处理器利用所述SDK通过预置的事件接口接收到来自所述引擎传输的事件之前,还用于:
利用所述SDK通过预置的对象初始化接口接收所述引擎传输的初始化消息,所述初始化消息用于指示初始化SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象初始化接口是所述SDK与所述引擎之间的接口;
利用所述SDK依据所述初始化消息初始化SDK管理对象。
31.如权利要求25所述的设备,其特征在于,所述处理器利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块之后,还用于:
利用所述SDK获取调用所述目标功能模块所得的目标执行结果;
利用所述SDK通过预置的回调接口将所述目标执行结果传输至所述引擎;所述回调接口是所述SDK与所述引擎之间的接口,用于将所述SDK调用各功能模块所得的执行结果传输至所述引擎。
32.如权利要求31所述的设备,其特征在于,
所述事件是所述引擎在收到指示需调用的目标功能模块的调用指令时触发的,所述事件还携带有用于标识所述调用指令的标识符;
所述处理器利用所述SDK通过预置的回调接口将所述目标执行结果传输至所述引擎时,具体用于:
利用所述SDK从所述事件中获取标识符;
利用所述SDK将所述标识符携带在目标执行结果中并通过所述回调接口传输至所述引擎。
33.如权利要求25所述的设备,其特征在于,
所述事件携带有与所述事件相关的数据;
所述处理器利用所述SDK依据所述事件从所述SDK集成的功能模块中调用所述目标功能模块时,还用于:
利用所述SDK将所述数据输入至所述目标功能模块中,以使所述目标功能模块依据所述数据执行处理。
34.如权利要求25-33中任一项所述的设备,其特征在于,所述SDK的语言支持本设备的操作系统,并且所述SDK支持与本设备的操作系统不同的操作系统。
35.如权利要求25-33中任一项所述的设备,其特征在于,所述SDK的语言与所述SDK集成的功能模块的语言相同。
36.如权利要求25-33中任一项所述的设备,其特征在于,所述SDK集成了多个不同的功能模块。
37.一种电子设备,其特征在于,所述电子设备上安装有跨平台软件开发引擎、及软件开发工具包SDK;
所述设备包括:存储器和处理器;
所述存储器,用于存储程序代码;
所述处理器,用于调用所述程序代码,当程序代码被执行时,用于执行以下操作:
在需调用目标功能模块时,利用所述引擎触发事件,所述事件与所述目标功能模块相关;
利用所述引擎通过预置的事件接口将所述事件传输至所述SDK,所述事件接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的所述事件从所述SDK集成的功能模块中调用所述目标功能模块。
38.如权利要求37所述的设备,其特征在于,所述事件具有记录所述事件所属类型信息的类型字段。
39.如权利要求38所述的设备,其特征在于,所述类型字段包括第一字段和第二字段;
所述第一字段上记录了所述事件所属的目标总类型信息,所述第二字段上记录了所述目标总类型信息的所有子类型信息中所述事件所属的目标子类型信息。
40.如权利要求37所述的设备,其特征在于,所述处理器利用所述引擎触发事件之前,还用于:
在需创建SDK管理对象时,利用所述引擎通过预置的对象管理接口传输创建消息至所述SDK,所述创建消息用于指示创建SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象管理接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的创建消息创建SDK管理对象。
41.如权利要求37所述的设备,其特征在于,所述处理器利用所述引擎触发事件之前,还用于:
在需初始化SDK管理对象时,利用所述引擎通过预置的对象初始化接口传输初始化消息至所述SDK,所述初始化消息用于指示初始化SDK管理对象,所述SDK管理对象用于管理调用功能模块所需的对象,所述对象初始化接口是所述SDK与所述引擎之间的接口,以使所述SDK依据接收的初始化消息初始化SDK管理对象。
42.如权利要求37所述的设备,其特征在于,所述处理器利用所述引擎通过预置的事件接口将所述事件传输至所述SDK之后,还用于:
利用所述引擎通过预置的回调接口接收来自所述SDK传输的目标执行结果,所述目标执行结果是调用所述目标功能模块所得的执行结果;所述回调接口是所述SDK与所述引擎之间的接口,用于将所述SDK调用各功能模块所得的执行结果传输至所述引擎。
43.如权利要求42所述的设备,其特征在于,所述处理器利用所述引擎触发事件之前,还用于:
利用所述引擎接收指令;
当接收到调用指令时,所述调用指令用于指示需调用的目标功能模块,利用所述引擎确定需调用目标功能模块。
44.如权利要求43所述的设备,其特征在于,所述处理器利用所述引擎通过预置的事件接口将所述事件传输至所述SDK时,具体用于:
利用所述引擎依据所述调用指令确定用于标识所述调用指令的标识符;
利用所述引擎将所述标识符携带在所述事件中并通过所述事件接口传输至所述SDK,以使所述SDK将所述标识符携带在目标执行结果中并通过所述回调接口传输至所述引擎。
45.如权利要求43所述的设备,其特征在于,所述指令携带有与所述事件相关的数据;
所述处理器利用所述引擎通过预置的事件接口将所述事件传输至所述SDK时,具体用于:
利用所述引擎从所述调用指令中获取所述数据;
利用所述引擎将所述数据携带在所述事件中并通过所述事件接口传输至所述SDK,以使所述SDK将所述数据输入至所述目标功能模块中。
46.如权利要求37-45中任一项所述的设备,其特征在于,所述SDK的语言支持本设备的操作系统,并且所述SDK支持与本设备的操作系统不同的操作系统。
47.如权利要求37-45中任一项所述的设备,其特征在于,所述SDK的语言与所述SDK集成的功能模块的语言相同。
48.如权利要求37-45中任一项所述的设备,其特征在于,所述SDK集成了多个不同的功能模块。
49.一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质上存储有计算机指令,所述计算机指令被执行时,实现权利要求1-24中任一项的功能模块的调用方法。
CN201980010025.0A 2019-06-12 2019-06-12 功能模块的调用方法、设备、计算机可读存储介质 Pending CN111684420A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/090985 WO2020248172A1 (zh) 2019-06-12 2019-06-12 功能模块的调用方法、设备、计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN111684420A true CN111684420A (zh) 2020-09-18

Family

ID=72433222

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980010025.0A Pending CN111684420A (zh) 2019-06-12 2019-06-12 功能模块的调用方法、设备、计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN111684420A (zh)
WO (1) WO2020248172A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023245526A1 (zh) * 2022-06-23 2023-12-28 广州视源电子科技股份有限公司 一种桌面元素操作方法、电子设备以及智能交互平板

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559040A (zh) * 2013-11-12 2014-02-05 厦门卓讯信息技术有限公司 一种基于sdk快速构建移动互联网应用模块的系统和方法
CN104461575A (zh) * 2014-12-26 2015-03-25 北京华电万通科技有限公司 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法
CN107066291A (zh) * 2017-02-09 2017-08-18 阿里巴巴集团控股有限公司 软件开发工具包的打包方法、装置及设备、可读介质
CN108897567A (zh) * 2018-06-08 2018-11-27 广州虎牙信息科技有限公司 基于Unity的软件加载文件的方法、装置、设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307260A1 (en) * 2006-09-22 2009-12-10 Roemerman Steven D System-of-Systems Knowledge Management System and Method of Operating the Same
CN105389222B (zh) * 2015-12-15 2018-12-21 中国科学院声学研究所 一种动态调用原生接口的方法、装置和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559040A (zh) * 2013-11-12 2014-02-05 厦门卓讯信息技术有限公司 一种基于sdk快速构建移动互联网应用模块的系统和方法
CN104461575A (zh) * 2014-12-26 2015-03-25 北京华电万通科技有限公司 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法
CN107066291A (zh) * 2017-02-09 2017-08-18 阿里巴巴集团控股有限公司 软件开发工具包的打包方法、装置及设备、可读介质
CN108897567A (zh) * 2018-06-08 2018-11-27 广州虎牙信息科技有限公司 基于Unity的软件加载文件的方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023245526A1 (zh) * 2022-06-23 2023-12-28 广州视源电子科技股份有限公司 一种桌面元素操作方法、电子设备以及智能交互平板

Also Published As

Publication number Publication date
WO2020248172A1 (zh) 2020-12-17

Similar Documents

Publication Publication Date Title
JP6010540B2 (ja) 選択された実行ランタイムによる実行のためのユーザコードのランタイム非依存表現
US10592218B2 (en) Dynamic data and compute resource elasticity
US9298438B2 (en) Profiling application code to identify code portions for FPGA implementation
CN101627377B (zh) 从操作系统中抽象出操作环境
US8756616B2 (en) System and method for reducing the static footprint of mixed-language JAVA classes
CN100511156C (zh) 强制性地终止输入/输出操作阻止的线程的设备和方法
US10585653B2 (en) Declarative programming model with a native programming language
US20070239965A1 (en) Inter-partition communication
CN112463123B (zh) 任务编译方法、装置、网络节点、系统及存储介质
CN111399840A (zh) 一种模块开发方法及装置
CN109117253B (zh) 一种微内核调度的方法和装置
CN111684420A (zh) 功能模块的调用方法、设备、计算机可读存储介质
CN105677481B (zh) 一种数据处理方法、系统及电子设备
US10599444B2 (en) Extensible input stack for processing input device data
CN101176061A (zh) 数字信号处理器上多任务的实现
WO2019139738A1 (en) Extensible input stack for processing input device data
CN112416980B (zh) 数据业务处理方法、装置及设备
US11435989B2 (en) Thread-local return structure for asynchronous state machine
CN113377415A (zh) 应用发布方法及装置
US20160291946A1 (en) Custom class library generation method and apparatus
US20230359440A1 (en) Externally-initiated runtime type extension
CN111209062A (zh) 信息获取方法、装置、电子设备及计算机存储介质
CN108228362B (zh) 一种VxWorks系统的兼容方法、模块及道系统
CN110647405A (zh) 系统消息处理方法、电子设备和计算机可读存储介质
US11645082B2 (en) Programming language trigger mechanisms for parallel asynchronous enumerations

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200918

WD01 Invention patent application deemed withdrawn after publication