首页> 中国专利> 插件实现的方法和插件实现的系统

插件实现的方法和插件实现的系统

摘要

本申请提供了一种插件实现的系统和方法,系统包括插件模块和终端软件模块,在终端软件模块中不存在第一插件接口的业务实现的情况下,插件模块可以通过加载该第一插件接口的默认实现以完成针对该第一插件接口的调用。这样,不仅可以扩展插件以扩展终端的业务功能,而且,在插件接口与插件功能不一致的情况下,通过插件模块来实现插件接口的默认实现,使得开源软件模块能够正常运行,以尽可能保证电子设备的正常运行,使得开源软件模块不再依赖于终端软件模块,实现了终端软件模块与开源软件模块的解耦。

著录项

说明书

技术领域

本申请涉及电子设备领域,更具体地,涉及电子设备中的插件实现的方法和插件实现的系统。

背景技术

目前,电子设备主要应用两类操作系统,一类操作系统是开源操作系统,例如,安卓(android)操作系统,linux操作系统;另一类操作系统是闭源操作系统,例如,苹果公司的操作系统(iphone operation system,IOS)操作系统。对于开源操作系统,各个终端厂商都会基于开源操作系统做深度开发,增加插件,定制包括各种插件的终端软件,以扩展终端的业务功能。

为了便于描述,将开源操作系统记为开源软件。在定制终端软件的插件时,插件基于开源软件的代码编译开发,并且,为了能够在开源软件中调用终端软件的插件,同时,需要对开源软件的代码做相应改变,这就使得开源软件与终端软件之间相互依赖,无法实现开源软件与终端软件之间的解耦。

发明内容

本申请提供一种插件实现的系统和方法,该系统包括终端厂商为开源软件扩展的插件模块和终端软件模块,在终端软件模块中不存在第一插件接口的业务实现的情况下,插件模块可以通过加载该第一插件接口的默认实现以完成针对该第一插件接口的调用。这样,不仅可以扩展插件以扩展终端的业务功能,而且,在插件接口与插件功能不一致的情况下,通过插件模块来实现插件接口的默认实现,使得开源软件模块能够正常运行,以尽可能保证电子设备的正常运行,使得开源软件模块不再依赖于终端软件模块,实现了终端软件模块与开源软件模块的解耦。

第一方面,提供了一种插件实现的系统,所述系统包括插件模块和终端软件模块,所述插件模块包括第一插件接口的默认实现,所述终端软件模块不包括所述第一插件接口的业务实现,其中,所述插件模块用于:

获取第一指令,所述第一指令用于加载所述第一插件接口的业务实现;

根据所述第一指令,加载所述第一插件接口的默认实现。

因此,本申请提供的插件实现的系统,通过在系统中增加插件模块,在终端软件模块中不存在第一插件接口的业务实现的情况下,插件模块可以通过加载该第一插件接口的默认实现以完成针对该第一插件接口的调用。这样,不仅可以扩展插件以扩展终端的业务功能,而且,在插件接口与插件功能不一致的情况下,通过插件模块来实现插件接口的默认实现,使得开源软件模块能够正常运行,以尽可能保证电子设备的正常运行,使得开源软件模块不再依赖于终端软件模块,实现了终端软件模块与开源软件模块的解耦。

可选地,所述插件模块具体用于:

根据所述第一指令,向所述终端软件模块发送调用所述第一插件接口的第二指令;

根据所述系统反馈的针对所述第二指令的第一反馈指令,加载所述第一插件接口的默认实现,所述第一反馈指令用于指示所述终端软件模块中不包括所述第一插件接口的业务实现。

因此,本申请提供的插件实现的系统,在终端软件模块中不存在第一插件接口的业务实现的情况下,插件模块可以通过系统反馈的反馈指令确定终端软件模块中不存在第一插件接口的业务实现,灵活地选择加载该第一插件接口的默认实现,使得开源软件模块能够正常运行,以尽可能保证电子设备的正常运行,使得开源软件模块不再依赖于终端软件模块,实现了终端软件模块与开源软件模块的解耦。

可选地,所述终端软件模块包括插件业务工厂,所述插件模块包括插件默认工厂,所述插件默认工厂包括所述第一插件接口,所述插件业务工厂继承有所述第一插件接口,所述终端软件模块继承有所述第一插件接口的默认实现;以及,

所述插件模块具体用于:根据所述第一指令,向所述终端软件模块发送调用所述第一插件接口的第二指令;

所述终端软件模块用于:根据所述第二指令,加载所述第一插件接口的默认实现。

因此,本申请提供的插件实现的系统,采用工厂模式,通过在终端软件模块中增加插件业务工厂以及在插件模块中增加插件默认工厂,终端软件模块可以继承该插件模块中第一插件接口的默认实现,这样,系统在查询是否存在该第一插件接口的业务实现时,可以仅查询且需要查询一次是否存在插件业务工厂,对于插件模块多次调用插件接口的情况,可以减少由于查询引起的时延,大大提高了系统性能。

可选地,所述系统还包括开源软件模块;以及,所述插件模块具体用于:

接收所述终端软件模块发送的第三指令,所述第三指令用于加载第一业务实现;

根据所述开源软件模块的当前版本,向所述开源软件模块发送第四指令,所述第四指令用于加载当前版本的开源软件模块中的第一业务实现。

因此,本申请提供的插件实现的系统,系统中增加了适配模块,在终端软件模块需要加载开源软件模块的业务实现时,适配模块可以基于开源软件模块的当前版本,向开源软件模块发送指令,以指示加载当前版本的开源软件模块中的业务实现。可以看出,该适配模块作为开源软件模块和终端软件模块之间的桥梁,屏蔽了开源软件模块的变化,可以在开源软件模块发生变化时,终端软件模块不发生变化,使得终端软件模块不依赖开源软件模块。

可选地,所述系统还包括开源软件模块;以及,所述终端软件模块的版本号为第一版本,所述开源软件模块的版本号为第二版本,所述第一版本与所述第二版本不同。

可选地,所述系统还包括开源软件模块,所述开源软件模块用于:

更改所述终端软件模块,更改后的所述终端软件模块的版本号是第三版本,所述第三版本与所述第一版本不同。

可选地,所述终端软件模块包括第二插件接口的业务实现;以及,所述插件模块还用于:

获取第五指令,所述第五指令用于加载所述第二插件接口的业务实现;

根据所述第五指令,调用所述第二插件接口以加载所述第二插件接口的业务实现。

可选地,所述系统还包括开源软件模块;

所述开源软件模块用于:卸载所述终端软件模块;

所述插件模块用于:

获取第六指令,所述第六指令用于加载所述第一插件接口的业务实现;

根据所述第六指令,确定所述系统中未安装所述终端软件模块;

加载所述第一插件接口的默认实现。

因此,本申请提供的插件实现的系统,插件加载模块通过根据开源软件模块发送的用于加载插件接口的业务实现的指令,判断系统中是否安装有终端软件模块,可以有效地避免由于终端软件模块被卸载而导致的开源软件模块的不正常运行的情况,并且,在判断系统未安装有终端软件模块的情况下,插件加载模块加载插件接口的默认实现,使得开源软件模块可以正常运行,以实现电子设备的正常运行,使得开源软件模块不再依赖终端软件模块。

可选地,所述插件模块包括插件加载模块和插件默认实现模块,所述插件默认实现模块包括第一插件接口的默认实现;以及,

所述插件加载模块用于:

获取第一指令,所述第一指令用于加载所述第一插件接口的业务实现;

根据所述第一指令,加载所述插件默认模块中所述第一插件接口的默认实现。

可选地,所述第一插件接口是以下任一项:双卡管理接口、全网通接口、热插拔接口、天际通接口和5G通话接口。

第二方面,提供了一种插件实现的系统,所述系统包括开源软件模块、适配模块和终端软件模块,其中,

所述终端软件模块用于向所述适配模块发送第三指令,所述第三指令用于加载第一业务实现;

所述适配模块用于根据所述开源软件模块的当前版本,向所述开源软件模块发送第四指令,所述第四指令用于加载当前版本的开源软件模块中的第一业务实现。

第三方面,提供了一种插件实现的方法,应用于包括插件模块和终端软件模块的系统中,所述插件模块包括第一插件接口的默认实现,所述终端软件模块不包括所述第一插件接口的业务实现,所述方法包括:

所述插件模块获取第一指令,所述第一指令用于加载所述第一插件接口的业务实现;

所述插件模块根据所述第一指令,加载所述第一插件接口的默认实现。

可选地,所述插件模块根据所述第一指令,加载所述第一插件接口的默认实现,包括:

所述插件模块根据所述第一指令,向所述终端软件模块发送调用所述第一插件接口的第二指令;

所述插件模块根据所述系统反馈的针对所述第二指令的第一反馈指令,加载所述第一插件接口的默认实现,所述第一反馈指令用于指示所述终端软件模块中不包括所述第一插件接口的业务实现。

可选地,所述终端软件模块包括插件业务工厂,所述插件模块包括插件默认工厂,所述插件默认工厂包括所述第一插件接口,所述插件业务工厂继承有所述第一插件接口,所述终端软件模块继承有所述第一插件接口的默认实现;以及,

所述插件模块根据所述第一指令,加载所述第一插件接口的默认实现,包括:

所述插件模块根据所述第一指令,向所述终端软件模块发送调用所述第一插件接口的第二指令;

所述终端软件模块根据所述第二指令,加载所述第一插件接口的默认实现。

可选地,所述系统还包括开源软件模块;以及,所述方法还包括:

所述插件模块接收所述终端软件模块发送的第三指令,所述第三指令用于加载第一业务实现;

所述插件模块根据所述开源软件模块的当前版本,向所述开源软件模块发送第四指令,所述第四指令用于加载当前版本的开源软件模块中的第一业务实现。

可选地,所述终端软件模块的版本号为第一版本,所述开源软件模块的版本号为第二版本,所述第一版本与所述第二版本不同。

可选地,所述方法还包括:

更改所述终端软件模块,更改后的终端软件模块的版本号是第三版本,所述第三版本与所述第一版本不同。

可选地,所述终端软件模块包括第二插件接口的业务实现;以及,所述方法包括:

所述插件模块获取第五指令,所述第五指令用于加载所述第二插件接口的业务实现;

所述插件模块根据所述第五指令,调用所述第二插件接口以加载所述第二插件接口的业务实现。

可选地,所述方法还包括:

卸载所述终端软件模块;

所述插件模块获取第六指令,所述第六指令用于加载所述第一插件接口的业务实现;

所述插件模块根据所述第六指令,确定所述系统中未安装所述终端软件模块;

所述插件模块加载所述第一插件接口的默认实现。

可选地,所述第一插件接口是以下任一项:双卡管理接口、全网通接口、热插拔接口、天际通接口和5G通话接口。

第四方面,提供了一种插件实现的方法,应用于包括开源软件模块、适配模块和终端软件模块的系统中,所述方法包括:

所述终端软件模块向所述适配模块发送第三指令,所述第三指令用于加载第一业务实现;

所述适配模块根据所述开源软件模块的当前版本,向所述开源软件模块发送第四指令,所述第四指令用于加载当前版本的开源软件模块中的第一业务实现。

第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,所述计算程序代码包括上述第一方面和/或第二方面的系统。

第六方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括上述第一方面和/或第二方面的系统。

第七方面,提供了一种芯片,包括处理器,用于从存储器中调用并运行所述存储器中存储的上述第一方面和/或第二方面的系统。

第八方面,提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中存储的上述第一方面和/或第二方面的系统。

第九方面,提供了一种电子设备,包括:显示屏和处理器,所述处理器与存储器耦合,所述存储器用于存储上述第一方面和/或第二方面的系统。

附图说明

图1至图4是本申请提供的插件实现的系统的示意性框图。

图5至图7是本申请提供的插件实现的方法的示意图流程图。

图8是本申请提供的插件实现的系统的另一示意性框图。

图9是本申请提供的插件实现的方法的另一示意图流程图。

图10至图12是本申请提供的插件实现的系统的另一示意性框图。

图13和图14是本申请提供的电子设备的示意性结构图。

图15是本申请提供的电子设备的另一示例性结构图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

在现有技术中,开源软件与终端软件两者相互依赖,无法实现开源软件与终端软件之间的解耦,一个很明显的例子就是开源软件与终端软件的版本必须保持一致。示例性地,开源软件可以是安卓(android)软件,终端软件可以是华为基于安卓软件进行开发的情感化用户界面(emotion user interface,EMUI)软件,安卓软件和EMUI软件都是9.0版本。

以下,对现有技术的开源软件和终端软件的设计以及出现的问题说明。

在现有技术中,假设,终端厂商扩展3个插件,定义了3个插件接口,用于实现开源软件与终端软件之间的通信,终端软件中也必须安装与该3个插件接口对应的3个插件业务实现,实现该3种插件的插件功能,以保证插件接口与插件功能的一致性,才能保证开源软件的正常运行。例如,插件接口是5G通话接口,对应的插件功能则是5G通话功能。但是,终端厂商基于各种实际情况考虑,定义的插件接口与可实现的插件功能并不一致,这种情况会影响开源软件的正常运行,严重降低用户体验。

在第一种可能的场景中,为了减少耦合,实现开源软件和终端软件实现灵活组合,终端厂商想要为开源软件扩展具有差异化的多种终端软件,以适用不同的场景需求,例如,开源软件是版本3,被定义了5个插件接口,终端软件可以基于版本3的开源软件做深度开发,生成多种版本的终端软件,版本1的终端软件可以实现3个插件功能,版本2的终端软件可以实现4个插件功能,版本3的终端软件可以实现有5个插件功能。

在第二种可能的场景中,为了减少耦合,实现开源软件和终端软件实现灵活组合,,终端厂商想要一次性定义多个插件接口,以应对未来可能的用户需求,但是,基于当前的用户需求,并不需要当前的终端软件具有每个插件接口对应的插件功能,也就是说,终端软件具有的插件功能与插件接口并不一致,后续,可以基于用户的实际需求,在终端软件慢慢增加可实现的插件功能。

在第三种可能的场景中,由于某些原因,例如,终端软件的某个插件的运行出现故障,需要卸载该插件的插件业务实现,以去掉该插件的插件功能,终端软件的代码会发生变化,在开源软件的代码不做适应性改变的情况下,会导致终端无法开机,或者,导致开源软件功能的异常,无法实现终端的正常使用,在现有技术中,为了保证终端的正常运行,必须对开源软件的代码做相应改变,例如,终端软件的版本回退,开源软件的版本也必须回退,终端软件的版本升级,开源软件的版本也必须升级,以保证插件接口与终端软件具备的插件功能的一致性,才能保证开源软件的正常运行。

总之,开源软件依赖终端软件,在终端软件具备的插件功能与终端厂商定义的插件接口不一致性的情况下,会严重影响开源软件的正常运行,影响电子设备的正常运行。基于此,本申请提供了一种插件实现的系统和方法,该系统包括终端厂商为开源软件扩展的插件模块,该插件模块中定义了一个或多个插件接口,可以提供插件接口的功能的缺省能力,开源软件可以通过该插件模块实现终端软件的插件功能,并且,在插件接口与插件功能不一致的情况下,可以通过插件模块提供的缺省能力,尽可能保证开源软件的正常运行,使得开源软件不依赖终端软件。其中,该插件模块包括插件加载模块和插件默认实现模块,插件默认实现模块包括与该至少一个插件接口一一对应的插件默认实现,插件加载模块可以基于开源软件发送的用于加载某个插件接口的业务实现的指令,判断终端软件中是否存在该插件接口的业务实现,若存在,则加载该插件接口的业务实现,若不存在,则加载该插件接口的默认实现。这样,不仅可以扩展插件以扩展终端的业务功能,而且,在插件接口与插件功能不一致的情况下,可以通过插件模块来实现插件接口的默认实现或业务实现,实现了开源软件的正常运行,以实现电子设备的正常运行。

可以理解的是,开源软件发送与某个插件接口相关的命令,无论通过插件模块实现的是该插件接口的默认实现还是业务实现,对于开源软件来说,看到的都是完成了针对该命令的事情,或者说,看到的都是完成了该插件接口的功能(虽然通过默认实现完成的并不是该插件接口的插件功能),所以,才可以实现开源软件的正常运行,实现电子设备的正常运行。

相比于现有技术来说,在第一种可能的场景中,本申请可以为同一个开源软件扩展具有差异化的多种版本的终端软件,实现插件接口与插件功能不一致的场景需求。在第二种可能的场景中,本申请可以一次性定义多个插件接口,基于用户需求多次增加对应的插件功能,以应对未来可能的用户需求。在第三种可能的场景中,本申请可以仅需要改变终端软件而不需要改变开源软件,示例性地,仅升级终端软件而不升级安卓软件。

图1是本申请提供的插件实现的系统的示意图。系统100包括开源软件模块110、插件模块120和终端软件模块130。其中,开源软件模块110包括开源系统源代码,例如,开源系统可以是android操作系统、linux操作系统。插件模块120的目的在于提供终端厂商扩展的插件接口的缺省能力,在终端软件模块130中无法实现该插件接口的实际功能的情况下,通过实现该插件接口的缺省能力,以尽可能保证系统的正常运行。终端软件模块130是由终端厂商定义的,基于开源软件开发的具有终端个性化风格的终端软件,可以实现终端厂商扩展的插件接口的实际功能。以下,对插件模块120的终端软件模块120的内容做详细说明。

插件模块120中定义了M个插件的插件接口,用于实现安卓软件110与终端软件130之间的通信。插件模块120包括插件加载模块121和插件默认实现模块122。

插件默认实现模块122包括M个插件接口的默认实现,针对同一个插件接口,插件接口的默认实现与该插件接口的业务实现对应。插件接口的业务实现可以理解为该插件接口的真实实现,能够实现该插件接口的实际功能,插件接口的默认实现可以理解为该插件接口的虚假实现,在该插件接口的业务实现无法实现的情况下,退而求其次实现该插件接口的默认实现。或者,可以这么理解,插件接口的业务实现是该插件接口的默认实现的增强型功能。

可选地,该M个插件接口可以包括以下至少一项:双卡管理接口、全网通接口、热插拔接口、天际通接口和5G通话接口。

以下,结合插件接口,对插件接口的业务实现和默认实现分别做说明。

例如,若插件接口是5G通话接口,那么,5G通话接口的业务实现是5G通话功能,5G通话接口的默认实现可以是4G通话功能、3G通话功能或2G通话中的任一种。

再例如,若插件接口是双卡管理接口,那么,双卡管理接口的业务实现是双卡管理功能,双卡管理接口的默认实现可以是单卡管理功能。

再例如,若插件接口是热插拔接口,那么,热插拔接口的业务实现是热插拔功能,所谓的热插拔功能,就是外围设备与电子设备连接的情况下,可以在不需要重新开机的情况下,电子设备可以感知外围设备,以和外围设备传输信号,热插拔接口的默认实现就是在外围设备与电子设备连接的情况下,需要重新开机扫描外围设备才能感知外围设备。

再例如,若插件接口是全网通接口,那么,全网通接口的业务实现是全网通功能,所谓的全网通功能,就是电子设备可以支持各种运营商,用户从一个运营商切换至另一个运营商时,都可以和电子设备实现网络连接,全网通接口的默认实现可以是电子设备支持一个运营商,用户可以连接至该运营商提供的网络,但不可以连接至其他运营商提供的网络。

可选地,插件接口的默认实现可以是开源软件模块中固有的业务实现,也可以是空实现,也可以是终端厂商扩展的业务实现,本申请对此不做任何限定。以下,对这3种情况分别做说明。

例如,假设,开源软件模块110中固有4G通话功能,终端厂商想对该4G通话功能升级,扩展了5G通话功能,插件接口是5G通话接口,这种情况下,可以将开源软件模块110中固有的4G通话功能作为5G插件接口的默认实现。

再例如,假设,开源软件模块110中固有3G通话功能,终端厂商对该3G通话功能做了两次升级,分别实现4G通话功能和5G通话功能,此种情况下,可以将终端厂商扩展的4G通话功能作为5G通话接口的默认实现。

再例如,假设,终端厂商需要扩展一个插件接口的插件功能,开源软件模块110中并不存在该插件功能的低配版,例如,天际通功能,此种情况下,可以将空实现作为该插件接口的默认实现。

插件加载模块121可以基于开源软件模块110发送的用于调用某个插件接口的业务实现的指令,判断终端软件模块130中是否包括有该插件接口的业务实现,若终端软件模块130中包括该插件接口的业务实现,则加载该插件接口的业务实现,若终端软件模块130中未包括该插件接口的业务实现,则加载该插件接口的默认实现。

终端软件模块130包括插件业务实现模块131,插件业务实现模块131包括N个插件接口的业务实现。以插件模块120中定义的M个插件接口包括全网通接口、热插拔接口、双卡管理接口以及插件模块120包括该3种插件接口的默认实现为例,对N个插件接口与M个插件接口的关系做解释。

可选地,该N个插件接口可以是终端厂商在插件模块120中定义的M个插件接口该M个插件接口,也就是说,终端软件模块130具备该M个插件接口的插件功能。例如,终端软件模块130具备全网通功能、热插拔功能和双卡管理功能。这种情况可以理解为插件接口与插件功能一致。

以下,是插件接口与插件功能不一致的情况。

可选地,该N个插件接口可以包括该M个插件接口中的一部分插件接口,也就是说,虽然终端厂商在插件模块120中定义了M个插件接口,但是,终端软件模块130具备该M个插件接口中一部分插件接口的插件功能。例如,终端软件模块130具备全网通功能、热插拔功能和双卡管理功能中的任一种插件功能,或,终端软件模块130具备网通功能、热插拔功能和双卡管理功能中任意两种插件功能。

可选地,该N个插件接口可以包括该M个插件接口中的一部分插件接口和其他插件接口,该其他插件接口不属于该M个插件接口。不过,在此种情况下,终端软件模块130也仅能实现该M个插件接口中的一部分插件接口的插件功能,该其他插件接口的功能暂时无法实现。例如,终端软件模块130具备全网通功能和5G通话功能,其中,5G通话功能对应的5G通话接口并不是定义在插件模块120的插件接口。

可选地,该N个插件接口可以包括该M个插件接口和其他插件接口,不过,在此种情况下,终端软件模块130也仅能实现该M个插件接口的插件功能,该其他插件接口的功能暂时无法实现。例如,终端软件模块130不仅具备全网通功能、热插拔功能、双卡管理功能和5G通话功能,其中,5G通话功能对应的5G通话接口并不是定义在插件模块120的插件接口。

示例性地,继续参考图2,插件业务实现模块131通过箭头指向插件默认实现模块122,表示的是插件接口的业务实现与对应的默认实现采用继承方式实现,默认实现是父类,业务实现是子类,这种设计可以始终保证插件接口对外的统一性,即,通过插件模块无论实现的是插件接口的默认实现,还是插件接口的业务实现,对于开源软件模块来说,始终看到的是终端厂商定义的M个插件接口。

图2至图4所示为本申请提供的插件实现的系统的另一示意图。应理解,图2至图4所示的系统仅为示意性说明,不应对本申请构成限定。

参考图2,图2可以对应插件接口与插件功能一致的情况。示例性地,插件模块120中定义了4个插件接口,对应地,插件加载模块121可以调用该4个插件接口,插件默认实现模块121中包括该4个插件接口的默认实现;终端软件模块130可实现该4个插件接口的插件功能,插件业务实现模块131中包括该4个插件接口的业务实现。示例性地,可以认为插件模块120的版本与终端软件模块130的版本一致,例如,都是3.0版本。

参考图3,图3可以对应插件接口与插件功能不一致的情况。示例性地,插件模块120中定义了4个插件接口,对应地,插件加载模块121可以调用该4个插件接口,插件默认实现模块121中包括该4个插件接口的默认实现;终端软件模块130仅可实现该4个插件接口中3个插件接口的插件功能,插件业务实现模块131中包括3个插件接口的业务实现。后续,终端厂商可以基于实际需求,在终端软件模块130中安装剩余一个插件接口的业务实现。示例性地,实现中,可以认为插件模块120的版本号与终端软件模块130的版本号不同,例如,插件模块120是3.0版本,终端软件模块130是2.0版本。后续,可以基于实际需求,升级终端软件模块至3.0版本,增加插件模块120中剩余插件接口的业务实现,使得插件接口与插件功能保持一致。

应理解,现有技术是不可能存在图3所示的插件接口与插件功能不一致的情况,不然会导致开源软件模块无法运行,电子设备无法开机,或者,系统的功能严重异常,导致电子设备不可用。而在本申请中,插件接口和插件功能并不一致,体现的是两者的版本号的不一致,但是,并不影响开源软件模块以及电子设备的正常运行,由插件模块智能判断加载终端软件模块中的业务实现。

需要说明的是,在插件接口与插件功能不一致的情况中,也可以包括如下情况。例如,终端厂商在插件模块120中定义了3个插件接口,终端软件模块130的插件业务实现模块131中可以包括该3个插件接口的业务实现以及其他插件接口的业务实现,不过,电子设备当前也只能实现该3个插件接口的插件功能,无法实现其他插件接口的插件功能,后续,可以基于实际情况考虑,例如,在其他插件接口的插件功能比较稳定的情况下,可以在插件模块中增加其他插件接口,以实现其他插件接口的插件功能。示例性地,实现中,可以认为插件模块120的版本与终端软件模块130的版本不同,例如,插件模块是2.0版本,终端软件模块130是3.0版本,后续,插件模块120升级至3.0版本,保持与插件功能的一致性。

参考图4,在有些场景中,例如,终端软件模块130出现问题,运行不稳定,终端软件模块130会被卸载,此种情况中,系统100包括开源软件模块110和插件模块120,在没有终端软件模块130的情况下,可以加载插件模块120中的默认实现,实现开源软件模块110针对某个插件接口的功能的需求。

也应理解,现有技术也是不可能存在图4所示的仅具有插件接口而无终端软件模块的情况,不然会导致开源软件模块无法运行,电子设备无法开机,或者,系统的功能严重异常,导致电子设备不可用。而在本申请中,开源软件模块的运行不依赖终端软件模块,卸载终端软件模块后开源软件依然能正常运行。

以上,结合图1至图4对本申请提供的插件实现的系统做了详细描述。结合图5至图7,对本申请提供的插件实现的方法做详细说明。图5至图7对应的实施例涉及的各个模块可以对应图1中的各个模块。

下面,针对插件模块加载插件接口的默认实现和加载插件接口的业务实现的两种情况分别进行说明。

情况1(插件模块加载插件接口的默认实现)

该情况可以对应图5和图6所示的实施例。

为了便于描述,以终端厂商定义的M个插件接口中的第一插件接口为例,即,插件模块包括第一插件接口的默认实现,终端软件模块不包括该第一插件接口的业务实现为例,对本申请进行说明。

应理解,插件模块中还可以包括其他的M-1个插件接口的默认实现。还应理解,终端软件模块不包括该第一插件接口的业务实现,可以包括其他插件接口的业务实现,该其他插件接口可以是该M-1个插件接口,也可以是该M-1个插件接口中的一部分插件接口,也可以是该M-1个插件接口的一部分插件接口和插件模块中不存在的插件接口,也可以是该M个插件接口与插件模块中不存在的插件接口,本申请不做任何限定。例如,第一插件接口可以是5G插件接口,其他插件接口可以是全网通接口、热插拔接口以及双卡管理接口中的至少一个。

在S201中,开源软件模块基于用户操作,生成第一指令,该第一指令用于加载所述第一插件接口的业务实现。

示例性地,用户操作可以是各种形式的操作,本申请不做任何限定。例如,用户操作可以用户在电子设备的显示屏上的点击操作或滑动操作等,也可以是用户的语音输入等。基于用户操作,开源软件模块生成对应该用户操作的第一指令,该第一指令用于加载该第一插件接口的业务实现,可以这么理解,通过用户操作,用户想要系统实现该第一插件接口的插件功能,以满足需求。

以打电话为例,用户通过拨号码以及点击呼叫键输入用户操作,开源软件模块基于该用户操作,知道用户想要打电话,而且,由于插件模块中定义有5G通话接口,优先考虑使用5G通话,因此,可以生成与5G通话功能相关的第一指令,第一插件接口是5G插件接口。该第一指令可以是用于实现5G通话功能的5G通话指令,也可以是用于实现通话功能的通话指令,若该第一指令是通话指令,插件加载模块基于该通话指令,优先调用5G通话接口。

在S210中,开源软件模块发送该第一指令。对应地,插件加载模块接收该第一指令。

在S220中,该插件加载模块根据该第一指令,加载该第一插件接口的默认实现。

可以理解,在插件业务实现模块中不包括第一插件接口的业务实现的情况下,插件加载模块无法加载该第一插件接口的业务实现,因此,在本申请中,可以加载插件默认实现模块中该第一插件接口的默认实现。

因此,本申请提供的插件实现的方法,在终端软件模块中不存在第一插件接口的业务实现的情况下,插件模块通过加载该第一插件接口的默认实现以完成针对该第一插件接口的调用。这样,不仅可以扩展插件以扩展终端的业务功能,而且,在插件接口与插件功能不一致的情况下,可以通过插件模块来实现插件接口的默认实现或业务实现,使得开源软件模块能够正常运行,以尽可能保证电子设备的正常运行,使得开源软件模块不再依赖于终端软件模块,实现了终端软件模块与开源软件模块的解耦。

示例性地,插件加载模块可以根据该第一指令,确定插件业务实现模块中不包括该第一插件接口的业务实现,进而,加载该第一插件接口的业务实现。

下面,参考图6,通过步骤S221、S222和S223对步骤S220进行说明。

在S221中,该插件加载模块根据该第一指令,向该插件业务实现模块发送调用该第一插件接口的第二指令。

插件加载模块可以根据该第一指令,确定开源软件模块想要调用该第一插件接口以实现该第一插件接口的插件功能。因此,插件加载模块可以通过第二指令调用该第一插件接口,以便于加载该第一插件接口的业务实现,实现该第一插件接口的插件功能。

可选地,在插件加载模块向插件业务实现模块发送第二指令之前,插件加载模块可以向系统发送一个指令,以确定系统中是否安装有终端软件模块。这样,对于图4所示的终端软件模块被卸载的情况,通过该步骤可以有效地避免由于终端软件模块被卸载而导致的开源软件模块的不正常运行的情况。

示例性地,系统可以根据插件加载模块发送的该指令,判断系统中是否安装有终端软件模块,若系统中未安装有终端软件模块,则系统向插件加载模块发送一个反馈指令以指示系统中未安装终端软件模块,若系统中安装有终端软件模块,则插件加载模块在未收到系统发送的反馈指令的情况下,向插件业务实现模块发送调用第一插件接口的第二指令。

在S222中,该插件加载模块接收系统发送的针对该第二指令的第一反馈指令,该第一反馈指令用于指示该终端软件模块(插件业务实现模块)中不包括该第一插件接口的业务实现。

也就是说,系统可以判断插件业务实现模块中是否包括第一插件接口的业务实现,在不包括该第一插件接口的业务实现的情况下,向插件加载模块发送第一反馈指令,以使插件加载模块可以确定该插件业务实现模块中不包括该第一插件接口的业务实现。这样,插件加载模块可以加载该第一插件接口的默认实现。

在S223中,该插件加载模块根据该第一反馈指令,向插件默认实现模块发送第九指令,以加载该第一插件接口的默认实现。

以下,以第一插件接口是5G通话接口为例,结合情况1,对本申请实施例进一步做说明。

假设,插件模块中定义了5G通话接口,插件默认实现模块中包括5G通话接口的默认实现,该默认实现是4G通话功能,终端软件模块中的插件业务实现模块中不包括5G插件接口的业务实现,即,不具备5G通话功能。

1、用户通过拨号码以及点击呼叫键输入用户操作,开源软件模块基于该用户操作,生成第一指令,以及,发送该第一指令,可选地,该第一指令是通话指令。

2、插件加载模块根据该通话指令,知道用户想要打电话,而且,由于插件模块中定义有5G通话接口,优先考虑使用5G通话,向插件业务模块发送第二命令以调用5G通话接口,可以将该第二命令记为5G通话命令。

3、系统可以判断插件业务实现模块中不包括5G插件接口的业务实现,向插件加载模块发送第一反馈命令。

4、插件加载模块根据该第一反馈指令,加载5G通话接口的默认实现,即,实现4G通话功能。

可选地,当插件加载模块实现4G通话功能时,可以通过可能的方式提示用户,以告知用户目前实现的是4G通话功能,便于用户自主选择是否需要使用当前的4G通话功能。示例性地,该可能的方式可以是弹出界面窗口,或者,输出语音提示等。

情况2(插件模块加载插件接口的业务实现)

该情况可以对应图7所示的实施例。

为了便于描述,以终端厂商定义的M个插件接口中的第一插件接口为例,即,插件模块包括第一插件接口的默认实现,终端软件模块包括该第一插件接口的业务实现为例,对本申请进行说明。应理解,插件模块也可以包括其他插件接口的默认实现,终端软件模块也可以包括其他插件接口的业务实现,本申请不做任何限定。

在S201中,开源软件模块基于用户操作,生成第一指令,该第一指令用于加载该第一插件接口的业务实现。

关于该步骤的描述可以参考情况1的步骤S201的相关描述,此处不再赘述。

在S210中,开源软件模块发送该第一指令。对应地,插件加载模块接收该第一指令。

在S230中,该插件加载模块根据该第一指令,加载该第一插件接口的业务实现。

可以理解,在插件业务实现模块中包括第一插件接口的业务实现的情况下,可以实现该第一插件接口的插件功能,即,插件加载模块可以加载该第一插件接口的业务实现。

可选地,在插件业务实现模块中包括该第一插件接口的业务实现的情况下,该插件加载模块根据该第一指令,加载该第一插件接口的业务实现,包括:

插件加载模块可以根据该第一指令,向该插件业务实现模块发送调用该第一插件接口的第二指令。

该插件业务实现模块可以基于该第二指令,加载该第一插件接口的业务实现。

可以这么理解,插件加载模块可以通过插件业务实现模块加载该第一插件接口的业务实现。

关于插件加载模块发送第二指令的描述可以参考情况1中步骤S221的相关描述,此处不再赘述。

可选地,插件业务实现模块向插件加载模块发送第二反馈指令,该第二反馈指令用于指示该插件加载模块成功调用该第一插件接口的业务实现。或者,该第二反馈指令也可以理解为用于指示该插件业务实现模块中包括该第一插件接口的业务实现。

以下,继续以第一插件接口是5G通话接口为例,结合情况2,对本申请实施例进一步做说明。

假设,插件模块中定义了5G通话接口,插件默认实现模块中包括5G通话接口的默认实现,该默认实现是4G通话功能,终端软件模块中的插件业务实现模块中包括5G插件接口的业务实现,即,具备5G通话功能。

1、用户通过拨号码以及点击呼叫键输入用户操作,开源软件模块基于该用户操作,生成第一指令,以及,发送该第一指令,可选地,该第一指令是通话指令。

2、插件加载模块根据该通话指令,知道用户想要打电话,而且,由于插件模块中定义有5G通话接口,优先考虑使用5G通话,向插件业务模块发送第二命令以调用5G通话接口,可以将该第二命令记为5G通话命令。

3、插件加载模块根据该5G通话命令,加载5G通话接口的业务实现,即,实现5G通话功能。

在本申请中,可以通过反射机制查询插件接口的业务实现是否存在,这个查询过程是比较耗时,性能开销较大在插件加载模块通过多个指令调用多个插件接口时,一个指令调用一个插件接口,通过反射机制确定查询插件接口的业务实现是否存在时,系统需要进行多次查询以确定是否存在插件接口的业务实现。假设,插件加载模块调用一个插件接口的指令,系统查询是否存在该插件接口的业务实现的过程需要0.1ms,若有10个调用插件接口的指令的话,仅查询过程就占用1ms,时延较长,影响系统性能。

基于此,本申请提出采用工厂模式,即,增加插件业务工厂,通过插件业务工厂可以减少系统的查询次数,以提高系统性能。例如,继续以上述10个指令为例,现有技术中需要查询10次,占用1ms,而在本申请中,通过采用插件业务工厂,可以仅查询一次,基于第一个指令查询是否存在插件业务工厂,由于已经确定是否存在插件业务工厂,对于后续的指令,可以不需要再次进行查询,大大减少了时延,提高了系统性能。以下,结合图8,对本申请提供的插件实现的系统做一描述,进一步,以图8所示的系统为例,结合图9,对本申请提供的插件实现的方法做描述。

图8所示为本申请提供的插件实现的系统的另一示意图。相比于图1至图4所示的系统,在图8的系统中,在插件模块120中增加了插件默认工厂123,在终端软件模块130中增加了插件业务工厂132。示例性地,插件业务工厂132和插件默认工厂123也采用了继承方式来实现,插件默认工厂123是父类,插件业务工厂132是子类,这种设计可以始终保证插件接口对外的统一性。

插件模块120定义了M个插件接口,插件默认工厂123中包括该M个插件接口,插件默认实现模块中包括该M个插件接口的默认实现。

终端软件模块130的插件业务实现模块131中可以包括N个插件接口的业务实现,其中,关于该N个插件接口与该M个插件接口的关系可以参考上文描述,此处不再赘述。当插件业务实现模块131中包括该M个插件接口的业务实现时,该插件业务工厂也包括该M个插件接口,可以实现每个插件接口的插件功能。当插件业务实现模块131中包括该M个插件接口的M1个插件接口的业务实现时,M1小于或等于N,插件业务实现模块131继承有该M个插件接口中M-M1个插件接口的默认实现,同时,插件业务工厂132继承有该M-M1个插件接口。也就是说,从最终结果来看,插件业务工厂132包括M个插件接口,插件业务实现模块131包括M1个插件接口的业务实现和M-M1个插件接口的默认实现。在插件加载模块看来,插件业务工厂132提供了M个插件接口,可以实现M个功能,至于该M个功能哪些是由默认实现完成还是业务实现完成,并不关心。所以,只要系统中安装有终端软件模块130,无论插件业务实现模块131中是否存在插件接口的业务实现,插件加载模块121都可以通过插件业务工厂132成功调用插件接口的业务实现或默认实现,只不过,在没有插件接口的业务实现的情况下,实现的是插件接口的默认实现,在有插件接口的业务实现且该插件接口属于该M个插件接口的情况下,实现的是该插件接口的业务实现。

示例性地,系统中可以包括多个插件业务工厂,每个插件业务工厂对应一种业务类型,将插件接口按照业务类型分类至不同的插件业务工厂中,对应地,插件默认工厂的类型与插件业务工厂的类型一一对应。假设,系统包括3个插件业务工厂和3个插件默认工厂,分别对应多媒体业务、短距离通信业务以及通讯业务,M个插件接口可以分为3类,对应多媒体业务的插件接口归属对应多媒体业务的插件默认工厂,对应短距离通信业务的插件接口归属对应短距离通信业务的插件默认工厂,对应通讯业务的插件接口归属对应通讯业务的插件默认工厂,对应多媒体业务的插件业务工厂继承对应多媒体业务的插件默认工厂的插件接口,对应短距离通信业务的插件业务工厂继承对应短距离通信业务的插件默认工厂的插件接口,对应通讯业务的插件业务工厂继承对应通讯业务的插件默认工厂的插件接口。

这样,通过采用工厂模式,可以实现插件接口的分类,同类使得代码逻辑更清晰。例如,所有的多媒体类型的插件接口,都放在多媒体类型的插件业务工厂。

应理解,上述图2至图4的场景也可以完全对应图8的系统,仅需要在图2至图4的插件模块中增加插件默认实现以及终端软件模块中增加插件业务工厂就行,为了简洁,此处不再赘述。

图9所示的是本申请提供的插件实现的方法的示意图。图9对应的实施例涉及的各个模块可以对应图8中的各个模块。

同理,为了便于描述,以终端厂商定义的M个插件接口中的第一插件接口为例,即,插件模块包括第一插件接口的默认实现,终端软件模块不包括该第一插件接口的业务实现为例,对本申请进行说明。应理解,插件模块也可以包括其他插件接口的默认实现,终端软件模块也可以包括其他插件接口的业务实现,本申请不做任何限定。

在该例子中,终端软件模块包括插件业务工厂,插件模块包括插件默认工厂,该插件默认工厂包括该第一插件接口,该插件业务工厂继承有该第一插件接口,该终端软件模块继承有该第一插件接口的默认实现。

在S201中,开源软件模块基于用户操作,生成第一指令,该第一指令用于加载所述第一插件接口的业务实现。

在S210中,开源软件模块发送该第一指令。对应地,插件加载模块接收该第一指令。

上述两个步骤的具体描述可以参考图5至图7对应的实施例中S201和S210的相关描述,此处不再赘述。

在S224中,插件加载模块根据该第一指令,向插件业务工厂发送调用该第一插件接口的第二指令。

插件加载模块可以根据该第一指令,确定开源软件模块想要调用该第一插件接口以实现该第一插件接口的插件功能。因此,插件加载模块可以通过第二指令调用该第一插件接口,以便于加载该第一插件接口的业务实现,实现该第一插件接口的插件功能。

可选地,在插件加载模块向插件业务实现模块发送第二指令之前,插件加载模块可以向系统发送一个指令,以确定系统中是否安装有终端软件模块。这样,对于终端软件模块被卸载的情况,通过该步骤可以有效地避免由于终端软件模块被卸载而导致的开源软件模块的不正常运行的情况。其中,关于该步骤的具体描述可以参考上文关于步骤S221的描述,不再赘述。

需要说明的是,若确定系统中安装有终端软件模块,对于有插件业务工厂以及插件默认工厂的系统,由于插件业务工厂继承了插件默认工厂的插件接口以及插件业务实现模块继承了插件默认实现模块的默认实现,可以不需要再判断终端软件模块中是否包括第一插件接口的业务实现,也不需要在没有第一插件接口的业务实现的情况下由系统发送反馈指令,只需要通过插件业务工厂自行判断需要加载第一插件接口的默认实现还是业务实现,无论加载哪种实现,都可以理解为实现了第一插件接口的功能。

在S225中,该插件业务工厂根据该第二指令,加载该第一插件接口的默认实现。

由于插件业务实现模块中不包括该第一插件接口的业务实现,但是继承了插件默认实现模块中该第一插件接口的默认实现,该插件业务实现模块中存在该第一插件接口的默认实现,所以,该插件业务工厂根据该第二指令,加载该第一插件接口的默认实现就行。

因此,本申请提供的插件实现的方法,采用工厂模式,通过在终端软件模块中增加插件业务工厂以及在插件模块中增加插件默认工厂,终端软件模块可以继承该插件模块中第一插件接口的默认实现,这样,系统在查询是否存在该第一插件接口的业务实现时,可以仅查询且需要查询一次是否存在插件业务工厂,对于插件模块多次调用插件接口的情况,可以减少由于查询引起的时延,大大提高了系统性能。

可以看出,无论插件业务实现模块中是否包括某个插件接口的业务实现,插件加载模块通过插件业务工厂加载的是插件接口的业务实现还是默认实现,都认为插件加载模块成功调用了插件接口的功能。

以下,通过开源软件模块、插件模块以及终端软件模块的版本号,说明本申请提供的方案可以实现开源软件模块与终端软件模块的解耦,使得开源软件模块不依赖终端软件模块。

在本申请中,针对插件接口与插件功能不一致的情况,以版本号为例对本申请进行说明。

可选地,该终端软件模块的版本号为第一版本,该开源软件模块的版本号为第二版本,该第一版本与该第二版本不同。

例如,第一版本为2.0版本,第二版本为3.0版本。

可选地,该方法还包括:

更改该终端软件模块,更改后的该终端软件模块的版本号为第三版本,该第三版本与该第一版本不同。

示例性地,更改后的终端软件模块可以是以下任一种情况:增加了插件接口的业务实现的数量;减少了插件接口的业务实现的数量;对于原有的插件接口的业务实现做升级优化了原有的插件接口的业务实现,例如,原有的插件接口的业务实现的功能是支持标清视频播放,更改后的插件接口的业务实现的功能是支持高清视频播放。

示例性地,更改终端软件模块可以是升级或回退该终端软件模块,可以是用户卸载一个终端软件模块后再重新安装另一个终端软件模块,本申请不做任何限定,只要是对终端软件模块做修改即可。

示例性地,未更改前的终端软件模块具备的插件功能与插件接口并不一致,终端软件模块与开源软件模块的版本号不一致,基于本申请,终端软件模块的变化不影响开源软件模块,可以仅更改终端软件模块,不改变开源软件模块,更改后的该终端软件模块的版本号为第三版本。

在终端软件模块具备的插件功能与定义的插件接口一致时,终端软件模块的版本号与插件模块的版本号相同。例如,更改后的该终端软件模块的版本号与插件模块的版本号都是3.0版本。

示例性地,插件模块的版本号与开源软件模块的版本号相同。

基于此,在终端软件模块具备的插件功能与定义的插件接口一致,终端软件模块的版本号与插件模块的版本号相同时,开源软件模块、插件模块以及终端软件模块的版本号都相同。

如前所述,例如图4,在有些场景中,终端软件模块会被卸载,此种情况中,系统包括开源软件模块110和插件模块120,在没有终端软件模块130的情况下,可以加载插件模块120中的默认实现,实现开源软件针对某个插件接口的功能的需求。以下,示例性地说明在卸载终端软件模块的场景中,加载插件模块120中的默认实现的方式。

可选地,该方法还包括:

卸载该终端软件模块;

该开源软件模块向该插件加载模块发送第六指令,该第六指令用于加载该第一插件接口的业务实现;

该插件加载模块根据该第六指令,确定该系统中未安装该终端软件模块;

该插件加载模块加载该第一插件接口的默认实现。

也就是说,插件加载模块可以根据开源软件模块发送的用于加载第一插件接口的业务实现的第六指令,确定系统中是否安装有该终端软件模块,在未安装的情况下,加载该第一插件接口的默认实现,当然,在安装的情况下,插件加载模块会发送调用该第一插件接口的指令。

示例性地,插件加载模块可以向系统发送一个指令,系统可以根据插件加载模块发送的该指令,判断系统中是否安装有终端软件模块,若系统中未安装有终端软件模块,则系统向插件加载模块发送一个反馈指令以指示系统中未安装终端软件模块,若系统中安装有终端软件模块,则插件加载模块在未收到系统发送的反馈指令的情况下,向插件业务实现模块发送调用第一插件接口的指令。

因此,本申请提供的插件实现的方法,插件加载模块通过根据开源软件模块发送的用于加载插件接口的业务实现的指令,判断系统中是否安装有终端软件模块,可以有效地避免由于终端软件模块被卸载而导致的开源软件模块的不正常运行的情况,并且,在判断系统未安装有终端软件模块的情况下,插件加载模块加载插件接口的默认实现,使得开源软件模块可以正常运行,以实现电子设备的正常运行,使得开源软件模块不再依赖终端软件模块。

在上述实施例中,通过提供的插件模块的插件加载模块和插件默认实现模块,插件加载模块可以判断终端软件模块中是否某个插件接口的业务实现,若存在,则加载该插件接口的业务实现,若不存在,则加载该插件接口的默认实现。这样,不仅可以扩展插件以扩展终端的业务功能,而且,在插件接口与插件功能不一致的情况下,可以通过插件模块实现插件接口的默认实现或业务实现,实现了开源软件的正常运行,以实现电子设备的正常运行,使得开源软件模块不再依赖终端软件模块。

反过来说,由于终端软件模块是基于开源软件模块做深度开发定制的,所以,开源软件模块的代码发生变化,终端软件模块的代码也必须发生变化。例如,开源软件模块的版本升级,终端软件模块的版本也必须升级,开源软件模块的版本回退,终端软件模块的版本也必须回退。也就是说,终端软件模块依赖开源软件模块。

基于此,本申请提出可以采用适配模块,作为开源软件模块和终端软件模块之间的桥梁,以屏蔽开源软件模块的变化,在开源软件模块发生变化时,终端软件模块不发生变化,使得终端软件模块不依赖开源软件模块。

由于涉及的是开源软件模块与终端软件模块之间的交互,作为中间桥梁的适配模块,软件设计时,需要将开源软件模块中与终端软件的插件功能相关的功能做适配,为了便于描述,将开源软件模块中与终端软件的插件功能相关的功能记为相关功能,使相关功能不发生变化,对于终端软件模块来说,仅知道开源软件模块提供了这些相关功能,至于实现这些相关功能的代码是否发生变化,终端软件模块并不感知,这样,通过适配模块屏蔽了开源软件模块对终端软件模块的变化。并且,若开源软件模块中的相关功能发生变化,可以在适配模块内兼容多版本的相关功能。以图片刷新功能为例,版本1对应函数1,版本2对应函数2,适配模块可以基于开源软件模块的当前版本,加载开源软件模块的业务实现(或者,功能模块)。

示例性地,在开源软件模块是安卓软件模块时,适配模块也可以称为安卓开放源代码项目(android open-source project,AOSP)适配模块。

应理解,适配模块用于终端软件模块加载开源软件模块中的业务实现,上述实施例的插件加载模块和插件默认实现模块用于开源软件模块加载终端软件模块的业务实现,两者结合,就可以实现开源软件模块与终端软件模块互相加载业务实现的事情。可以这么理解,当用户想要系统实现一些功能,但是,开源软件模块无法完成,这种情况下,需要终端软件模块的配合,就可以通过插件加载模块和插件默认实现模块加载终端软件模块的业务实现;当有些功能是开源软件模块本身固有的,不需要终端软件模块自己开发,这种情况下,可以通过适配模块加载开源软件模块的业务实现。

图10和图11所示为本申请提供的插件实现的系统的另一示意图。图10对应图1,在图1所示的系统中增加了适配模块,图11对应图8,在图8所示的系统中增加了适配模块124。在图10和图11中,当终端软件模块130需要加载开源软件模块110的业务实现时,通过适配模块124加载开源软件模块110的业务实现,当插件接口的默认实现是开源软件模块110内固有的业务实现时,可以通过适配模块124加载开源软件模块110的业务实现。

图12所示为本申请提供的插件实现的系统的再一示意图。在图12所示的系统200中,可以不需要插件加载模块和插件默认实现模块,包括开源软件模块210、适配模块220和终端软件模块230,其中,终端软件模块230中包括具有多个插件接口的业务实现的插件业务实现模块,当终端软件模块230需要加载开源软件模块210的业务实现时,通过适配模块220加载开源软件模块210的业务实现。可以这么理解,相比于现有技术,图12所示的系统200增加了适配模块220,在开源软件模块210发生变化时,终端软件模块230不发生变化,使得终端软件模块230不依赖开源软件模块210。

以下,对终端软件模块通过适配模块加载开源软件模块的业务实现的过程做说明。应理解,下述实施例的终端软件模块、适配模块以及开源软件模块可以是图10至12对应的各个模块。

可选地,该方法还包括:

该终端软件模块向该适配模块发送第三指令,该第三指令用于指示加载第一业务实现;

该适配模块根据该开源软件模块的当前版本,向该开源软件模块发送第四指令,该第四指令用于加载当前版本的开源软件模块中的第一业务实现。

在该过程中,可以具体由终端软件模块的插件业务实现模块发送该第四指令,以加载开源软件模块中的第一业务实现,适配模块接收到该第三指令后,可以判断当前版本的开源软件模块的版本号,在确定当前版本的开源软件模块的版本号后,通过第四指令指示加载当前版本的开源软件模块中的第一业务实现。

下面,继续以5G通话为例,结合插件加载模块和适配模块,说明开源软件模块与终端软件模块之间相互加载对方的业务实现的过程。

1、用户通过拨号码以及点击呼叫键输入用户操作,开源软件模块基于该用户操作,生成第一指令,以及,发送该第一指令,可选地,该第一指令是通话指令。

2、插件加载模块根据该通话指令,优先考虑使用5G通话,向插件业务实现模块发送第二命令以调用5G通话接口,可以将该第二命令记为5G通话命令。

3、插件加载模块根据该5G通话命令,加载5G通话接口的业务实现,即,实现5G通话功能。

4、在实现5G通话过程中,或者,在加载5G通话接口的业务实现的过程中,需要使用声音播放功能,由于该功能是开源软件模块固有的业务实现,因此,可以加载开源软件模块中的声音播放功能。基于此,插件业务实现模块可以向适配模块发送第三指令,以指示加载开源软件模块中的声音播放功能,适配模确定该开源软件模块的当前版本为版本3,则根据开源软件模块的3.0版本,向该开源软件模块发送第四指令,以指示加载3.0版本的开源软件模块的声音播放功能。

应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

相应于上述方法实施例给出的方法,本申请实施例还提供了相应的电子设备,所述电子设备包括用于执行上述实施例相应的模块。所述模块可以是软件,也可以是硬件,或者是软件和硬件结合。

图13给出了一种电子设备的示意图结构图。所述电子设备1000可以是包括有本申请提供的系统的任一种可能的电子设备。在一些实施例中,电子设备可以是还包含其它功能诸如个人数字助理和/或音乐播放器功能的便携式电子设备,诸如手机、平板电脑、具备无线通讯功能的可穿戴电子设备(如智能手表)等。上述便携式电子设备也可以是其它便携式电子设备,诸如膝上型计算机(Laptop)等。还应当理解的是,在其他一些实施例中,上述电子设备也可以不是便携式电子设备,而是台式计算机。

所述电子设备1000可以包括一个或多个处理器1001,所述处理器1001也可以称为处理单元,可以实现一定的控制功能。所述处理器1001可以是通用处理器或者专用处理器等。例如可以是基带处理器或中央处理器。基带处理器可以用于对通信协议以及通信数据进行处理,中央处理器可以用于对电子设备进行控制,执行软件程序,处理软件程序的数据。

在一种可选的设计中,处理器1001也可以存有指令和/或数据1003,所述指令和/或数据1003可以被所述处理器运行,使得所述电子设备1000执行上述方法实施例中描述的方法。

在另一种可选的设计中,处理器1001中可以包括用于实现接收和发送功能的收发单元。例如该收发单元可以是收发电路,或者是接口,或者是接口电路。用于实现接收和发送功能的收发电路、接口或接口电路可以是分开的,也可以集成在一起。上述收发电路、接口或接口电路可以用于代码/数据的读写,或者,上述收发电路、接口或接口电路可以用于信号的传输或传递。

在又一种可能的设计中,电子设备1000可以包括电路,所述电路可以实现前述方法实施例中发送或接收或者通信的功能。

可选的,所述电子设备1000中可以包括一个或多个存储器1002,其上可以存有指令1004,所述指令可在所述处理器上被运行,使得所述电子设备1000执行上述方法实施例中描述的方法。可选的,所述存储器中还可以存储有数据。可选的,处理器中也可以存储指令和/或数据。所述处理器和存储器可以单独设置,也可以集成在一起。例如,上述方法实施例中所描述的对应关系可以存储在存储器中,或者存储在处理器中。

可选的,所述电子设备1000还可以包括收发器1005和/或天线1006。所述处理器1001可以称为处理单元,对所述电子设备1000进行控制。所述收发器1005可以称为收发单元、收发机、收发电路或者收发器等,用于实现收发功能。

本申请实施例中的电子设备1000可以用于执行本申请实施例中图5、图6、图7以及图9描述的方法也可以用于执行上述两个图或更多个图中描述的方法相互结合的方法。

在一种可能的设计中,一种电子设备1000可包括:处理器1001。电子设备1000用于执行上述方法200中各个模块对应的各个流程和步骤。具体描述可以参考上述实施例的描述,为了简洁,此处不再赘述。

图14提供了一种电子设备的示意图结构图。为了便于说明,图14仅示出了电子设备的主要部件。如图14所示,电子设备1100包括处理器、存储器、控制电路、天线以及输入输出装置。处理器主要用于对通信协议以及通信数据进行处理,以及对整个终端进行控制,执行软件程序,处理软件程序的数据。存储器主要用于存储软件程序和数据。射频电路主要用于基带信号与射频信号的转换以及对射频信号的处理。天线主要用于收发电磁波形式的射频信号。输入输出装置,例如触摸屏、显示屏,键盘等主要用于接收用户输入的数据以及对用户输出数据。

当电子设备开机后,处理器可以读取存储单元中的软件程序,解析并执行软件程序的指令,处理软件程序的数据。当需要通过无线发送数据时,处理器对待发送的数据进行基带处理后,输出基带信号至射频电路,射频电路将基带信号进行处理后得到射频信号并将射频信号通过天线以电磁波的形式向外发送。当有数据发送到电子设备时,射频电路通过天线接收到射频信号,该射频信号被进一步转换为基带信号,并将基带信号输出至处理器,处理器将基带信号转换为数据并对该数据进行处理。

为了便于说明,图14仅示出了一个存储器和处理器。在实际的电子设备中,可以存在多个处理器和存储器。存储器也可以称为存储介质或者存储设备等,本发明实施例对此不做限制。

作为一种可选的实现方式,处理器可以包括基带处理器和中央处理器,基带处理器主要用于对通信协议以及通信数据进行处理,中央处理器主要用于对整个电子设备进行控制,执行软件程序,处理软件程序的数据。图14中的处理器集成了基带处理器和中央处理器的功能,本领域技术人员可以理解,基带处理器和中央处理器也可以是各自独立的处理器,通过总线等技术互联。本领域技术人员可以理解,电子设备可以包括多个基带处理器以适应不同的网络制式,电子设备可以包括多个中央处理器以增强其处理能力,电子设备的各个部件可以通过各种总线连接。所述基带处理器也可以表述为基带处理电路或者基带处理芯片。所述中央处理器也可以表述为中央处理电路或者中央处理芯片。对通信协议以及通信数据进行处理的功能可以内置在处理器中,也可以以软件程序的形式存储在存储单元中,由处理器执行软件程序以实现基带处理功能。

图15所示为本申请提供的电子设备的另一示意性结构图。如图15所示,电子设备包括中框1210、功能键1220、显示屏1230、插口1240、处理器以及本申请提供的系统,示例性地,该系统存储于存储器中,功能键1220和插口1240设置在中框1210上,显示屏设置在中框1210的一侧。示例性地,电子设备1200可以是手机。

需要说明的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。

在本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“元件的至少部分”是指元件的部分或全部。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

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

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号