CN110659028B - 数据处理系统、方法、装置、电子设备及存储介质 - Google Patents

数据处理系统、方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN110659028B
CN110659028B CN201910944227.4A CN201910944227A CN110659028B CN 110659028 B CN110659028 B CN 110659028B CN 201910944227 A CN201910944227 A CN 201910944227A CN 110659028 B CN110659028 B CN 110659028B
Authority
CN
China
Prior art keywords
function
calling
type
specified
native
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
Application number
CN201910944227.4A
Other languages
English (en)
Other versions
CN110659028A (zh
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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN201910944227.4A priority Critical patent/CN110659028B/zh
Publication of CN110659028A publication Critical patent/CN110659028A/zh
Application granted granted Critical
Publication of CN110659028B publication Critical patent/CN110659028B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

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

Abstract

本公开关于一种数据处理系统、方法、装置、电子设备、存储介质,涉及计算机技术领域,通过按照预设格式的协议文件,生成相互对应的函数接口及函数框架,按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,避免了因协议不兼容导致通讯异常的错误,通过将用于调用指定原生程序的函数信息转化为指定格式的数据块,发送数据块至系统平台端,将数据块进行解码得到函数信息,根据函数信息的函数名确定对应的目标调用函数,并将函数信息的函数参数转化为目标调用函数可以识别的类型,从而调用系统平台的指定原生程序,实现了代码自动生成,减轻开发人员编码工作量。

Description

数据处理系统、方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及数据处理系统、方法、装置、电子设备及存储介质。
背景技术
Flutter是谷歌开发的一套跨平台,移动开源UI(User Interface,用户界面)框架,可以快速在ios(苹果)操作系统和Android(安卓)操作系统上构建高质量的原生用户界面,开发者利用Flutter可以高效构建多平台精美应用。Flutter支持移动、Web(World WideWeb,万维网)、桌面和嵌入式平台,Flutter使用的网络开发语言主要为用Dart语言实现。目前,越来越多的开发者使用Flutter框架进行Android操作系统和ios操作系统应用程序的开发。
Flutter的优势主要是在UI渲染,Flutter不能直接调用ios操作系统或Android操作系统上的系统平台相关代码,这一原因导致使用Flutter开发的应用程序在访问ios操作系统或Android操作系统底层能力时变得比较困难,比如,使用Flutter开发的应用程序不能直接调用Android操作系统上的相机、陀螺仪、不能与同一系统上其他应用程序进行通信等。为了解决这一问题,Flutter提供了“平台通道”机制(Platform Channels),以实现Flutter能够直接调用ios操作系统或Android操作系统上的系统平台相关代码。
现有技术中,Flutter主要使用Dart语言,Android平台上通常采用Java或Kotlin语言,在ios平台上通常采用Objective-C或Swift语言,由于在Dart同Java或Kotlin、Objective-C或Swift通讯过程中,需要开发人员手工完成协议编码工作,这会产生大量琐碎的重复编码,而且很容易引入错误,导致编码排查工作难度大,原因包括:
第一,Flutter UI框架、Android操作系统、ios操作系统三端依赖口头或者书面的协议文档进行通讯,这种协议文档无法直接自动翻译为代码,对通讯过程缺少强约束,三端在处理协议的过程中会出现理解不一致,比如,Flutter UI端发送的是字符串型数据,但Android操作系统端却按照整形数据进行接收,这样就会发生解析失败的错误,这种错误在程序编译阶段不会自动暴露出来,排查难度大;
第二,当Flutter UI框架、Android操作系统、ios操作系统三端中某一端变更协议时,不能自动通知其他端配合修改,新老协议不兼容,也会导致排查难度大。
发明内容
本公开提供一种数据处理系统,方法、装置、电子设备、存储介质及包含指令的计算机程序产品,以实现代码自动生成,减轻开发人员编码工作量,避免因协议不兼容导致通讯异常的错误。
本公开的技术方案如下:
根据本公开实施例的第一方面,本公开提供一种数据处理系统,所述系统包括:
函数接口、函数框架、调用函数、通信模块、第一编译码模块及第二编译码模块,其中,所述函数接口与所述函数框架相互对应,所述函数框架用于定义函数参数的类型,不同的调用函数根据不同的函数框架定义的类型编码得到,所述函数接口及所述第一编译码模块位于应用程序侧,所述函数框架及所述第二编译码模块位于系统平台侧;
所述函数接口,被配置为响应所述应用程序的用户界面的调用,调用相应的函数信息,所述函数信息包括函数名及函数参数,所述函数名表示所述函数信息对应的函数框架;
所述第一编译码模块,被配置为将所述函数接口调用的函数信息转换为所述通信模块可以识别的指定格式的数据块;
所述通信模块,被配置为在所述应用程序及所述系统平台间传输数据;
所述第二编译码模块,被配置为按照所述数据块中的函数名,确定相应的函数框架定义的类型,得到目标类型;将所述数据块转换为目标类型的函数信息,并调用所述目标类型对应的调用函数;
所述调用函数,被配置为执行所述函数信息的函数参数时,调用所述系统平台的原生函数。
可选的,所述系统还包括:
代码工具模块,被配置为按照预设格式的协议文件,生成所述函数接口及所述函数框架。
可选的,所述函数框架还被配置为定义返回值的类型,所述调用函数还被配置为:响应于所述系统平台原生函数的调用结果,生成所述调用函数对应类型的返回值;
第二编译码模块,还被配置为将所述返回值转换为所述通信模块可以识别的指定格式的返回数据块;
所述第一编译码模块,还被配置为将所述返回数据块解码为对应类型的返回值,并将所述对应类型的返回值发送给对应的函数接口;
所述函数接口,还被配置为将接收到的返回值发送给所述应用程序的用户界面。
根据本公开实施例的第二方面,提供一种数据处理方法,应用于上述第一方面任一所述的数据处理系统,所述方法包括:
按照预设格式的协议文件,生成函数接口及函数框架,其中,所述函数接口与所述函数框架之间相互对应,所述函数框架用于定义函数参数的类型;
按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,所述原生函数列表包括所述应用程序需要调用的各原生函数的标识。
可选的,所述函数框架还用于定义返回值的类型,所述方法还包括:
基于指定函数框架定义的返回值的类型,编写响应于所述系统平台原生函数的调用结果的调用函数,其中,响应于所述系统平台原生函数的调用结果,所述调用函数生成指定类型的返回值。
可选的,所述预设格式为Proto Buffers。
根据本公开实施例的第三方面,提供一种数据处理装置,应用于上述第一方面任一所述的数据处理系统,所述装置包括:
生成模块,被配置为按照预设格式的协议文件,生成函数接口及函数框架,其中,所述函数接口与所述函数框架之间相互对应,所述函数框架用于定义函数参数的类型;
第一编写模块,被配置为按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,所述原生函数列表包括所述应用程序需要调用的各原生函数的标识。
可选的,所述装置还包括:
第二编写模块,被配置为基于指定函数框架定义的返回值的类型,编写响应于所述系统平台原生函数的调用结果的调用函数,其中,响应于所述系统平台原生函数的调用结果,所述调用函数生成指定类型的返回值。
可选的,所述预设格式为Proto Buffers。
根据本公开实施例的第四方面,提供一种数据处理方法,所述方法包括:
在通过目标应用的用户界面调用系统平台的指定原生程序时,获取所述目标应用的用户界面针对所述指定函数接口的调用命令,其中,所述指定函数接口针对所述指定原生程序的函数接口;
按照所述调用命令,调用针对所述指定原生程序的指定函数接口,得到用于调用所述指定原生程序的函数信息,其中,所述函数信息包括函数名及函数参数;
将所述函数信息转化为指定格式的数据块;
发送所述数据块,以使系统平台端获取所述数据块;
通过所述系统平台解码所述数据块得到所述函数信息;
根据所述函数信息的函数名,确定所述函数名对应的目标调用函数,并将所述函数信息的函数参数转化为所述目标调用函数可以识别的类型;
利用所述目标调用函数框架执行类型转换后的函数参数,从而调用所述系统平台的指定原生程序。
可选的,所述方法还包括:
通过所述目标调用函数生成所述系统平台原生程序的调用结果的返回值;
将所述返回值转换为指定格式的返回数据块;
发送所述返回数据块,以使应用程序端获取所述返回数据块;
将所述返回数据块解码为所述目标调用函数可以识别的类型,得到类型转换后的返回值;
通过所述指定函数接口,将所述类型转换后的返回值发送给所述应用程序的用户界面。
可选的,所述方法还包括:
按照预设格式的协议文件,生成函数接口及函数框架,其中,所述函数接口与所述函数框架之间相互对应,所述函数框架用于定义函数参数的类型及返回值的类型;
按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,所述原生函数列表包括所述应用程序需要调用的各原生函数的标识;
基于指定函数框架定义的返回值的类型,编写响应于所述系统平台原生函数的调用结果的调用函数,其中,响应于所述系统平台原生函数的调用结果,所述调用函数生成指定类型的返回值。
可选的,所述预设格式为Proto Buffers。
可选的,所述将所述函数信息转化为指定格式的数据块,包括:
利用gRPC将所述函数信息序列化生成Proto Buffers格式的数据块。
根据本公开实施例的第五方面,提供一种数据处理装置,所述装置包括:
采集模块,被配置为在通过目标应用的用户界面调用系统平台的指定原生程序时,获取所述目标应用的用户界面针对所述指定函数接口的调用命令,其中,所述指定函数接口针对所述指定原生程序的函数接口;
调用模块,被配置为按照所述调用命令,调用针对所述指定原生程序的指定函数接口,得到用于调用所述指定原生程序的函数信息,其中,所述函数信息包括函数名及函数参数;
转化模块,被配置为将所述函数信息转化为指定格式的数据块;
发送模块,被配置为发送所述数据块,以使系统平台端获取所述数据块;
解码模块,被配置为通过所述系统平台解码所述数据块得到所述函数信息;
确定模块,被配置为根据所述函数信息的函数名,确定所述函数名对应的目标调用函数,并将所述函数信息的函数参数转化为所述目标调用函数可以识别的类型;
执行模块,被配置为利用所述目标调用函数框架执行类型转换后的函数参数,从而调用所述系统平台的指定原生程序。
可选的,所述装置还包括:
返回模块,被配置为通过所述目标调用函数生成所述系统平台原生程序的调用结果的返回值;
转换模块,被配置为将所述返回值转换为指定格式的返回数据块;
通信模块,被配置为发送所述返回数据块,以使应用程序端获取所述返回数据块;
目标转化模块,被配置为将所述返回数据块解码为所述目标调用函数可以识别的类型,得到类型转换后的返回值;
传递模块,被配置为通过所述指定函数接口,将所述类型转换后的返回值发送给所述应用程序的用户界面。
可选的,所述装置还包括:
协议模块,被配置为按照预设格式的协议文件,生成函数接口及函数框架,其中,所述函数接口与所述函数框架之间相互对应,所述函数框架用于定义函数参数的类型及返回值的类型;
第一编写模块,被配置为按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,所述原生函数列表包括所述应用程序需要调用的各原生函数的标识;
第一编写模块,被配置为基于指定函数框架定义的返回值的类型,编写响应于所述系统平台原生函数的调用结果的调用函数,其中,响应于所述系统平台原生函数的调用结果,所述调用函数生成指定类型的返回值。
可选的,所述预设格式为Proto Buffers。
可选的,所述将所述函数信息转化为指定格式的数据块,包括:
利用gRPC将所述函数信息序列化生成Proto Buffers格式的数据块。
根据本公开实施例的第六方面,提供一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,
所述处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,被配置为存放计算机程序;
处理器,被配置为执行存储器上所存放的程序时,实现上述第二方面任一项所述的数据处理方法。
根据本公开实施例的第七方面,提供一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,
所述处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,被配置为存放计算机程序;
处理器,被配置为执行存储器上所存放的程序时,实现上述第四方面任一项所述的数据处理方法。
根据本公开实施例的第八方面,提供一种存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面任一项所述的数据处理方法。
根据本公开实施例的第九方面,提供一种存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第四方面任一项所述的数据处理方法。
根据本公开实施例的第十方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面任一项所述的数据处理方法。
根据本公开实施例的第十一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第四方面任一项所述的数据处理方法。
本公开的实施例提供的数据处理系统、方法、装置、电子设备、存储介质及包含指令的计算机程序产品,至少带来以下有益效果:
按照预设格式的协议文件,生成相互对应的函数接口及函数框架,按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,避免了因协议不兼容导致通讯异常的错误,通过将函数信息转化为指定格式的数据块,发送所述数据块,以使系统平台端获取所述数据块,和现有技术相比,此部分根据预设格式设置函数信息,实现了代码自动生成,实现了应用程序和系统平台的通讯,减轻开发人员编码工作量,而且通过所述系统平台解码所述数据块得到所述函数信息,根据所述函数信息的函数名,确定所述函数名对应的目标调用函数,并将所述函数信息的函数参数转化为所述目标调用函数可以识别的类型,利用所述目标调用函数框架执行类型转换后的函数参数,从而调用所述系统平台的指定原生程序,和现有技术相比,不用开发人员人工将函数参数转为为系统平台识别的数据类型,实现了代码自动生成,减轻开发人员编码工作量。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种数据处理系统的示意图;
图2是根据一示例性实施例示出的第一种数据处理方法的示意图;
图3是根据一示例性实施例示出的第一种数据处理装置的框图;
图4是根据一示例性实施例示出的第二种数据处理方法的示意图;
图5是根据一示例性实施例示出的第三种数据处理方法的示意图;
图6是根据一示例性实施例示出的第二种数据处理装置的框图;
图7是根据一示例性实施例示出的第一种电子设备的框图;
图8是根据一示例性实施例示出的第二种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开实施例公开了一种数据处理系统、方法、装置、电子设备、存储介质及包含指令的计算机程序产品,以下分别进行说明。
图1为根据一示例性实施例示出的一种数据处理系统的示意图,如图1所示,包括:
函数接口010、函数框架050、调用函数060、通信模块030、第一编译码模块020及第二编译码模块040。
其中,上述函数接口010与上述函数框架050相互对应,上述函数框架050用于定义函数参数的类型,不同的调用函数根据不同的函数框架定义的类型编码得到,上述函数接口010及上述第一编译码模块020位于应用程序侧,上述函数框架050及上述第二编译码模块040位于系统平台侧。
上述函数接口010与上述函数框架050相互对应的,具体的,按照预设格式编写关于应用程序的协议文件,上述预设格式可以为Proto Buffers。根据上述预设格式的协议文件,通过代码工具,如gRPC(在HTTP/2之上实现的RPC框架)工具自动生成上述函数接口010及函数框架050,其中,上述函数接口010与上述函数框架050之间相互对应,上述函数框架050用于定义函数参数的类型,不同的调用函数根据不同的函数框架定义的类型编码得到,系统平台可以安卓系统、ios系统中的任意一个,例如,开发一个用于拍照的应用程序A,上述应用程序A安装于安卓系统,应用程序A需要调用上述安卓系统中的硬件设备摄像头,则,按照预设格式编写关于应用程序A与安卓系统之间的协议文件,使用代码工具gRPC生成应用程序A的函数接口,以及系统平台安卓系统关于应用程序A的函数框架,例如,应用程序A的函数接口表示为RPC_API_A,安卓系统关于摄像头调用的函数框架表示为ServiceImplBase_A,函数框架用于定义函数的类型,包括定义函数参数及函数返回值的类型。使用预设格式编写协议文件,使得协议描写更加准确,避免歧义,从而实现避免了因协议不兼容导致通讯异常的错误。
上述函数接口010,被配置为响应上述应用程序的用户界面的调用,调用相应的函数信息,上述函数信息包括函数名及函数参数,上述函数名表示上述函数信息对应的函数框架050。
例如,开发完的应用程序A,用户界面设置有拍照,用户操作拍照,比如用户按下用户界面的拍照按钮后,上述应用程序A生成拍照指令,应用程序A的函数接口RPC_API_A响应上述拍照指令,调用关于拍照的函数信息,其中,上述函数信息包括函数名及函数参数,上述函数名表示上述函数信息对应的函数框架ServiceImplBase_A。例如,按照预设原生函数列表,根据上述函数框架定义的函数参数及函数返回值的类型,基于函数框架,编写用于调用系统平台原生函数的调用函数,其中,上述原生函数列表包括上述应用程序需要调用的各原生函数的标识,摄像头调用的函数框架的函数参数的类型为ServiceImpl_A。上述函数名表示上述函数信息对应的函数框架这样使得在后续函数信息调用及响应过程中,应用程序和系统平台实现通讯,从而实现避免了因协议不兼容导致通讯异常的错误。
上述第一编译码模块020,被配置为将上述函数接口调用的函数信息转换为上述通信模块030可以识别的指定格式的数据块。
使用上述第一编译码模块020将上述函数接口调用的函数信息转换为上述通信模块030可以识别的指定格式的数据块,这样在通信模块030可以将函数信息传递给系统平台侧。例如,当函数接口RPC_API_A响应上述拍照指令后,函数接口RPC_API_A自动调用上述第一编译码模块020,第一编译码模块020利用gRPC工具将函数信息序列化成Proto Buffers格式的数据块。
上述通信模块030,被配置为在上述应用程序及上述系统平台间传输数据。
上述通信模块030用于将指定格式的数据块发送至系统平台侧。开发人员利用Flutter开发应用程序,Flutter提供了“平台通道”机制以实现Flutter开发的应用程序能够直接调用ios操作系统或Android操作系统上的系统平台相关代码。通过上述通信模块030,实现应用程序及上述系统平台的通讯。
上述第一编译码模块020将上述函数接口调用的函数信息转换为上述通信模块030可以识别的指定格式的数据块后,可以通过上述通信模块030将上述指定格式的数据块传递给上述系统平台侧,使得系统平台侧响应调用的函数。
上述第二编译码模块040,被配置为将上述数据块进行解码,得到上述数据块中的函数名,按照上述数据块中的函数名,确定相应的函数框架050定义的类型,得到目标类型;将上述数据块转换为目标类型的函数信息,并调用上述目标类型对应的调用函数060。
系统平台侧接收到应用程序端传递的上述数据块后,系统平台侧的上述第二编译码模块040将上述数据块进行解码,得到数据块中函数名。因为函数框架050定义了函数类型、返回值的类型,按照上述数据块中的函数名,确定相应的函数框架050定义的类型,得到目标类型,然后将上述数据块转换为目标类型的函数信息,从而调用上述目标类型对应的调用函数060,使得系统平台侧可以调用上述函数信息。
上述调用函数060,被配置为执行上述函数信息的函数参数时,调用上述系统平台的原生函数。
上述调用函数060执行上述函数信息的函数参数时,调用上述系统平台的原生函数,例如,调用摄像头调用函数。从而实现应用程序和系统平台的通信。
在一种可能的实施方式中,上述系统还包括:
代码工具模块,被配置为按照预设格式的协议文件,生成上述函数接口及上述函数框架。
例如,开发一个应用程序B,应用程序B同时安装在安卓系统和ios系统中,应用程序B需要调用安卓系统中的摄像头进行拍照,则按照预设格式编写关于应用程序B的协议文件,利用上述代码工具模块自动生成上述函数接口010及上述函数框架050,其中函数框架包括安卓系统的函数框架。例如,上述预设格式的协议文件为Proto Buffers格式。通过代码工具gRPC工具自动生成上述函数接口RPC_API_B,函数框架ServiceImplBaseAndroid_B,其中上述函数接口及上述函数框架是相互对应的,即,当调用函数接口RPC_API_B时,当通过上述通信模块030将响应数据传递至系统平台侧,即安卓系统,根据生成对应的函数框架,可以自动进行响应。使用预设格式编写协议文件,使得协议描写更加准确,避免歧义,从而实现避免了因协议不兼容导致通讯异常的错误。
例如,开发一个应用程序B,应用程序B同时安装在ios系统中,应用程序B需要调用ios系统中的摄像头进行拍照,则按照预设格式编写关于应用程序B的协议文件,利用上述代码工具模块自动生成上述函数接口010及上述函数框架050,其中函数框架包括ios系统的函数框架。例如,上述预设格式的协议文件为Proto Buffers格式。通过代码工具gRPC工具自动生成上述函数接口RPC_API_B,函数框架ServiceImplBaseIOS_B,其中上述函数接口及上述函数框架是相互对应的,即,当调用函数接口RPC_API_B时,当通过上述通信模块030将响应数据传递至系统平台侧,即ios系统侧,根据生成对应的函数框架,可以自动进行响应。使用预设格式编写协议文件,使得协议描写更加准确,避免歧义,从而实现避免了因协议不兼容导致通讯异常的错误。
在一种可能的实施方式中,上述函数框架还被配置为定义返回值的类型,上述调用函数还被配置为:响应于上述系统平台原生函数的调用结果,生成上述调用函数对应类型的返回值;
第二编译码模块,还被配置为将上述返回值转换为上述通信模块可以识别的指定格式的返回数据块;
上述第一编译码模块,还被配置为将上述返回数据块解码为对应类型的返回值,并将上述对应类型的返回值发送给对应的函数接口;
上述函数接口,还被配置为将接收到的返回值发送给上述应用程序的用户界面。
调用函数ServiceImpl_A后,通过ServiceImpl_A调用上述系统平台的原生函数后,生成返回值,上述第二编译码模块040将上述返回值按照预设格式,比如Proto Buffers格式进行编码,生成上述通信模块030可以识别的格式,通过上述通信模块030传递至应用程序侧。然后通过上述第一编译码模块将编码后的返回值进行解码,得到上述函数接口可以识别的类型的目标返回值,根据上述目标返回值,上述函数接口将上述目标返回值传递给上述应用程序的用户界面,从而实现应用程序调用系统平台的相关功能,实现应用程序与系统平坦的通讯。
进一步的,其中,上述通信模块可以包括:第一通信子模块及第二通信子模块。上述第一通信子模块设置在上述应用程序端,上述第二通信子模块设置在上述系统平台侧;第一通信子模块,被配置为将上述第一编译码模块转换的上述通信模块可以识别的指定格式的数据块传递给上述系统平台;第二通信子模块,被配置为将上述第二编译码模块转换的目标格式的返回值传递给上述应用程序。
通过上述数据处理系统的函数接口与函数框架相互对应,上述函数框架用于定义函数参数的类型,不同的调用函数根据不同的函数框架定义的类型编码得到,通过上述函数接口响应上述应用程序的用户界面的调用,调用相应的函数信息,通过上述第一编译码模块将上述函数接口调用的函数信息转换为上述通信模块可以识别的指定格式的数据块,通过上述通信模块将上述指定格式的数据块传递至系统平台侧,上述第二编译码模块按照上述数据块中的函数名,确定相应的函数框架定义的类型,得到目标类型,将上述数据块转换为目标类型的函数信息,并调用上述目标类型对应的调用函数,上述调用函数执行上述函数信息的函数参数时,调用上述系统平台的原生函数。通过应用程序侧的函数类型、系统平台侧的函数类型以及通信模块的可以识别的指定格式,分别通过第一编译码模块和第二编译码模块对函数调用过程中的信息按照预设格式进行处理,从而实现了应用程序和系统平台通讯代码的自动生成,减轻开发人员编码工作量。
图2是根据一示例性实施例示出的第一种数据处理方法的示意图,应用于上述任一上述的数据处理系统,如图2所示,上述方法包括以下步骤:
在步骤110中,按照预设格式的协议文件,生成函数接口及函数框架,其中,上述函数接口与上述函数框架之间相互对应,上述函数框架用于定义函数参数的类型。
本申请实施例的数据处理方法可以通过电子设备实现,具体的,该电子设备可以为服务器。
按照预设格式编写关于应用程序的协议文件,上述预设格式可以为ProtoBuffers或者Thrift。根据上述预设格式的协议文件,通过代码工具,如gRPC工具自动生成函数接口及函数框架,其中,上述函数接口与上述函数框架之间相互对应,上述函数框架用于定义函数参数的类型,系统平台为安卓系统、ios系统中的一个或多个,例如,开发一个用于拍照的应用程序A,上述应用程序A安装于安卓系统,应用程序A需要调用上述安卓系统中的硬件设备摄像头,则,按照预设格式编写关于应用程序A与安卓系统之间的协议文件,使用代码工具gRPC生成应用程序A的函数接口,以及系统平台安卓系统关于应用程序A的函数框架,例如,应用程序A的函数接口表示为RPC_API_A,安卓系统关于摄像头调用的函数框架表示为ServiceImplBase_A,函数框架用于定义函数的类型,包括定义函数参数及函数返回值的类型。使用预设格式编写协议文件,使得协议描写更加准确,避免歧义,从而实现避免了因协议不兼容导致通讯异常的错误。
在步骤120中,按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,上述原生函数列表包括上述应用程序需要调用的各原生函数的标识。
按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数。例如,按照预设原生函数列表,根据上述函数框架定义的函数参数及函数返回值的类型,基于函数框架,编写用于调用系统平台原生函数的调用函数,摄像头调用的函数框架的函数参数的类型为ServiceImpl_A。基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,可避免因协议不兼容导致通讯异常的错误,从而实现减轻开发人员编码的工作量。
在一种可能的实施方式中,上述函数框架还用于定义返回值的类型,上述方法还包括:
基于指定函数框架定义的返回值的类型,编写响应于上述系统平台原生函数的调用结果的调用函数,其中,响应于上述系统平台原生函数的调用结果,上述调用函数生成指定类型的返回值。
在一种可能的实施方式中,上述预设格式为Proto Buffers。
使用Proto Buffers格式编写协议文件,使得协议描写更加准确,避免歧义,从而实现避免了因协议不兼容导致通讯异常的错误。
按照预设格式的协议文件,生成相互对应的函数接口及函数框架,按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,避免了因协议不兼容导致通讯异常的错误。
图3根据一示例性实施例示出的第一种数据处理装置的框图,参见图3,该装置包括:生成模块210,第一编写模块220。
生成模块210,被配置为按照预设格式的协议文件,生成函数接口及函数框架,其中,上述函数接口与上述函数框架之间相互对应,上述函数框架用于定义函数参数的类型;
第一编写模块220,被配置为按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,上述原生函数列表包括上述应用程序需要调用的各原生函数的标识。
在一种可能的实施方式中,上述装置还包括:
第二编写模块,被配置为基于指定函数框架定义的返回值的类型,编写响应于上述系统平台原生函数的调用结果的调用函数,其中,响应于上述系统平台原生函数的调用结果,上述调用函数生成指定类型的返回值。
在一种可能的实施方式中,上述预设格式为Proto Buffers。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4是根据一示例性实施例示出的第二种数据处理方法的示意图,如图4所示,上述方法包括以下步骤:
在步骤310中,在通过目标应用的用户界面调用系统平台的指定原生程序时,获取上述目标应用的用户界面针对上述指定函数接口的调用命令,其中,上述指定函数接口针对上述指定原生程序的函数接口。
本申请实施例的数据处理方法可以通过电子设备实现,具体的,该电子设备可以为服务器。
按照预设格式编写关于目标应用的协议文件,上述预设格式可以为ProtoBuffers格式。根据上述预设格式的协议文件,通过代码工具,如gRPC工具自动生成函数接口及函数框架,其中,上述函数接口与上述函数框架之间相互对应,上述函数框架用于定义函数参数的类型,系统平台为安卓系统、ios系统中的一个或多个,例如,利用Flutter开发一个用于拍照的应用程序A,上述应用程序A安装于安卓系统,应用程序A需要调用上述安卓系统中的硬件设备摄像头,则,按照预设格式编写关于应用程序A与安卓系统之间的协议文件,使用代码工具gRPC生成应用程序A的函数接口,以及系统平台安卓系统关于应用程序A的函数框架,例如,应用程序A的函数接口表示为RPC_API_A,安卓系统关于摄像头调用的函数框架表示为ServiceImplBase_A,函数框架用于定义函数的类型,包括定义函数参数及函数返回值的类型。根据函数框架,定义目标调用函数,比如应用程序A与安卓系统关于摄像头调用的调用函数为ServiceImpl_A。
例如,目标应用为用于拍照的应用程序A,用户界面设置有拍照按钮,用于用户操作此按钮进行拍照,例如用户按下用户界面的拍照按钮后,上述应用程序A生成拍照指令,调用应用程序A的函数接口RPC_API_A。
在步骤320中,按照上述调用命令,调用针对上述指定原生程序的指定函数接口,得到用于调用上述指定原生程序的函数信息,其中,上述函数信息包括函数名及函数参数。
根据上述应用程序A生成拍照指令,调用应用程序A的函数接口RPC_API_A,从而得到关于拍照的函数信息,其中,上述函数信息包括函数名及函数参数。
在步骤330中,将上述函数信息转化为指定格式的数据块。
由于在Dart同Java或Kotlin、Objective-C或Swift通讯过程中,由于在Dart同Java或Kotlin、Objective-C或Swift通讯过程中,需要开发人员手工完成协议编码工作才能实现通信,具体的,因为传递函数信息的函数中的函数名的类型是String,由于Flutter官方组件StandardMessageCodec仅支持基本类型,所以需要将上述函数信息转化为指定格式的数据块,以此为了调用函数信息后,函数参数可以传递至系统平台端,且系统平台端可以识别并可直接运用,避免因协议不兼容导致通讯异常的错误。例如,利用gRPC将上述函数信息系列化为Proto Buffers格式的数据块。
在步骤340中,发送上述数据块,以使系统平台端获取上述数据块。
将上述数据块发送至系统平台端,以使系统平台端获取上述数据块。
在步骤350中,通过上述系统平台解码上述数据块得到上述函数信息。
系统平台端接收到上述数据块后,将上述系统平台解码上述数据块得到上述函数信息,其中上述函数信息包括函数名和函数参数。
在步骤360中,根据上述函数信息的函数名,确定上述函数名对应的目标调用函数,并将上述函数信息的函数参数转化为上述目标调用函数可以识别的类型。
例如,根据上述函数信息的函数名,确定上述函数名对应的目标调用函数为应用程序A与安卓系统关于摄像头调用的调用函数ServiceImpl_A。因为调用函数ServiceImpl_A规定了函数参数类型和函数返回值类型,根据调用函数ServiceImpl_A,将上述函数信息的函数参数转化为上述目标调用函数可以识别的类型,已完成函数的调用。这样可以自动生成通讯代码,减少开发人员的编码工作量。
在步骤370中,利用上述目标调用函数框架执行类型转换后的函数参数,从而调用上述系统平台的指定原生程序。
上述目标调用函数框架执行类型转换后的函数参数,从而调用上述系统平台的指定原生程序,实现从应用程序端到系统平台端的指定原生程序的调用。
按照上述调用命令,调用针对上述指定原生程序的指定函数接口,得到用于调用上述指定原生程序的函数信息,将上述函数信息转化为指定格式的数据块,发送上述数据块,以使系统平台端获取上述数据块,通过上述系统平台解码上述数据块得到上述函数信息,根据上述函数信息的函数名,确定上述函数名对应的目标调用函数,并将上述函数信息的函数参数转化为上述目标调用函数可以识别的类型,利用上述目标调用函数框架执行类型转换后的函数参数,从而调用上述系统平台的指定原生程序,实现了代码自动生成,减轻开发人员编码工作量。
在一种可能的实施方式中,上述方法还包括:
通过上述目标调用函数生成上述系统平台原生程序的调用结果的返回值;
将上述返回值转换为指定格式的返回数据块;
发送上述返回数据块,以使应用程序端获取上述返回数据块;
将上述返回数据块解码为上述目标调用函数可以识别的类型,得到类型转换后的返回值;
通过上述指定函数接口,将上述类型转换后的返回值发送给上述应用程序的用户界面。
当调用上述系统平台的指定原生程序函数后,例如,调用函数ServiceImpl_A后,ServiceImpl_A生成返回值,将上述返回值按照预设格式,比如Proto Buffers格式进行编码,生成预设格式的返回数据块,将上述返回数据块发送至应用程序端,应用程序端接收到上述返回数据块后,将上述返回数据块进行解码为上述目标调用函数可以识别的类型,得到类型转换后的返回值,通过上述指定函数接口,将上述类型转换后的返回值发送给上述应用程序的用户界面,从而实现应用程序调用系统平台的相关功能,实现应用程序与系统平台的通讯。
在一种可能的实施方式中,上述方法还包括:
按照预设格式的协议文件,生成函数接口及函数框架,其中,上述函数接口与上述函数框架之间相互对应,上述函数框架用于定义函数参数的类型及返回值的类型;
按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,上述原生函数列表包括上述应用程序需要调用的各原生函数的标识;
基于指定函数框架定义的返回值的类型,编写响应于上述系统平台原生函数的调用结果的调用函数,其中,响应于上述系统平台原生函数的调用结果,上述调用函数生成指定类型的返回值。
按照预设格式编写关于目标应用的协议文件,上述预设格式可以为ProtoBuffers格式。根据上述预设格式的协议文件,通过代码工具,如gRPC工具自动生成函数接口及函数框架,其中,上述函数接口与上述函数框架之间相互对应,上述函数框架用于定义函数参数的类型,系统平台为安卓系统、ios系统中的一个或多个,例如,利用Flutter开发一个用于拍照的应用程序A,上述应用程序A安装于安卓系统,应用程序A需要调用上述安卓系统中的硬件设备摄像头,则,按照预设格式编写关于应用程序A与安卓系统之间的协议文件,使用代码工具gRPC生成应用程序A的函数接口,以及系统平台安卓系统关于应用程序A的函数框架,例如,应用程序A的函数接口表示为RPC_API_A,安卓系统关于摄像头调用的函数框架表示为ServiceImplBase_A,函数框架用于定义函数的类型,包括定义函数参数及函数返回值的类型。根据函数框架,定义目标调用函数,比如应用程序A与安卓系统关于摄像头调用的调用函数为ServiceImpl_A。
例如,目标应用为用于拍照的应用程序A,用户界面设置有拍照按钮,用于用户操作此按钮进行拍照,例如用户按下用户界面的拍照按钮后,上述应用程序A生成拍照指令,调用应用程序A的函数接口RPC_API_A。
在一种可能的实施方式中,上述预设格式为Proto Buffers。
使用Proto Buffers格式编写协议文件,使得协议描写更加准确,避免歧义,从而实现避免了因协议不兼容导致通讯异常的错误。
在一种可能的实施方式中,上述将上述函数信息转化为指定格式的数据块,包括:
利用gRPC将所上述函数信息序列化生成Proto Buffers格式的数据块。
利用gRPC将所上述函数信息序列化生成Proto Buffers格式的数据块,这样数据从应用程序端发送至系统平台端时,Flutter的平台机制可以识别上述函数信息。
图5是根据一示例性实施例示出的第三种数据处理方法的示意图,如图5所示,包括以下步骤:
在步骤S01中,根据预先定义的Proto Buffers格式的协议文件,通过代码工具自动生成应用程序端函数接口RPC_API_A。
在步骤S02中,根据预先定义的Proto Buffers格式的协议文件,通过代码工具自动生成函数框架ServiceImplBase_A,其中函数框架ServiceImplBase_A定义了函数的类型,包括定义函数参数及函数返回值的类型。
其中步骤S01和步骤S02不存在前后关系。
在步骤S03中,根据函数框架ServiceImplBase_A,定义目标调用函数,比如应用程序A与安卓系统关于摄像头调用的调用函数为ServiceImpl_A,ServiceImpl_A由开发人员根据函数框架ServiceImplBase_A人工编写。
在步骤S04中,在通过目标应用的用户界面调用系统平台的指定原生程序时,获取上述目标应用的用户界面针对上述指定函数接口的调用命令,按照上述调用命令,调用针对上述指定原生程序的指定函数接口RPC_API_A。
在步骤S05中,通过应用程序端编译函数RPC_Client将函数参数利用gRPC序列化成Proto Buffers格式的数据块,其中编译函数RPC_Client是一个基于Flutter平台通道机制Method Channel实现的符合gRPC的接口规范的编译函数,这样通过编译函数RPC_Client转化的数据块可以通过Flutter Method Channel识别的数据。
在步骤S06中,将上述数据块传发送至Method Channel。
在步骤S07中,通过应用程序端通道Method Channel将上述数据块传送至系统平台端的通道Method Channel,为了正常通讯,应用程序端和系统平台端的通道名即MethodChannel需保持一致。
在步骤S08中,系统平台端的通道Method Channel进行初步解码,得到函数信息,其中函数信息包括函数名和函数参数。
在步骤S09中,系统平台端的编译函数MethodCallHandler根据上述函数信息的函数名,确定上述函数名对应的目标调用函数ServiceImpl_A,并将上述函数信息的函数参数转化为上述目标调用函数可以识别的类型,例如,按照Proto Bufferss格式对函数参数进行解码。
在步骤S10中,利用上述目标调用函数ServiceImpl_A执行类型转换后的函数参数,从而调用上述系统平台的指定原生程序,且生成返回值,将返回值发送至系统平台端的编译函数MethodCallHandler。
在步骤S11中,系统平台端的编译函数MethodCallHandler将接收到的返回值按照Proto Buffers格式进行编码,并将编码后的返回值作为消息发送至系统平台端的MethodChannel。
在步骤S12中,系统平台端的MethodChannel通过系统平台端的消息管道BinaryMessenger将编码后的返回值发送给应用程序端的消息管道BinaryMessenger。
在步骤S13中,通过应用程序端的MethodChannel对编码后的返回值进行解码,得到目标返回值,并将目标返回值发送至应用程序端编译函数RPC_Client。
在步骤S14中,应用程序端编译函数RPC_Client按照Proto Buffers格式对目标返回值进行解码,得到类型转换后的返回值,将得到类型转换后的返回值返回给函数接口RPC_Client_A。
在步骤S15中,通过函数接口RPC_Client_A,将上述类型转换后的返回值发送给上述应用程序的用户界面,从而完成调用指令的响应。
按照预设格式的协议文件,生成相互对应的函数接口及函数框架,按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,避免了因协议不兼容导致通讯异常的错误,按照上述调用命令,调用针对上述指定原生程序的指定函数接口,得到用于调用上述指定原生程序的函数信息,将上述函数信息转化为指定格式的数据块,发送上述数据块,以使系统平台端获取上述数据块,和现有技术相比,此部分实现了代码自动生成,减轻开发人员编码工作量,而且通过上述系统平台解码上述数据块得到上述函数信息,根据上述函数信息的函数名,确定上述函数名对应的目标调用函数,并将上述函数信息的函数参数转化为上述目标调用函数可以识别的类型,利用上述目标调用函数框架执行类型转换后的函数参数,从而调用上述系统平台的指定原生程序,和现有技术相比,不用开发人员人工将函数参数转为为系统平台识别的数据类型,实现了代码自动生成,减轻开发人员编码工作量。
图6是根据一示例性实施例示出的第二种数据处理装置的框图,如图6所示,上述装置包括:
采集模块410,调用模块420,转化模块430,发送模块440,解码模块450,确定模块460,执行模块470。
采集模块410,被配置为在通过目标应用的用户界面调用系统平台的指定原生程序时,获取上述目标应用的用户界面针对上述指定函数接口的调用命令,其中,上述指定函数接口针对上述指定原生程序的函数接口;
调用模块420,被配置为按照上述调用命令,调用针对上述指定原生程序的指定函数接口,得到用于调用上述指定原生程序的函数信息,其中,上述函数信息包括函数名及函数参数;
转化模块430,被配置为将上述函数信息转化为指定格式的数据块;
发送模块440,被配置为发送上述数据块,以使系统平台端获取上述数据块;
解码模块450,被配置为通过上述系统平台解码上述数据块得到上述函数信息;
确定模块460,被配置为根据上述函数信息的函数名,确定上述函数名对应的目标调用函数,并将上述函数信息的函数参数转化为上述目标调用函数可以识别的类型;
执行模块470,被配置为利用上述目标调用函数框架执行类型转换后的函数参数,从而调用上述系统平台的指定原生程序。
在一种可能的实施方式中,上述装置还包括:
返回模块,被配置为通过上述目标调用函数生成上述系统平台原生程序的调用结果的返回值;
转换模块,被配置为将上述返回值转换为指定格式的返回数据块;
通信模块,被配置为发送上述返回数据块,以使应用程序端获取上述返回数据块;
目标转化模块,被配置为将上述返回数据块解码为上述目标调用函数可以识别的类型,得到类型转换后的返回值;
传递模块,被配置为通过上述指定函数接口,将上述类型转换后的返回值发送给上述应用程序的用户界面。
在一种可能的实施方式中,上述装置还包括:
协议模块,被配置为按照预设格式的协议文件,生成函数接口及函数框架,其中,上述函数接口与上述函数框架之间相互对应,上述函数框架用于定义函数参数的类型及返回值的类型;
第一编写模块,被配置为按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,上述原生函数列表包括上述应用程序需要调用的各原生函数的标识;
第一编写模块,被配置为基于指定函数框架定义的返回值的类型,编写响应于上述系统平台原生函数的调用结果的调用函数,其中,响应于上述系统平台原生函数的调用结果,上述调用函数生成指定类型的返回值。
在一种可能的实施方式中,上述预设格式为Proto Buffers。
在一种可能的实施方式中,上述将上述函数信息转化为指定格式的数据块,包括:
利用gRPC将所上述函数信息序列化生成Proto Buffers格式的数据块。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例还提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信,
上述存储器,用于存放计算机程序;
上述处理器,用于执行上述存储器存放的计算机程序时,实现如下步骤:
按照预设格式的协议文件,生成函数接口及函数框架,其中,上述函数接口与上述函数框架之间相互对应,上述函数框架用于定义函数参数的类型;
按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,上述原生函数列表包括上述应用程序需要调用的各原生函数的标识。
可选的,处理器,用于执行存储器上所存放的程序时,还可以实现应用于上述任一数据处理系统的上述任一的数据处理方法。
本申请实施例还提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信,
上述存储器,用于存放计算机程序;
上述处理器,用于执行上述存储器存放的计算机程序时,实现如下步骤:
在通过目标应用的用户界面调用系统平台的指定原生程序时,获取上述目标应用的用户界面针对上述指定函数接口的调用命令,其中,上述指定函数接口针对上述指定原生程序的函数接口;
按照上述调用命令,调用针对上述指定原生程序的指定函数接口,得到用于调用上述指定原生程序的函数信息,其中,上述函数信息包括函数名及函数参数;
将上述函数信息转化为指定格式的数据块;
发送上述数据块,以使系统平台端获取上述数据块;
通过上述系统平台解码上述数据块得到上述函数信息;
根据上述函数信息的函数名,确定上述函数名对应的目标调用函数,并将上述函数信息的函数参数转化为上述目标调用函数可以识别的类型;
利用上述目标调用函数框架执行类型转换后的函数参数,从而调用上述系统平台的指定原生程序。
可选的,处理器,用于执行存储器上所存放的程序时,还可以实现上述任一数据处理方法。
图7为本公开实施例的电子设备的一种示意图,参见图7,例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图7,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在电子设备800的操作。这些数据的示例包括被配置为在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。
多媒体组件808包括在上述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。上述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与上述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当电子设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,被配置为输出音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,被配置为为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到电子设备800的打开/关闭状态,组件的相对定位,例如上述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,被配置为在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,上述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,被配置为执行上述实施例中任一上述的一种数据处理方法。
在本公开实施例中,还提供了一种存储介质,该存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一上述的数据处理方法。在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器804,上述指令可由电子设备800的处理器820执行以完成上述方法。可选地,例如,存储介质可以是非临时性计算机可读存储介质,例如,上述存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图8是根据一示例性实施例示出的第二种电子设备的示意图。例如,电子设备900可以被提供为一服务器。参照图8,电子设备900包括处理组件922,其进一步包括一个或多个处理器,以及由存储器932所代表的存储器资源,用于存储可由处理组件922的执行的指令,例如应用程序。存储器932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件922被配置为执行指令,以执行上述实施例中任一上述的一种数据处理方法。
电子设备900还可以包括一个电源组件926被配置为执行电子设备900的电源管理,一个有线或无线网络接口950被配置为将电子设备900连接到网络,和一个输入输出(I/O)接口958。电子设备900可以操作基于存储在存储器932的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似操作系统。
在本公开实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中应用于上述任一数据处理系统的任一上述的数据处理方法。
在本公开实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一上述的数据处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (23)

1.一种数据处理系统,其特征在于,所述系统包括:
函数接口、函数框架、调用函数、通信模块、第一编译码模块及第二编译码模块,其中,所述函数接口与所述函数框架相互对应,所述函数框架用于定义函数参数的类型,不同的调用函数根据不同的函数框架定义的类型编码得到,所述函数接口及所述第一编译码模块位于应用程序侧,所述函数框架及所述第二编译码模块位于系统平台侧;
所述函数接口,被配置为响应所述应用程序的用户界面的调用,调用相应的函数信息,所述函数信息包括函数名及函数参数,所述函数名表示所述函数信息对应的函数框架;
所述第一编译码模块,被配置为将所述函数接口调用的函数信息转换为所述通信模块可以识别的指定格式的数据块;
所述通信模块,被配置为在所述应用程序及所述系统平台间传输数据;
所述第二编译码模块,被配置为按照所述数据块中的函数名,确定相应的函数框架定义的类型,得到目标类型;将所述数据块转换为目标类型的函数信息,并调用所述目标类型对应的调用函数;
所述调用函数,被配置为执行所述函数信息的函数参数时,调用所述系统平台的原生函数。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括:
代码工具模块,被配置为按照预设格式的协议文件,生成所述函数接口及所述函数框架。
3.根据权利要求1所述的系统,其特征在于,所述函数框架还被配置为定义返回值的类型,所述调用函数还被配置为:响应于所述系统平台原生函数的调用结果,生成所述调用函数对应类型的返回值;
第二编译码模块,还被配置为将所述返回值转换为所述通信模块可以识别的指定格式的返回数据块;
所述第一编译码模块,还被配置为将所述返回数据块解码为对应类型的返回值,并将所述对应类型的返回值发送给对应的函数接口;
所述函数接口,还被配置为将接收到的返回值发送给所述应用程序的用户界面。
4.一种数据处理方法,其特征在于,应用于上述权利要求1-3任一所述的数据处理系统,所述方法包括:
按照预设格式的协议文件,生成函数接口及函数框架,其中,所述函数接口与所述函数框架之间相互对应,所述函数框架用于定义函数参数的类型;
按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,所述原生函数列表包括所述应用程序需要调用的各原生函数的标识。
5.根据权利要求4所述的方法,其特征在于,所述函数框架还用于定义返回值的类型,所述方法还包括:
基于指定函数框架定义的返回值的类型,编写响应于所述系统平台原生函数的调用结果的调用函数,其中,响应于所述系统平台原生函数的调用结果,所述调用函数生成指定类型的返回值。
6.根据权利要求4所述的方法,其特征在于,所述预设格式为Proto Buffers。
7.一种数据处理装置,其特征在于,应用于上述权利要求1-3任一所述的数据处理系统,所述装置包括:
生成模块,被配置为按照预设格式的协议文件,生成函数接口及函数框架,其中,所述函数接口与所述函数框架之间相互对应,所述函数框架用于定义函数参数的类型;
第一编写模块,被配置为按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,所述原生函数列表包括所述应用程序需要调用的各原生函数的标识。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二编写模块,被配置为基于指定函数框架定义的返回值的类型,编写响应于所述系统平台原生函数的调用结果的调用函数,其中,响应于所述系统平台原生函数的调用结果,所述调用函数生成指定类型的返回值。
9.根据权利要求7所述的装置,其特征在于,所述预设格式为Proto Buffers。
10.一种数据处理方法,其特征在于,所述方法包括:
在通过目标应用的用户界面调用系统平台的指定原生程序时,获取所述目标应用的用户界面针对指定函数接口的调用命令,其中,所述指定函数接口为针对所述指定原生程序的函数接口;
按照所述调用命令,调用针对所述指定原生程序的指定函数接口,得到用于调用所述指定原生程序的函数信息,其中,所述函数信息包括函数名及函数参数;
将所述函数信息转化为指定格式的数据块;
发送所述数据块,以使系统平台端获取所述数据块;
通过所述系统平台解码所述数据块得到所述函数信息;
根据所述函数信息的函数名,确定所述函数名对应的目标调用函数,并将所述函数信息的函数参数转化为所述目标调用函数可以识别的类型;
利用所述目标调用函数框架执行类型转换后的函数参数,从而调用所述系统平台的指定原生程序。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
通过所述目标调用函数生成所述系统平台原生程序的调用结果的返回值;
将所述返回值转换为指定格式的返回数据块;
发送所述返回数据块,以使应用程序端获取所述返回数据块;
将所述返回数据块解码为所述目标调用函数可以识别的类型,得到类型转换后的返回值;
通过所述指定函数接口,将所述类型转换后的返回值发送给所述应用程序的用户界面。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
按照预设格式的协议文件,生成函数接口及函数框架,其中,所述函数接口与所述函数框架之间相互对应,所述函数框架用于定义函数参数的类型及返回值的类型;
按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,所述原生函数列表包括所述应用程序需要调用的各原生函数的标识;
基于指定函数框架定义的返回值的类型,编写响应于所述系统平台原生函数的调用结果的调用函数,其中,响应于所述系统平台原生函数的调用结果,所述调用函数生成指定类型的返回值。
13.根据权利要求12所述的方法,其特征在于,所述预设格式为Proto Buffers。
14.根据权利要求12所述的方法,其特征在于,所述将所述函数信息转化为指定格式的数据块,包括:
利用gRPC将所述函数信息序列化生成Proto Buffers格式的数据块。
15.一种数据处理装置,其特征在于,所述装置包括:
采集模块,被配置为在通过目标应用的用户界面调用系统平台的指定原生程序时,获取所述目标应用的用户界面针对指定函数接口的调用命令,其中,所述指定函数接口为针对所述指定原生程序的函数接口;
调用模块,被配置为按照所述调用命令,调用针对所述指定原生程序的指定函数接口,得到用于调用所述指定原生程序的函数信息,其中,所述函数信息包括函数名及函数参数;
转化模块,被配置为将所述函数信息转化为指定格式的数据块;
发送模块,被配置为发送所述数据块,以使系统平台端获取所述数据块;
解码模块,被配置为通过所述系统平台解码所述数据块得到所述函数信息;
确定模块,被配置为根据所述函数信息的函数名,确定所述函数名对应的目标调用函数,并将所述函数信息的函数参数转化为所述目标调用函数可以识别的类型;
执行模块,被配置为利用所述目标调用函数框架执行类型转换后的函数参数,从而调用所述系统平台的指定原生程序。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
返回模块,被配置为通过所述目标调用函数生成所述系统平台原生程序的调用结果的返回值;
转换模块,被配置为将所述返回值转换为指定格式的返回数据块;
通信模块,被配置为发送所述返回数据块,以使应用程序端获取所述返回数据块;
目标转化模块,被配置为将所述返回数据块解码为所述目标调用函数可以识别的类型,得到类型转换后的返回值;
传递模块,被配置为通过所述指定函数接口,将所述类型转换后的返回值发送给所述应用程序的用户界面。
17.根据权利要求15所述的装置,其特征在于,所述装置还包括:
协议模块,被配置为按照预设格式的协议文件,生成函数接口及函数框架,其中,所述函数接口与所述函数框架之间相互对应,所述函数框架用于定义函数参数的类型及返回值的类型;
第一编写模块,被配置为按照预设原生函数列表,基于指定函数框架定义的函数参数的类型,编写用于调用系统平台原生函数的调用函数,其中,所述原生函数列表包括所述应用程序需要调用的各原生函数的标识;
第一编写模块,被配置为基于指定函数框架定义的返回值的类型,编写响应于所述系统平台原生函数的调用结果的调用函数,其中,响应于所述系统平台原生函数的调用结果,所述调用函数生成指定类型的返回值。
18.根据权利要求17所述的装置,其特征在于,所述预设格式为Proto Buffers。
19.根据权利要求17所述的装置,其特征在于,所述将所述函数信息转化为指定格式的数据块,包括:
利用gRPC将所述函数信息序列化生成Proto Buffers格式的数据块。
20.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,
所述处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,被配置为存放计算机程序;
处理器,被配置为执行存储器上所存放的程序时,实现权利要求4-6中任一项所述的数据处理方法。
21.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,
所述处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,被配置为存放计算机程序;
处理器,被配置为执行存储器上所存放的程序时,实现权利要求10-14中任一项所述的数据处理方法。
22.一种存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求4-6中任一项所述的数据处理方法。
23.一种存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求10-14中任一项所述的数据处理方法。
CN201910944227.4A 2019-09-30 2019-09-30 数据处理系统、方法、装置、电子设备及存储介质 Active CN110659028B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910944227.4A CN110659028B (zh) 2019-09-30 2019-09-30 数据处理系统、方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910944227.4A CN110659028B (zh) 2019-09-30 2019-09-30 数据处理系统、方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN110659028A CN110659028A (zh) 2020-01-07
CN110659028B true CN110659028B (zh) 2023-02-28

Family

ID=69039970

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910944227.4A Active CN110659028B (zh) 2019-09-30 2019-09-30 数据处理系统、方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN110659028B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290806B (zh) * 2020-02-10 2024-04-19 广州虎牙科技有限公司 应用程序接口的调用方法、装置、计算机设备及存储介质
CN111309606B (zh) * 2020-02-10 2024-01-19 广州虎牙科技有限公司 页面异常处理方法、装置、计算机设备及存储介质
CN111427567B (zh) * 2020-03-20 2023-08-18 杭州涂鸦信息技术有限公司 一种智能产品快速生成方法及其系统和设备
CN111443979B (zh) * 2020-04-20 2023-09-05 广州虎牙科技有限公司 文档处理方法、装置、计算机设备及存储介质
CN112162755B (zh) * 2020-09-28 2023-03-31 抖音视界有限公司 一种数据处理方法、装置、介质和电子设备
CN112256421B (zh) * 2020-11-12 2024-06-18 Oppo广东移动通信有限公司 通信处理方法、装置、存储介质及电子设备
CN113110896A (zh) * 2021-03-31 2021-07-13 青岛海尔科技有限公司 一种数据调用方法、装置、存储介质和电子装置
CN113094086B (zh) * 2021-04-13 2024-01-19 贝壳找房(北京)科技有限公司 组件集成方法、装置、计算机可读存储介质及电子设备
CN113489600B (zh) * 2021-06-08 2024-05-10 北京达佳互联信息技术有限公司 一种网络参数的配置方法、装置以及存储介质
CN116635828A (zh) * 2021-11-23 2023-08-22 京东方科技集团股份有限公司 Flutter Web应用程序与宿主程序通信方法、计算机设备
CN114385388B (zh) * 2022-03-25 2022-09-13 广东美的暖通设备有限公司 算法的处理方法、装置、电子设备及存储介质
CN114924837A (zh) * 2022-05-18 2022-08-19 京东方科技集团股份有限公司 数据处理方法、电子设备和可读存储介质
CN114840597B (zh) * 2022-07-04 2023-03-14 杭州安恒信息技术股份有限公司 一种组件参数格式转换方法、装置、设备及存储介质
CN116166569A (zh) * 2023-04-26 2023-05-26 深圳市和讯华谷信息技术有限公司 一种Mock测试方法及其相关设备
CN117118962B (zh) * 2023-07-25 2024-03-22 领悦数字信息技术有限公司 用于跨多个云平台部署用户方法的方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103443768A (zh) * 2008-07-16 2013-12-11 苹果公司 用于调用转换和追踪的规范文件
CN105677311A (zh) * 2014-11-21 2016-06-15 卓望数码技术(深圳)有限公司 一种函数调用关系的识别方法及装置
CN106415492A (zh) * 2014-05-30 2017-02-15 苹果公司 用于图形处理器单元上的图形和非图形计算的语言、函数库和编译器
CN109117144A (zh) * 2018-07-10 2019-01-01 北京小米移动软件有限公司 页面处理方法、装置、终端及存储介质
CN109857404A (zh) * 2019-01-11 2019-06-07 平安科技(深圳)有限公司 Sdk接口的封装方法及装置、存储介质、电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080387B2 (en) * 2000-09-28 2006-07-18 Sun Microsystems, Inc. System and method for mediating communication between software applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103443768A (zh) * 2008-07-16 2013-12-11 苹果公司 用于调用转换和追踪的规范文件
CN106415492A (zh) * 2014-05-30 2017-02-15 苹果公司 用于图形处理器单元上的图形和非图形计算的语言、函数库和编译器
CN105677311A (zh) * 2014-11-21 2016-06-15 卓望数码技术(深圳)有限公司 一种函数调用关系的识别方法及装置
CN109117144A (zh) * 2018-07-10 2019-01-01 北京小米移动软件有限公司 页面处理方法、装置、终端及存储介质
CN109857404A (zh) * 2019-01-11 2019-06-07 平安科技(深圳)有限公司 Sdk接口的封装方法及装置、存储介质、电子设备

Also Published As

Publication number Publication date
CN110659028A (zh) 2020-01-07

Similar Documents

Publication Publication Date Title
CN110659028B (zh) 数据处理系统、方法、装置、电子设备及存储介质
CN110610699B (zh) 语音信号处理方法、装置、终端、服务器及存储介质
CN111221559B (zh) 应用更新方法、装置、存储介质、终端及服务器
CN106126025B (zh) 复制粘贴的交互方法及装置
EP3547136A1 (en) Method and apparatus for communication between webpage and operating system
CN109117144B (zh) 页面处理方法、装置、终端及存储介质
CN107463372B (zh) 一种数据驱动的页面更新方法和装置
CN108270661B (zh) 一种信息回复的方法、装置和设备
WO2023024435A1 (zh) 设备注册方法及装置、电子设备、存储介质和计算机程序产品
CN109684112B (zh) 程序文件运行方法、装置、终端及存储介质
CN105183571A (zh) 函数调用方法和装置
CN112672035A (zh) 一种缩略图生成方法和终端
CN109976872B (zh) 数据处理方法、装置、电子设备及存储介质
CN109491655B (zh) 一种输入事件处理方法及装置
CN112328330A (zh) iOS组件的调用方法、装置、中间件、电子设备及介质
CN111552688A (zh) 数据导出方法、装置及电子设备
EP3128722A1 (en) File transmission method and apparatus, computer program and recording medium
US11297626B2 (en) Information indication method and apparatus, base station and user equipment
CN107395724B (zh) 网络请求方法及装置
KR20130110901A (ko) 휴대단말기의 인터페이스 설정장치 및 방법
CN109445890A (zh) 一种界面展示方法、装置、终端设备及存储介质
CN105607958B (zh) 信息输入方法及装置
CN111131000B (zh) 一种信息传输方法、装置、服务器、终端
CN111596980B (zh) 一种信息处理方法及装置
CN109032583B (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