CN111506366B - 插件调用方法、装置、电子设备与存储介质 - Google Patents
插件调用方法、装置、电子设备与存储介质 Download PDFInfo
- Publication number
- CN111506366B CN111506366B CN202010306417.6A CN202010306417A CN111506366B CN 111506366 B CN111506366 B CN 111506366B CN 202010306417 A CN202010306417 A CN 202010306417A CN 111506366 B CN111506366 B CN 111506366B
- Authority
- CN
- China
- Prior art keywords
- plug
- target
- plugin
- command
- alias
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种插件调用方法、装置、电子设备与存储介质;方法包括:根据对目标插件的调用请求生成所述目标插件的路由指令;其中,目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;解析目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对目标插件的调用。本发明实施例提供的插件调用方法、装置、电子设备与存储介质,通过解析路由指令,将对目标插件路由别名以及目标插件的插件命令的调用转换成对目标插件以及目标插件中的功能模块的调用,从而实现了插件之间的互通。
Description
技术领域
本发明涉及移动应用技术领域,尤其涉及一种插件调用方法、装置、电子设备与存储介质。
背景技术
在安卓操作系统下,移动应用(APP)的传统更新方式是APP整包更新。这种更新方式对于用户而言具有实时性低,资源消耗大的问题。对于开发者而言,因为移动应用中的局部业务更新或局部功能缺陷去更迭应用版本也不合时宜。
现有技术中,本领域技术人员提出了移动应用插件化的方法去实现移动应用的热更新、热修复。这些方法主要聚焦于插件的加载使用,如现有的插件框架多数是对dex,apk进行动态加载,宿主应用按照规范调用插件的能力。
现有技术中的移动应用插件化方法所生成的插件各自独立,相互之间缺乏联系,插件之间无法相互调用,这不利于将多个插件整合成一个产品。
发明内容
本发明实施例提供一种插件调用方法、装置、电子设备与存储介质,用以解决现有技术中的移动应用插件化方法所生成的插件各自独立,相互之间缺乏联系,插件之间无法相互调用,不利于将多个插件整合成一个产品的缺陷。
本发明第一方面实施例提供一种插件调用方法,包括:
根据对目标插件的调用请求生成所述目标插件的路由指令;其中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;所述插件路由别名是插件内部能够识别的插件名称;所述插件命令用于以插件内部能够识别的方式描述插件中的功能模块;
解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
上述技术方案中,还包括:
加载目标插件;
建立所述目标插件与插件路由别名之间的映射关系;
为所述目标插件中的功能模块接口创建对应的插件命令,建立所述目标插件中的功能模块接口与所述插件命令之间的映射关系。
上述技术方案中,所述插件命令包括:插件命令别名和参数别名;
相应地,所述建立所述目标插件中的功能模块接口与插件命令之间的映射关系包括:
建立所述目标插件中的功能模块接口的名称与插件命令别名之间的映射关系;
将所述目标插件中的功能模块接口的参数映射转化为插件命令中的参数别名。
上述技术方案中,所述解析所述目标插件的路由指令包括:
解析目标插件路由别名,根据所述目标插件路由别名获得所述目标插件;
解析目标插件的插件命令,根据所述插件命令中的插件命令别名获得所述目标插件的功能模块接口,根据所述插件命令中的参数别名为所述功能模块接口中的参数赋值。
上述技术方案中,在所述加载目标插件之前,还包括:
对目标插件的代码包进行编译,生成目标插件;其中,
所述对目标插件的代码包进行编译具体包括:在编译过程中,为根据代码包得到的目标插件提供对插件周期管理接口以及插件功能管理接口的引用;
所述插件周期管理接口用于对插件生命周期各个阶段的处理流程进行管理;所述插件功能管理接口用于对插件所要实现的功能进行管理。
上述技术方案中,在所述加载目标插件之前,还包括:
基于宿主应用预先申请的合法标识及插件版本信息向服务器端检查待加载的目标插件的更新情况;其中,所述合法标识用于描述所述宿主应用与宿主应用的业务插件之间的绑定关系,所述宿主应用的业务插件是与宿主应用的业务相关的插件;
当所述待加载的目标插件需要更新时,从所述服务器端下载所述目标插件,并对所述目标插件进行校验;其中,所述待加载的目标插件需要更新包括:待加载的目标插件之前在宿主应用上未被加载,或待加载的目标插件之前在宿主应用上加载的版本低于在所述服务器端当前所保存的版本。
上述技术方案中,还包括:
根据宿主应用的应用程序包的业务内容特征,向所述服务器端申请合法标识;
将所述服务器端所返回的合法标识赋予所述宿主应用。
本发明第二方面实施例提供一种插件调用装置,包括:
路由指令生成模块,用于根据对目标插件的调用请求生成所述目标插件的路由指令;其中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;所述插件路由别名是插件内部能够识别的插件名称;所述插件命令用于以插件内部能够识别的方式描述插件中的功能模块;
解析模块,用于解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
本发明第三方面实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面实施例所述插件调用方法的步骤。
本发明第四方面实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明第一方面实施例所述插件调用方法的步骤。
本发明实施例提供的插件调用方法、装置、电子设备与存储介质,通过解析路由指令,将对目标插件路由别名以及目标插件的插件命令的调用转换成对目标插件以及目标插件中的功能模块的调用,使得目标插件以及目标插件中的功能模块能够被其他插件所识别与使用,从而实现了插件之间的互通。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的插件调用方法的流程图;
图2为本发明实施例提供的插件调用装置的示意图;
图3为本发明实施例示例的一种电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
插件(Plug-in)是一种遵循一定规范的应用程序接口编写出来的程序。
移动应用插件化是把整个移动应用(APP)拆分成多个模块,这些模块中有一个宿主和多个插件,每个模块都是一个APK。在对移动应用进行打包时,将宿主APK和插件APK合并或者分开打包。移动应用程序的插件化有助于减少宿主APP项目功能,并减少宿主APK文件过大的问题。
移动应用插件化具有以下特点:
1、宿主与插件的分开编译。
宿主的编译与插件的编译分开进行,宿主在编译时并不要求同时编译插件,插件在编译成功后下发到宿主APP。
2、并行开发。
宿主APP的版本发布与插件的开发完成没有关系,宿主APP在开发过程中只需要为插件提供入口即可。
3、插件的动态更新。
插件开发完成后下发到宿主APP,点击宿主APP的相应入口就可以跳转到最新版的插件。
虽然移动应用插件化方法具有上述的诸多优点,但现有技术中的移动应用插件化方法所生成的插件各自独立,相互之间缺乏联系(如相互之间的调用),这不利于将多个插件整合成一个产品。此外,现有技术中的方法在实现时主要关注插件的加载使用,对插件的安全生成、安全更新等方面缺乏关注,存在安全隐患。
为此,本发明实施例提供了一种插件调用方法。该方法在智能移动终端的操作系统内实现,如安卓手机操作系统。图1为本发明实施例提供的插件调用方法的流程图,包括:
步骤101、根据对目标插件的调用请求生成所述目标插件的路由指令。
在本发明实施例中,将所要调用的插件称为目标插件。对目标插件的调用可由宿主应用发起,也可以由宿主应用所加载的另一个插件发起。
在本发明实施例中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令。
本领域技术人员应当了解,在现有技术中一个插件不能直接调用另一个插件,因此在本发明实施例中,需要为目标插件创建插件内部能够识别的插件名称,这一插件内部能够识别的插件名称就是插件路由别名。
对插件的调用通常是对插件中的功能模块的调用。插件命令用于以插件内部能够识别的方式描述插件中的功能模块。在诸如安卓操作系统的现有技术中,插件的功能模块通常以方法(method)的形式加以表示,因此插件的功能模块接口的一种具体表现形式是插件的方法接口。
本领域技术人员可以了解,插件中的功能模块除了功能模块接口外,一般还包括功能模块接口的参数。因此插件命令可进一步包括插件命令别名和参数别名。其中的插件命令别名用于映射功能模块接口的名称,参数别名用于映射功能模块接口的参数。
在生成目标插件的路由指令时需要遵循路由指令规则,在本发明实施例中,路由指令规则的表达式为:
schema+插件路由别名+插件命令别名+参数列表(参数别名+真实参数赋值);
该路由指令中的前缀schema是固定的,路由指令中的各个别名在之前的描述中已经对它们的含义做了说明。
步骤102、解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
在本发明实施例中,已经预设了目标插件路由别名与目标插件之间的映射关系以及插件命令与目标插件中的功能模块接口之间的映射关系。因此在解析目标插件的路由指令时,解析路由指令中的插件命令别名可得到真实的插件,解析插件命令别名,可得到与插件命令别名所对应的插件中对外公开的功能模块接口的名称,解析参数别名将对真实的插件功能模块接口参数进行赋值。在本发明其他实施例中,将对如何预设目标插件路由别名与目标插件之间的映射关系以及插件命令与目标插件中的功能模块接口之间的映射关系做进一步的说明。
通过解析目标插件的路由指令,可最终调用插件命令中真实的插件功能模块。
例如,假设一个插件路由指令为:
plugin://plugin_aliasA/method_alisA?param_alis_a=good¶m_alis_b=1。
插件调用后:即可通过别名一一解析成PluginA对象的MethodA方法,及参数paramA,paramB,最终完成插件调用。
本发明实施例提供的插件调用方法通过解析路由指令,将对目标插件路由别名以及目标插件的插件命令的调用转换成对目标插件以及目标插件中的功能模块的调用,使得目标插件以及目标插件中的功能模块能够被其他插件所识别与使用,从而实现了插件之间的互通。
基于上述任一实施例,在本发明实施例中,在根据对目标插件的调用请求生成所述目标插件的路由指令之前,方法还包括:
加载目标插件;
建立所述目标插件与插件路由别名之间的映射关系;
为所述目标插件中的功能模块接口创建对应的插件命令,建立所述目标插件中的功能模块接口与所述插件命令之间的映射关系。
目标插件首先要加载到宿主应用上,才能实现对目标插件的调用。
在本发明实施例中,目标插件的加载过程分为两个阶段,第一阶段是将目标插件加载到一个运行环境中。智能移动终端的操作系统能够提供该运行环境,通过智能移动终端操作系统所提供的能力能够将目标插件加载到该运行环境中。例如,通过调用安卓操作系统的ClassLoader加载dex文件。
第二个阶段是对目标插件做初始化操作,使得目标插件能够适应运行环境。对目标插件的初始化操作包括:解析目标插件的入口类配置文件,反射调用创建插件入口类,所述插件入口类能够实现插件周期管理接口,能够直接调用加载插件内的控制逻辑。对插件的初始化操作还包括初始化网络信息,采集必要的设备信息等本领域技术人员公知的插件初始化操作。
目标插件初始化操作中所涉及的目标插件的入口配置文件描述了插件入口类信息,所述插件入口类信息包括插件内的入口可执行代码的包名和类名;插件周期管理接口用于对插件在加载、注册、使用和关闭等各个阶段的处理流程进行管理。
目标插件加载完成后,为了实现插件之间的通信,需要对目标插件进行注册,即为目标插件创建插件路由别名,然后建立目标插件与目标插件的插件路由别名之间的映射关系。
建立目标插件与目标插件的插件路由别名之间的映射关系的这一执行过程可由插件功能管理接口完成。所述插件功能管理接口用于对插件所要实现的功能进行管理,包括插件的注册、插件命令登记和插件路由跳转等。
在之后的描述中将进一步提到,插件周期管理接口与插件功能管理接口并不是目标插件的一部分,在目标插件中只包含对它们的引用,目标插件只有运行在宿主应用的运行环境中才能够使用插件周期管理接口与插件功能管理接口。
具体的说,在注册目标插件时,可由目标插件自行定义自身的插件路由别名,如对于插件PluginA,可为其定义路由别名为“aliasA”,然后通过调用插件功能管理接口将目标插件与插件路由别名进行关联注册,建立插件路由别名和目标插件的映射关系。
在完成目标插件的注册后,接着进行插件命令登记。插件命令登记的目的是为插件中对外公开的功能模块接口建立对应的插件命令,然后建立插件中对外公开的功能模块接口与插件命令之间的映射关系。
众所周知,插件中包含有多个功能模块,有些功能模块属于插件的私有功能模块,不对外提供接口,有些功能模块属于对外公开的功能模块,可以向外部提供插件的某种能力,如登录的能力。在本发明实施例中,为插件中对外公开的功能模块接口建立对应的插件命令,并建立插件中对外公开的功能模块接口与插件命令之间的映射关系,而对插件的私有功能模块则不需要做这样的操作。
需要说明的是,在本发明实施例中所实现的目标插件的注册以及目标插件的命令登记对于宿主应用而言都是不可见的,即宿主应用无需知道上述实现过程。
本发明实施例提供的插件调用方法通过为所加载的目标插件进行注册与命令登记,使得目标插件以及目标插件中的功能模块能够被其他插件所识别与使用,从而实现了插件之间的互通。
基于上述任一实施例,在本发明实施例中,建立所述目标插件中的功能模块接口与插件命令之间的映射关系包括:
建立所述目标插件中的功能模块接口的名称与插件命令别名之间的映射关系;
将所述目标插件中的功能模块接口的参数映射转化为插件命令中的参数别名。
在之前的实施例中已经提到,插件命令用于以插件内部能够识别的方式描述插件中的功能模块。插件中的功能模块除了功能模块接口外,一般还包括功能模块接口的参数。因此在本发明实施例中,在建立目标插件中的功能模块接口与插件命令之间的映射关系时,需要在目标插件中的功能模块接口的名称与插件命令别名之间建立映射关系,还需要将所述目标插件中的功能模块接口的参数映射转化为插件命令中的参数别名。
具体的说,在一个实施例中,用插件命令对象(PluginOrder)来表示一个插件命令。所创建的插件命令对象包括以下内容:
插件命令别名,例如methodalias_a,用于在之后的路由调用时通过插件命令别名找到插件对外公开的功能模块接口;
插件中对外公开的功能模块接口的真实名称,如MethodA,这是最终真实调用的插件的功能模块接口;
参数别名,为插件功能模块的接口参数一一定义其参数别名。
下面结合一个具体的例子对目标插件的注册以及目标插件的命令登记进行描述。
一个插件对象为PluginA,该对象有一个真实的公开方法接口MethodA,包含参数String paramA,int paramB。
在注册该插件对象时,自定义PluginA的别名为“plugin_aliasA”,然后将PluginA和“plugin_aliasA”关联注册。
然后定义PluginOrder命令对象,为公开的方法接口MethodA定义其插件命令别名为“method_anlisA”,将该MethodA转化成java中通用的Method方法存储到PluginOrder中,然后将MethodA中的参数一一进行映射转化,注册参数别名映射(映射关系如下:String.class-“param_alis_a”;int.class-“param_alis_b”。
本发明实施例提供的插件调用方法通过对插件命令的详细划分,更好的实现了目标插件的命令登记,使得目标插件以及目标插件中的功能模块能够被其他插件所识别与使用,从而实现了插件之间的互通。
基于上述任一实施例,在本发明实施例中,在所述加载目标插件之前,还包括:
对目标插件的代码包进行编译,生成目标插件。
目标插件的提供方向外提供目标插件的代码包,对目标插件的代码包进行编码,生成目标插件。
目标插件在运行过程中需要有插件周期管理接口、插件功能管理接口以及入口配置文件;其中的插件周期管理接口用于对插件在加载、注册、使用和关闭等生命周期各个阶段的处理流程进行管理;插件功能管理接口用于对插件所要实现的功能进行管理,包括插件的注册、插件命令登记和插件路由跳转等;入口配置文件描述了插件入口类信息,所述插件入口类信息包括插件内的入口可执行代码的包名和类名。
但在本发明实施例中,为了确保插件运行环境的安全,在插件的代码包中并不包含插件周期管理接口以及插件功能管理接口,因此在编译得到的目标插件中并不包含插件周期管理接口以及插件功能管理接口。插件周期管理接口以及插件功能管理接口由宿主应用的运行环境(该运行环境配置有后文中提到的本发明实施例提供的插件调用装置,在后文中提到的宿主应用的运行环境也类似)提供,在编译过程中仅向目标插件提供对所述插件周期管理接口以及插件功能管理接口的引用。一旦后续目标插件运行在宿主应用的运行环境中,就可根据所述引用调用插件周期管理接口以及插件功能管理接口。这就使得目标插件只有在宿主应用的运行环境中运行才能够正常使用,确保了插件运行环境的安全。
本发明实施例提供的插件调用方法不在插件的代码包中写入插件周期管理接口以及插件功能管理接口,在插件的编译过程中为插件提供对插件周期管理接口以及插件功能管理接口的引用,这使得插件只有在宿主应用的运行环境中运行才能够正常使用,确保了插件运行环境的安全。
基于上述任一实施例,在本发明实施例中,在所述加载目标插件之前,方法还包括:
基于宿主应用预先申请的合法标识向服务器端检查待加载的目标插件的更新情况;
当所述待加载的目标插件需要更新时,从所述服务器端下载所述目标插件,并对所述目标插件进行校验;其中,所述待加载的目标插件需要更新包括:待加载的目标插件之前在宿主应用上未被加载,或待加载的目标插件之前在宿主应用上加载的版本低于在所述服务器端当前所保存的版本。
具体的说,在将插件加载到宿主应用之前,通过调用安卓操作系统中的API读取宿主应用的包名和运行时的签名信息,携带预先申请分配的合法标识APPID(该合法标识由服务器端审核宿主应用提供的业务内容特征(如应用程序包的包名与包签名)后发放)以及插件版本信息(若宿主APP之前已经加载过插件,则为插件上次运行时的插件版本信息,若宿主应用之前未曾加载过插件,插件版本信息即为0),向服务器端(可在服务器端设置一个专门的用于管理插件更新的插件更新服务管理模块)检查插件的更新情况。服务器端根据合法标识确定宿主应用的合法性后,检查插件版本信息,若插件上次运行时的插件版本已经是最新的版本,则无需下载最新版本的插件;若之前未曾加载插件或插件上次运行时的插件版本不是最新的版本,则需要下载最新版本的插件。
在从服务器端下载插件后,需要对插件压缩包进行校验。插件压缩包在命名时需要遵循一定的格式要求,如插件类型,插件版本,插件MD5等。在对插件压缩包进行校验时,校验插件MD5是否与命名一致,也会校验插件压缩包的版本和插件类型是否合法。
本发明实施例提供的插件调用方法在实现对插件的更新时,需要对宿主应用的业务内容进行检查,以确定该宿主应用是否需要待更新的插件,此外还对更新下载的插件压缩包做了校验,这有助于确保插件使用的安全性。
基于上述任一实施例,在本发明实施例中,方法还包括:
根据宿主应用的业务内容特征(如应用程序包的包名与包签名),向所述服务器端申请合法标识;其中,所述合法标识用于描述所述宿主应用与宿主应用的业务插件之间的绑定关系,所述宿主应用的业务插件是与宿主应用的业务相关的插件;
将所述服务器端所返回的合法标识赋予所述宿主应用。
在前一实施例中,宿主应用已经预先申请了合法标识APPID,在本实施例中,宿主应用尚未申请合法标识,因此需要申请合法标识。
具体的说,宿主APK(Android application package,安卓应用程序包)在加载插件前,需要根据宿主APK的包名、包签名(通过签名工具计算应用签名摘要)向服务器端(可在服务器端设置一个专门的用于管理插件更新的插件更新服务管理模块)注册与其业务相关的插件,该服务器端会为宿主APK以及与其业务相关的插件分配一个合法标识(如APPID),以实现宿主APK与插件的绑定。
本发明实施例提供的插件调用方法通过为宿主应用做业务内容注册,使得宿主应用在后续插件更新时保证了插件使用的安全性。
基于上述任一实施例,图2为本发明实施例提供的插件调用装置的示意图,如图2所示,本发明实施例提供的插件调用装置包括:
路由指令生成模块201,用于根据对目标插件的调用请求生成所述目标插件的路由指令;其中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;所述插件路由别名是插件内部能够识别的插件名称;所述插件命令用于以插件内部能够识别的方式描述插件中的功能模块;
解析模块202,用于解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
本发明实施例提供的插件调用装置通过解析路由指令,将对目标插件路由别名以及目标插件的插件命令的调用转换成对目标插件以及目标插件中的功能模块的调用,使得目标插件以及目标插件中的功能模块能够被其他插件所识别与使用,从而实现了插件之间的互通。
图3为本发明实施例示例的一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:根据对目标插件的调用请求生成所述目标插件的路由指令;其中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
需要说明的是,本实施例中的电子设备在具体实现时可以为服务器,也可以为PC机,还可以为其他设备,只要其结构中包括如图3所示的处理器310、通信接口320、存储器330和通信总线340,其中处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信,且处理器310可以调用存储器330中的逻辑指令以执行上述方法即可。本实施例不对电子设备的具体实现形式进行限定。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:根据对目标插件的调用请求生成所述目标插件的路由指令;其中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:根据对目标插件的调用请求生成所述目标插件的路由指令;其中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种插件调用方法,其特征在于,包括:
加载目标插件;
建立所述目标插件与插件路由别名之间的映射关系;
为所述目标插件中的功能模块接口创建对应的插件命令,建立所述目标插件中的功能模块接口与所述插件命令之间的映射关系;
根据对所述目标插件的调用请求生成所述目标插件的路由指令;其中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;所述插件路由别名是插件内部能够识别的插件名称;所述插件命令用于以插件内部能够识别的方式描述插件中的功能模块;
解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
2.根据权利要求1所述的插件调用方法,其特征在于,所述插件命令包括:插件命令别名和参数别名;
相应地,所述建立所述目标插件中的功能模块接口与插件命令之间的映射关系包括:
建立所述目标插件中的功能模块接口的名称与插件命令别名之间的映射关系;
将所述目标插件中的功能模块接口的参数映射转化为插件命令中的参数别名。
3.根据权利要求2所述的插件调用方法,其特征在于,所述解析所述目标插件的路由指令包括:
解析目标插件路由别名,根据所述目标插件路由别名获得所述目标插件;
解析目标插件的插件命令,根据所述插件命令中的插件命令别名获得所述目标插件的功能模块接口,根据所述插件命令中的参数别名为所述功能模块接口中的参数赋值。
4.根据权利要求1所述的插件调用方法,其特征在于,在所述加载目标插件之前,还包括:
对目标插件的代码包进行编译,生成目标插件;其中,
所述对目标插件的代码包进行编译具体包括:在编译过程中,为根据代码包得到的目标插件提供对插件周期管理接口以及插件功能管理接口的引用;
所述插件周期管理接口用于对插件生命周期各个阶段的处理流程进行管理;所述插件功能管理接口用于对插件所要实现的功能进行管理。
5.根据权利要求1所述的插件调用方法,其特征在于,在所述加载目标插件之前,还包括:
基于宿主应用预先申请的合法标识及插件版本信息向服务器端检查待加载的目标插件的更新情况;其中,所述合法标识用于描述所述宿主应用与宿主应用的业务插件之间的绑定关系,所述宿主应用的业务插件是与宿主应用的业务相关的插件;
当所述待加载的目标插件需要更新时,从所述服务器端下载所述目标插件,并对所述目标插件进行校验;其中,所述待加载的目标插件需要更新包括:待加载的目标插件之前在宿主应用上未被加载,或待加载的目标插件之前在宿主应用上加载的版本低于在所述服务器端当前所保存的版本。
6.根据权利要求5所述的插件调用方法,其特征在于,还包括:
根据宿主应用的应用程序包的业务内容特征,向所述服务器端申请合法标识;
将所述服务器端所返回的合法标识赋予所述宿主应用。
7.一种插件调用装置,其特征在于,包括:
目标插件加载模块,用于加载目标插件;
映射关系建立模块,用于建立所述目标插件与插件路由别名之间的映射关系;
插件命令创建模块,用于为所述目标插件中的功能模块接口创建对应的插件命令,建立所述目标插件中的功能模块接口与所述插件命令之间的映射关系;
路由指令生成模块,用于根据对所述目标插件的调用请求生成所述目标插件的路由指令;其中,所述目标插件的路由指令至少包括:目标插件路由别名以及目标插件的插件命令;所述插件路由别名是插件内部能够识别的插件名称;所述插件命令用于以插件内部能够识别的方式描述插件中的功能模块;
解析模块,用于解析所述目标插件的路由指令,根据预设的目标插件路由别名与目标插件之间的映射关系以及预设的插件命令与目标插件中的功能模块接口之间的映射关系,实现对所述目标插件的调用。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述插件调用方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述插件调用方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010306417.6A CN111506366B (zh) | 2020-04-17 | 2020-04-17 | 插件调用方法、装置、电子设备与存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010306417.6A CN111506366B (zh) | 2020-04-17 | 2020-04-17 | 插件调用方法、装置、电子设备与存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506366A CN111506366A (zh) | 2020-08-07 |
CN111506366B true CN111506366B (zh) | 2023-09-05 |
Family
ID=71864120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010306417.6A Active CN111506366B (zh) | 2020-04-17 | 2020-04-17 | 插件调用方法、装置、电子设备与存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506366B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656106B (zh) * | 2021-08-20 | 2023-11-10 | 厦门雅基软件有限公司 | 插件加载方法、装置、电子设备及计算机可读存储介质 |
CN113918239B (zh) * | 2021-10-14 | 2024-05-17 | 上海幻电信息科技有限公司 | 代码实现方法及系统 |
CN116521250A (zh) * | 2022-01-21 | 2023-08-01 | 北京字跳网络技术有限公司 | 一种插件的加载方法及装置 |
CN115291877A (zh) * | 2022-10-10 | 2022-11-04 | 深圳市明源云客电子商务有限公司 | 业务开发方法、装置、终端设备及计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001050701A2 (en) * | 1999-12-29 | 2001-07-12 | Nokia Corporation | Systems for customizing behaviors and interfaces in service invocations |
CN1524216A (zh) * | 2001-05-30 | 2004-08-25 | Bea系统公司 | 软件构件插件程序结构的系统和方法 |
US7962917B2 (en) * | 2005-03-10 | 2011-06-14 | Microsoft Corporation | System data interfaces, related architectures, print system data interfaces and related print system architectures |
CN104376256A (zh) * | 2014-12-02 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序进程孵化控制方法及装置 |
CN109144522A (zh) * | 2017-06-19 | 2019-01-04 | 中兴通讯股份有限公司 | 应用部署方法、装置、设备和计算机可读存储介质 |
CN109241191A (zh) * | 2018-09-13 | 2019-01-18 | 华东交通大学 | 一种分布式数据源异构同步平台及同步方法 |
CN109614158A (zh) * | 2017-09-30 | 2019-04-12 | 北京国双科技有限公司 | 一种插件的调用方法、系统、存储介质和处理器 |
CN110489138A (zh) * | 2019-07-02 | 2019-11-22 | 招联消费金融有限公司 | 一种应用更新方法、装置和存储介质 |
CN110908734A (zh) * | 2019-11-15 | 2020-03-24 | 网易(杭州)网络有限公司 | 基于插件化的应用组合方法、装置、终端设备及存储介质 |
-
2020
- 2020-04-17 CN CN202010306417.6A patent/CN111506366B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001050701A2 (en) * | 1999-12-29 | 2001-07-12 | Nokia Corporation | Systems for customizing behaviors and interfaces in service invocations |
CN1524216A (zh) * | 2001-05-30 | 2004-08-25 | Bea系统公司 | 软件构件插件程序结构的系统和方法 |
US7962917B2 (en) * | 2005-03-10 | 2011-06-14 | Microsoft Corporation | System data interfaces, related architectures, print system data interfaces and related print system architectures |
CN104376256A (zh) * | 2014-12-02 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序进程孵化控制方法及装置 |
CN109144522A (zh) * | 2017-06-19 | 2019-01-04 | 中兴通讯股份有限公司 | 应用部署方法、装置、设备和计算机可读存储介质 |
CN109614158A (zh) * | 2017-09-30 | 2019-04-12 | 北京国双科技有限公司 | 一种插件的调用方法、系统、存储介质和处理器 |
CN109241191A (zh) * | 2018-09-13 | 2019-01-18 | 华东交通大学 | 一种分布式数据源异构同步平台及同步方法 |
CN110489138A (zh) * | 2019-07-02 | 2019-11-22 | 招联消费金融有限公司 | 一种应用更新方法、装置和存储介质 |
CN110908734A (zh) * | 2019-11-15 | 2020-03-24 | 网易(杭州)网络有限公司 | 基于插件化的应用组合方法、装置、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111506366A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506366B (zh) | 插件调用方法、装置、电子设备与存储介质 | |
CN109656538B (zh) | 应用程序的生成方法、装置、系统、设备和介质 | |
CN111399840B (zh) | 一种模块开发方法及装置 | |
CN106648755B (zh) | 一种在安卓art环境中动态加载dex的方法及装置 | |
CN110806945B (zh) | 接口对接方法、装置和计算机可读介质 | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN114942796A (zh) | 插件编译及调用方法、装置、设备及存储介质 | |
CN111740948A (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN111651169B (zh) | 基于web容器的区块链智能合约运行方法及系统 | |
CN117112122A (zh) | 一种集群部署方法和装置 | |
CN112965731B (zh) | 基于Tinker的Flutter热更新方法、装置、设备及存储介质 | |
CN106775916B (zh) | 减小应用安装包的方法、装置及电子设备 | |
CN111324395B (zh) | 调用方法、装置和计算机可读存储介质 | |
WO2023083071A1 (zh) | 视图交互方法、装置、电子设备及计算机可读介质 | |
CN109189591B (zh) | 用于调用应用组件的方法和装置 | |
CN116755788A (zh) | 一种线上规则修改方法、装置、设备及存储介质 | |
US20200326942A1 (en) | Parameter management between programs | |
CN114938396A (zh) | 服务调用请求的路由方法、创建服务的方法及装置 | |
CN109933355A (zh) | 应用程序升级方法及装置 | |
US7673051B2 (en) | Resource usage conflict identifier | |
CN109947407B (zh) | 一种数据获取方法及装置 | |
CN115757287A (zh) | 目标文件的构建方法、装置及存储介质 | |
CN116909756B (zh) | 跨云服务方法、装置、电子设备及存储介质 | |
US20240004616A1 (en) | Runtime support for role types that extend underlying types | |
CN111857816A (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 |