CN110221877A - 一种应用程序的运行方法、装置、电子设备、及存储介质 - Google Patents
一种应用程序的运行方法、装置、电子设备、及存储介质 Download PDFInfo
- Publication number
- CN110221877A CN110221877A CN201910508706.1A CN201910508706A CN110221877A CN 110221877 A CN110221877 A CN 110221877A CN 201910508706 A CN201910508706 A CN 201910508706A CN 110221877 A CN110221877 A CN 110221877A
- Authority
- CN
- China
- Prior art keywords
- service
- dependence
- interface
- feature card
- called
- 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.)
- Granted
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/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
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
本公开实施例公开了一种应用程序的运行方法、装置、电子设备、及存储介质,所述应用程序包括宿主程序和功能插件,所述方法包括:宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行功能插件;在功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用被调用的依赖服务的服务程序;其中,依赖服务接口配置在宿主程序中;在服务程序运行后,通过依赖服务接口所定义的反馈数据,将输出数据传输给功能插件,以完成对被调用的依赖服务的调用。本公开实施例的技术方案能够减少功能插件的开发维护工作量,能够避免使用不同版本的服务时出现依赖冲突。
Description
技术领域
本公开涉及计算机应用技术领域,具体涉及一种应用程序的运行方法、装置、电子设备、及存储介质。
背景技术
功能插件是用来实现特定功能的可执行程序,为了丰富应用程序的功能,会允许其调用一些功能插件,此种情况可将该应用程序称为宿主程序。
无论是宿主程序还是功能插件,都需要依赖一些共性的服务来实现,典型的服务如:网络请求、图片缓存与加载、监控、埋点等。由于这些服务带有通用性,所以通常会独立形成供调用的子程序或者插件,而无需在开发宿主程序和功能插件时再自行开发,只需调用已有服务即可。无需自行开发,能减少开发工作量、减小插件和宿主程序本身的体积。但是在调用过程中,可能会出现依赖冲突。例如,宿主程序需要调用网络请求服务,功能插件也需要调用网络请求服务,但是两者调用的网络请求服务的版本号不完全相同,那么就出现了依赖冲突问题。
基于以上问题,宿主程序和功能插件,如何对通用服务进行调用,不产生依赖冲突,是需要解决的技术问题。
发明内容
有鉴于此,本公开实施例提供一种应用程序的运行方法、装置、电子设备、及存储介质,以减少功能插件的开发维护工作量,能够避免使用不同版本的服务时出现依赖冲突。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
第一方面,本公开实施例提供了一种应用程序的运行方法,所述应用程序包括宿主程序和功能插件,所述方法包括:
宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件;
在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中;
在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
第二方面,本公开实施例还提供了一种应用程序的运行装置,所述应用程序包括宿主程序和功能插件,所述装置包括:
功能插件调用单元,用于宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件;
服务程序调用单元,用于在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中;
结果输出单元,用于在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
第三方面,本公开实施例还提供了一种应用程序,包括如上述第一方面任一项所述的宿主程序、以及至少一个如上述第二方面任一项所述的功能插件。
第四方面,本公开实施例还提供了一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一项所述方法的指令。
第五方面,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一项所述方法的步骤。
本公开实施例所述的应用程序的运行方法,在宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件;在功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中;在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用,能够减少功能插件的开发维护工作量,能够避免使用不同版本的服务时出现依赖冲突。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对本公开实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本公开实施例中的一部分实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本公开实施例的内容和这些附图获得其他的附图。
图1是本公开实施例提供的一种应用程序的运行方法的流程示意图;
图2是本公开实施例提供的另一种应用程序的运行方法的流程示意图;
图3是本公开实施例提供的另一种应用程序的运行方法的实现方案示意图;
图4是本公开实施例提供的又一种应用程序的运行方法的流程示意图;
图5是本公开实施例提供的应用程序结构示意图;
图6是本公开实施例提供的一种应用程序的运行装置的结构示意图;
图7是本公开实施例提供的另一种应用程序的运行装置的结构示意图;
图8是本公开实施例提供的又一种应用程序的运行装置的结构示意图;
图9示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
为使本公开实施例解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本公开实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本公开实施例中的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,本公开实施例中术语“系统”和“网络”在本文中常被可互换使用。本公开实施例中提到的“和/或”是指”包括一个或更多个相关所列项目的任何和所有组合。本公开的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于限定特定顺序。
还需要说明是,本公开实施例中下述各个实施例可以单独执行,各个实施例之间也可以相互结合执行,本公开实施例对此不作具体限制。
功能插件在执行过程中,可能会依赖很多基础服务,比如网络请求、图片加载等。如果这些服务由功能插件自己来实现的话,会至少存在两个问题,首先,功能插件会变得非常复杂庞大;其次,功能插件自身依赖的服务可能会和宿主程序依赖的服务冲突,或者可能会和宿主接入的其他插件的服务冲突。所以本实施例的技术方案目的是要在功能插件中剔除这些基础的依赖服务接口,将依赖服务接口配置在调用该功能插件的宿主程序中。
下面结合附图并通过具体实施方式来进一步说明本公开实施例的技术方案。
图1示出了本公开实施例提供的一种应用程序的运行方法的流程示意图,本实施例可适用于包括宿主程序和功能插件的应用程序,本实施例并不限定所述应用程序的运行环境,例如所述应用程序可运行于IOS操作系统,也可运行于安卓操作系统或者其他操作系统,本实施例所述的方法可以由配置于该应用程序中的应用程序运行装置来执行,如图1所示,本实施例所述的应用程序的运行方法包括:
在步骤S110中,宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件。
需要说明的是,所述功能插件可以是天然安装在所述宿主程序中的,也可是根据用户操作临时安装在所述宿主程序中的,其中所述宿主程序可安装多个功能插件。
在步骤S120中,在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中。
所述依赖服务包括所述功能插件会使用到,且需要宿主提供服务接口(即前述的依赖服务接口)的服务,主要是一些基础服务,例如包括下述至少一种:网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务等。
其中,所述至少一种依赖服务的依赖服务接口配置在所述宿主程序中。若所述依赖服务为基础服务,所述宿主程序实现所述依赖服务接口时,可以是对所述依赖服务的通用实现程序进行调用的代码指令。
需要说明的是,若所述功能插件需要的依赖服务接口与所述宿主程序依赖的对应服务版本相同,即两者的名称和输入输出参数相同,则宿主程序可直接调用其所依赖的对应服务,以实现该依赖服务接口。
反之,若所述功能插件需要的依赖服务接口与所述宿主程序依赖的对应服务版本不同,即两者的名称和/或输入输出参数不同,则宿主程序不可直接调用其所依赖的对应服务,可将其所依赖的对应服务与所述功能插件需要的依赖服务进行适配性调整,以实现该依赖服务接口。
在步骤S130中,在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
本步骤的具体程序实现可采用多种方式,例如可以通过服务提供者接口的方式实现,例如分别在功能插件和宿主程序中设置服务提供者接口定义和服务提供者接口实现,以完成参数的传递和输出结果的返回。又如还可以通过管理器服务池的方式实现,例如宿主程序对自身可对外提供的服务进行服务接口定义,每个服务接口,定义了服务名称、调用该服务的输入和输出。并且,还汇总了自身所有服务接口,集中保存在管理器服务池中,供调用这些服务的功能插件,在编译过程中发现这些可调用的服务接口,以匹配是否可正常调用运行。这种情况下,运行过程中,可根据所述功能插件调用依赖服务的需求,在所述宿主程序的管理器服务池中查找所需的依赖服务接口,通过所述依赖服务接口加载所述宿主程序提供的至少一种依赖服务的服务程序,并根据所述依赖服务接口将输入数据传输给所述服务程序,所述依赖服务接口包括服务名称、调用所述依赖服务的输入参数、以及调用所述依赖服务的输出参数。
在所述功能插件的启动过程中,还可包括:通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象,通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口,以根据所述上下文对象确定被调用的依赖服务的依赖服务接口。
具体地,可通过所述功能插件建立一个字典,所述字典的健为服务名,值为所述服务名对应依赖服务的依赖服务接口;通过所述宿主程序在运行时向所述字典加载健对应的依赖服务的依赖服务接口;根据被调用的依赖服务的服务名从所述字典中获取对应的依赖服务接口并调用。
图2示出了本公开实施例提供的另一种应用程序的运行方法的流程示意图,本实施例所述应用程序包括宿主程序和功能插件,所述应用程序运行于IOS操作系统,如图2所示,本实施例所述的应用程序的运行方法包括:
在步骤S210中,在所述功能插件安装到所述宿主程序时进行编译。
所述编译的过程包括:
根据所述功能插件中配置的服务提供者接口定义中的依赖服务标识,在所述宿主程序提供的服务提供者接口实现内的依赖服务标识中进行匹配;
根据匹配到的依赖服务标识,在所述宿主程序中配置的服务实现集合中确定对应的依赖服务接口,并对所述依赖服务接口进行编译,以供所述功能插件通过所述依赖服务接口对依赖服务的服务程序进行调用。
其中,根据所述功能插件中配置的服务提供者接口定义中的依赖服务标识,在所述宿主程序提供的服务提供者接口实现内的依赖服务标识中进行匹配,可依次根据所述功能插件中配置的服务提供者接口定义的至少一种依赖服务标识,在所述宿主程序提供的服务提供者接口实现内的依赖服务标识中进行遍历,以确定匹配的依赖服务标识。
在步骤S220中,宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件。
在步骤S230中,在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中。
在步骤S240中,在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
进一步地,在所述功能插件的启动过程中,还可通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象,通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口,以根据所述上下文对象确定被调用的依赖服务的依赖服务接口。
例如可,通过所述功能插件建立一个字典,所述字典的健为服务名,值为所述服务名对应依赖服务的依赖服务接口;通过所述宿主程序在运行时向所述字典加载健对应的依赖服务的依赖服务接口;根据被调用的依赖服务的服务名从所述字典中获取对应的依赖服务接口并调用。
图3是本公开实施例提供的另一种应用程序的运行方法的实现方案示意图,如图3所示,宿主程序中配置了服务提供者接口,以及网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务等依赖服务接口。
功能插件中配置了服务提供者接口定义,以及网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务等依赖服务的接口定义,下文也称为服务协议。
每个依赖服务的接口定义,即服务协议,描述了该服务的名称以及相关调用需求,例如在SDK调用宿主实现该服务时的输入数据和需要接收的返回数据。例如,SDK需要宿主来提供网络接口请求的功能、图片缓存、埋点的功能等,比如埋点服务的协议代码如下:
上述代码段第一行定义了服务名称,第二行定义了监控事件,相当于输入数据。
功能插件中的服务提供者接口定义,描述了该功能插件所需要宿主程序提供的所有服务,如下代码段,从语义上看代表该宿主程序需要提供下列服务:
@protocol SRServiceProvider(NSObject>————服务提供者接口
iProvides(SRNetworkService);——下面为各种服务的名称
iProvides(SRTracker);
iProvides(SRMonitor);
iProvides(SRShareService);
iProvides(SRWebImageService);
iProvides(SRRelationshipService);
iProvides(SRNetworkService);
iProvides(SRLoginService);
@end
上述代码段分别列出了各种依赖服务的名称。
相应的,如果宿主程序需要调用功能插件,则在开发宿主程序时需要增设下述代码段,即服务提供者接口,以及实现各依赖服务的依赖服务接口。具体地,服务提供者接口,用于发现并实现功能插件要求的所有服务,其中罗列了每个服务如何实现的代码,可以是对某个通用服务实现程序进行调用的代码指令。例如可通过如下代码段的形式实现:
上述代码段第一行定义了服务提供者接口实现的开始,下面各部分代码分别实现了分享服务(ShareService)、埋点服务和图片加载服务,分别定义了输入数据、调用哪个服务实现接口功能,反馈什么数据。
在宿主程序中,还需要为每个依赖服务提供依赖服务接口,用于具体处理功能插件的调用服务请求,接收输入数据,反馈输出数据。例如,埋点服务的服务接口如下代码段所示。
需要说明的是,如果功能插件需要的依赖服务的格式、参数名称等与通用服务程序有差异,需要做转换,以达到支持功能插件的目的。当各种宿主程序根据自身已有程序情况完成服务实现的开发后,就可以支持功能插件的调用运行了,且功能插件本身不需要额外直接调用某个服务,全部都是通过宿主程序来调用的,由此避免了宿主和功能插件在分别调用服务程序时产生的依赖冲突。
图4示出了本公开实施例提供的另一种应用程序的运行方法的流程示意图,所述应用程序包括宿主程序和功能插件,所述应用程序运行于安卓操作系统,如图4所示,本实施例所述的应用程序的运行方法包括:
在步骤S410中,所述功能插件安装到所述宿主程序时进行编译,且所述编译的过程包括:
在宿主程序中安装所述功能插件的过程中,根据所述功能插件的代码进行编译,以确定所需调用的依赖服务,并根据所述依赖服务遍历宿主程序在所述管理器服务池中提供的依赖服务接口;
如果确定有匹配的依赖服务接口,则进行编译处理。
在步骤S420中,宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件。
在步骤S430中,在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中。
例如,可根据所述功能插件调用依赖服务的需求,在所述宿主程序的管理器服务池中查找所需的依赖服务接口,通过所述依赖服务接口加载所述宿主程序提供的至少一种依赖服务的服务程序,并根据所述依赖服务接口将输入数据传输给所述服务程序,所述依赖服务接口包括服务名称、调用所述依赖服务的输入参数、以及调用所述依赖服务的输出参数。
在步骤S440中,在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
图5是本公开实施例提供的应用程序结构示意图,本实施例所述的应用程序包括宿主程序和至少一个功能插件,所述应用程序的运行方法可参考上述图1对应的实施例所述的应用程序的运行方法。
需要说明的是,本实施例所述应用程序可运行多种操作系统,例如可运行于IOS操作系统,也可运行于安卓操作系统或者其他操作系统。本实施例运行于不同的操作系统时,其程序编译过程或许会略有区别,例如,若本实施例所述的应用程序运行于IOS操作系统,其运行方法可参考上述图2和图3对应的实施例所述的应用程序的运行方法;若本实施例所述的应用程序运行于安卓操作系统,其运行方法可参考上述图4对应的实施例所述的应用程序的运行方法,本实施例在此不作赘述;若本实施例所述的应用程序运行于其他操作系统,本领域普通技术人员可根据该操作系统的编译特征进行适应性变化。
本实施例所述依赖服务包括功能插件会使用到,且需要宿主提供服务接口(即前述的依赖服务接口)的服务,主要是一些基础服务,例如包括下述至少一种:网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务等。宿主程序中配置的所述至少一种依赖服务的接口实现可以是对所述至少一种依赖服务的通用实现程序进行调用的代码指令。
如图5所示,本实施例所述的应用程序包括宿主程序和N个功能插件,所述依赖服务接口包括:网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务等,以供所述N个功能插件调用,从而所述N个功能插件内部均无需设置这些依赖服务接口,能够减少这些功能插件的开发维护工作量,能够避免使用不同版本的依赖服务时出现依赖冲突。
图6示出了本公开实施例提供的一种应用程序的运行装置的结构示意图,所述应用程序包括宿主程序和功能插件,如图6所示,本实施例所述的应用程序的运行装置包括功能插件调用单元610、服务程序调用单元620和结果输出单元630。
所述功能插件调用单元610被配置为,用于宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件。
所述服务程序调用单元620被配置为,用于在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中。
所述结果输出单元630被配置为,用于在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
进一步地,所述装置还包括功能插件启动单元(图6中未示出),所述功能插件启动单元被配置为用于在所述功能插件的启动过程中,通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象,通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口,以根据所述上下文对象确定被调用的依赖服务的依赖服务接口。
进一步地,所述功能插件启动单元还包括字典建立子单元(图6中未示出)、接口加载子单元(图6中未示出)和接口获取与调用子单元(图6中未示出)。
所述字典建立子单元被配置为,用于在所述功能插件的启动过程中,通过所述功能插件建立一个字典,所述字典的健为服务名,值为所述服务名对应依赖服务的依赖服务接口。
所述接口加载子单元被配置为,用于通过所述宿主程序在运行时向所述字典加载健对应的依赖服务的依赖服务接口。
所述接口获取与调用子单元被配置为,用于根据被调用的依赖服务的服务名从所述字典中获取对应的依赖服务接口并调用。
进一步地,所述服务程序调用单元620被配置为,用于根据所述功能插件调用依赖服务的需求,在所述宿主程序的管理器服务池中查找所需的依赖服务接口,通过所述依赖服务接口加载所述宿主程序提供的至少一种依赖服务的服务程序,并根据所述依赖服务接口将输入数据传输给所述服务程序,所述依赖服务接口包括服务名称、调用所述依赖服务的输入参数、以及调用所述依赖服务的输出参数。
进一步地,所述至少一种依赖服务的接口实现是对所述至少一种依赖服务的通用实现程序进行调用的代码指令。
进一步地,所述依赖服务包括下述至少一种:网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务。
本实施例提供的应用程序的运行装置可执行本公开方法实施例所提供的应用程序的运行方法,具备执行方法相应的功能模块和有益效果。
图7示出了本公开实施例提供的一种应用程序的运行装置的结构示意图,所述应用程序包括宿主程序和功能插件,所述应用程序运行于IOS操作系统,如图7所示,本实施例所述的应用程序的运行装置包括编译单元710、功能插件调用单元720、服务程序调用单元730和结果输出单元740。
所述编译单元710被配置为,用于在所述功能插件安装到所述宿主程序时进行编译。
所述功能插件调用单元720被配置为,用于宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件。
所述服务程序调用单元730被配置为,用于在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中。
所述结果输出单元740被配置为,用于在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
其中,所述编译单元710包括服务匹配子单元711和接口确定与编译子单元712。
所述服务匹配子单元711被配置为,用于根据所述功能插件中配置的服务提供者接口定义中的依赖服务标识,在所述宿主程序提供的服务提供者接口实现内的依赖服务标识中进行匹配。
所述接口确定与编译子单元712被配置为,用于根据匹配到的依赖服务标识,在所述宿主程序中配置的服务实现集合中确定对应的依赖服务接口,并对所述依赖服务接口进行编译,以供所述功能插件通过所述依赖服务接口对依赖服务的服务程序进行调用。
进一步地,所述装置还包括功能插件启动单元(图7中未示出),所述功能插件启动单元被配置为,用于在所述功能插件的启动过程中,通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象,通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口,以根据所述上下文对象确定被调用的依赖服务的依赖服务接口。
进一步地,所述功能插件启动单元还包括字典建立子单元(图7中未示出)、接口加载子单元(图7中未示出)和接口获取与调用子单元(图7中未示出)。
其中,所述字典建立子单元被配置为,用于在所述功能插件的启动过程中,通过所述功能插件建立一个字典,所述字典的健为服务名,值为所述服务名对应依赖服务的依赖服务接口。
所述接口加载子单元被配置为,用于通过所述宿主程序在运行时向所述字典加载健对应的依赖服务的依赖服务接口。
所述接口获取与调用子单元被配置为,用于根据被调用的依赖服务的服务名从所述字典中获取对应的依赖服务接口并调用。
本实施例提供的应用程序的运行装置可执行本公开方法实施例所提供的应用程序的运行方法,具备执行方法相应的功能模块和有益效果。
图8示出了本公开实施例提供的一种应用程序的运行装置的结构示意图,所述应用程序包括宿主程序和功能插件,所述应用程序运行于安卓操作系统,如图8所示,本实施例所述的应用程序的运行装置包括编译单元810、功能插件调用单元820、服务程序调用单元830和结果输出单元840。
所述编译单元810被配置为,用于在所述功能插件安装到所述宿主程序时进行编译。
所述功能插件调用单元820被配置为,用于宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件。
所述服务程序调用单元830被配置为,用于在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中。
所述结果输出单元840被配置为,用于在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
其中,所述编译单元810包括依赖服务确定与查询子单元811和依赖服务编译子单元812。
其中,所述依赖服务确定与查询子单元811被配置为,用于在宿主程序中安装所述功能插件的过程中,根据所述功能插件的代码进行编译,以确定所需调用的依赖服务,并根据所述依赖服务遍历宿主程序在所述管理器服务池中提供的依赖服务接口。
所述依赖服务编译子单元812被配置为,用于如果确定有匹配的依赖服务接口,则进行编译处理。
进一步地,所述服务程序调用单元830被配置为,还用于根据所述功能插件调用依赖服务的需求,在所述宿主程序的管理器服务池中查找所需的依赖服务接口,通过所述依赖服务接口加载所述宿主程序提供的至少一种依赖服务的服务程序,并根据所述依赖服务接口将输入数据传输给所述服务程序,所述依赖服务接口包括服务名称、调用所述依赖服务的输入参数、以及调用所述依赖服务的输出参数。
本实施例提供的应用程序的运行装置可执行本公开方法实施例所提供的应用程序的运行方法,具备执行方法相应的功能模块和有益效果。
于另一实施例中,本公开实施例所述应用程序运行于IOS操作系统,则本实施例所述应用程序的运行方法还包括在所述功能插件安装到所述宿主程序时进行编译,且所述编译的过程包括:
根据所述功能插件中配置的服务提供者接口定义中的依赖服务标识,在所述宿主程序提供的服务提供者接口实现内的依赖服务标识中进行匹配;
根据匹配到的依赖服务标识,在所述宿主程序中配置的服务实现集合中确定对应的依赖服务接口,并对所述依赖服务接口进行编译,以供所述功能插件通过所述依赖服务接口对依赖服务的服务程序进行调用。
于另一实施例中,在所述功能插件的启动过程中,所述应用程序的运行方法还包括:
通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象,通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口,以根据所述上下文对象确定被调用的依赖服务的依赖服务接口。
于另一实施例中,所述应用程序的运行方法中,通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象包括:通过所述功能插件建立一个字典,所述字典的健为服务名,值为所述服务名对应依赖服务的依赖服务接口;
通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口包括:通过所述宿主程序在运行时向所述字典加载健对应的依赖服务的依赖服务接口;
根据所述上下文对象确定被调用的依赖服务的依赖服务接口包括:根据被调用的依赖服务的服务名从所述字典中获取对应的依赖服务接口并调用。
于另一实施例中,所述应用程序的运行方法中在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序包括:
根据所述功能插件调用依赖服务的需求,在所述宿主程序的管理器服务池中查找所需的依赖服务接口,通过所述依赖服务接口加载所述宿主程序提供的至少一种依赖服务的服务程序,并根据所述依赖服务接口将输入数据传输给所述服务程序,所述依赖服务接口包括服务名称、调用所述依赖服务的输入参数、以及调用所述依赖服务的输出参数。
于另一实施例中,所述应用程序的运行方法中,所述应用程序运行于安卓操作系统,则所述应用程序的运行方法还包括在所述功能插件安装到所述宿主程序时进行编译,且所述编译的过程包括:
在宿主程序中安装所述功能插件的过程中,根据所述功能插件的代码进行编译,以确定所需调用的依赖服务,并根据所述依赖服务遍历宿主程序在所述管理器服务池中提供的依赖服务接口;
如果确定有匹配的依赖服务接口,则进行编译处理。
于另一实施例中,所述应用程序的运行方法中,所述至少一种依赖服务的接口实现是对所述至少一种依赖服务的通用实现程序进行调用的代码指令。
于另一实施例中,所述应用程序的运行方法中所述依赖服务包括下述至少一种:网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务。
于另一实施例中,所述应用程序的运行装置中,所述应用程序运行于IOS操作系统,则所述装置还包括编译单元,用于在所述功能插件安装到所述宿主程序时进行编译,且所述编译单元包括:
服务匹配子单元,用于根据所述功能插件中配置的服务提供者接口定义中的依赖服务标识,在所述宿主程序提供的服务提供者接口实现内的依赖服务标识中进行匹配;
接口确定与编译子单元,用于根据匹配到的依赖服务标识,在所述宿主程序中配置的服务实现集合中确定对应的依赖服务接口,并对所述依赖服务接口进行编译,以供所述功能插件通过所述依赖服务接口对依赖服务的服务程序进行调用。
于另一实施例中,所述应用程序的运行装置还包括功能插件启动单元,用于在所述功能插件的启动过程中,通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象,通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口,以根据所述上下文对象确定被调用的依赖服务的依赖服务接口。
于另一实施例中,所述应用程序的运行装置中,所述功能插件启动单元还包括:
字典建立子单元,用于在所述功能插件的启动过程中,通过所述功能插件建立一个字典,所述字典的健为服务名,值为所述服务名对应依赖服务的依赖服务接口;
接口加载子单元,用于通过所述宿主程序在运行时向所述字典加载健对应的依赖服务的依赖服务接口;
接口获取与调用子单元,用于根据被调用的依赖服务的服务名从所述字典中获取对应的依赖服务接口并调用。
于另一实施例中,所述应用程序的运行装置中,所述服务程序调用单元用于:
根据所述功能插件调用依赖服务的需求,在所述宿主程序的管理器服务池中查找所需的依赖服务接口,通过所述依赖服务接口加载所述宿主程序提供的至少一种依赖服务的服务程序,并根据所述依赖服务接口将输入数据传输给所述服务程序,所述依赖服务接口包括服务名称、调用所述依赖服务的输入参数、以及调用所述依赖服务的输出参数。
于另一实施例中,所述应用程序运行于安卓操作系统,则所述应用程序的运行装置还包括编译单元,用于在所述功能插件安装到所述宿主程序时进行编译,所述编译单元包括:
依赖服务确定与查询子单元,用于在宿主程序中安装所述功能插件的过程中,根据所述功能插件的代码进行编译,以确定所需调用的依赖服务,并根据所述依赖服务遍历宿主程序在所述管理器服务池中提供的依赖服务接口;
依赖服务编译子单元,用于如果确定有匹配的依赖服务接口,则进行编译处理。
于另一实施例中,所述应用程序的运行装置中,所述至少一种依赖服务的接口实现是对所述至少一种依赖服务的通用实现程序进行调用的代码指令。
于另一实施例中,所述应用程序的运行装置中,所述依赖服务包括下述至少一种:网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务。
下面参考图9,其示出了适于用来实现本公开实施例的电子设备900的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,电子设备900可以包括处理装置(例如中央处理器、图形处理器等)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储装置908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有电子设备900操作所需的各种程序和数据。处理装置901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
通常,以下装置可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及通信装置909。通信装置909可以允许电子设备900与其他设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备900,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从ROM 902被安装。在该计算机程序被处理装置901执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备运行一种应用程序,所述应用程序包括宿主程序和功能插件,所述应用程序的运行方法包括:
宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件;
在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中;
在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
以上描述仅为本公开实施例的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开实施例中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种应用程序的运行方法,所述应用程序包括宿主程序和功能插件,其特征在于,所述方法包括:
宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件;
在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中;
在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
2.根据权利要求1所述的方法,其特征在于,所述应用程序运行于IOS操作系统,则所述方法还包括在所述功能插件安装到所述宿主程序时进行编译,且所述编译的过程包括:
根据所述功能插件中配置的服务提供者接口定义中的依赖服务标识,在所述宿主程序提供的服务提供者接口实现内的依赖服务标识中进行匹配;
根据匹配到的依赖服务标识,在所述宿主程序中配置的服务实现集合中确定对应的依赖服务接口,并对所述依赖服务接口进行编译,以供所述功能插件通过所述依赖服务接口对依赖服务的服务程序进行调用。
3.根据权利要求1所述的方法,其特征在于,在所述功能插件的启动过程中,还包括:
通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象,通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口,以根据所述上下文对象确定被调用的依赖服务的依赖服务接口。
4.根据权利要求3所述的方法,其特征在于,通过所述功能插件为所述至少一种依赖服务在内存中建立一个上下文对象包括:通过所述功能插件建立一个字典,所述字典的健为服务名,值为所述服务名对应依赖服务的依赖服务接口;
通过所述宿主程序向所述上下文对象加载所述至少一种依赖服务的依赖服务接口包括:通过所述宿主程序在运行时向所述字典加载健对应的依赖服务的依赖服务接口;
根据所述上下文对象确定被调用的依赖服务的依赖服务接口包括:根据被调用的依赖服务的服务名从所述字典中获取对应的依赖服务接口并调用。
5.根据权利要求1所述的方法,其特征在于,在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序包括:
根据所述功能插件调用依赖服务的需求,在所述宿主程序的管理器服务池中查找所需的依赖服务接口,通过所述依赖服务接口加载所述宿主程序提供的至少一种依赖服务的服务程序,并根据所述依赖服务接口将输入数据传输给所述服务程序,所述依赖服务接口包括服务名称、调用所述依赖服务的输入参数、以及调用所述依赖服务的输出参数。
6.根据权利要求5所述的方法,其特征在于,所述应用程序运行于安卓操作系统,则所述方法还包括在所述功能插件安装到所述宿主程序时进行编译,且所述编译的过程包括:
在宿主程序中安装所述功能插件的过程中,根据所述功能插件的代码进行编译,以确定所需调用的依赖服务,并根据所述依赖服务遍历宿主程序在所述管理器服务池中提供的依赖服务接口;
如果确定有匹配的依赖服务接口,则进行编译处理。
7.根据权利要求1所述的方法,其特征在于,所述至少一种依赖服务的接口实现是对所述至少一种依赖服务的通用实现程序进行调用的代码指令。
8.根据权利要求1所述的方法,其特征在于,所述依赖服务包括下述至少一种:网络请求服务、图片加载服务、埋点服务、监控服务、日志服务、用户服务、以及分享服务。
9.一种应用程序的运行装置,所述应用程序包括宿主程序和功能插件,其特征在于,所述装置包括:
功能插件调用单元,用于宿主程序在运行过程中,若产生调用功能插件的触发条件,则调用并运行所述功能插件;
服务程序调用单元,用于在所述功能插件的运行过程中,若产生调用至少一种依赖服务的需求,则将输入数据传输给被调用的依赖服务的依赖服务接口,调用所述被调用的依赖服务的服务程序;其中,所述依赖服务接口配置在所述宿主程序中;
结果输出单元,用于在所述服务程序运行后,通过所述依赖服务接口所定义的反馈数据,将输出数据传输给所述功能插件,以完成对所述被调用的依赖服务的调用。
10.一种应用程序,其特征在于,包括如权利要求1-8任一项所述的宿主程序、以及至少一个如权利要求1-8任一项所述的功能插件。
11.一种电子设备,其上安装了宿主程序,所述宿主程序上安装了功能插件,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一项所述方法的指令。
12.一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如权利要求1-8任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910508706.1A CN110221877B (zh) | 2019-06-12 | 2019-06-12 | 一种应用程序的运行方法、装置、电子设备、及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910508706.1A CN110221877B (zh) | 2019-06-12 | 2019-06-12 | 一种应用程序的运行方法、装置、电子设备、及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110221877A true CN110221877A (zh) | 2019-09-10 |
CN110221877B CN110221877B (zh) | 2022-06-07 |
Family
ID=67816759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910508706.1A Active CN110221877B (zh) | 2019-06-12 | 2019-06-12 | 一种应用程序的运行方法、装置、电子设备、及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110221877B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258555A (zh) * | 2020-01-15 | 2020-06-09 | 上海知白智能科技有限公司 | 软件实现装置 |
CN112052051A (zh) * | 2020-08-31 | 2020-12-08 | 北京嘀嘀无限科技发展有限公司 | 插件处理方法、装置、设备及存储介质 |
CN112256358A (zh) * | 2020-10-21 | 2021-01-22 | 恒生电子股份有限公司 | 一种对象控制方法及装置 |
CN113407165A (zh) * | 2021-06-29 | 2021-09-17 | 北京字节跳动网络技术有限公司 | Sdk的生成和自升级方法、装置、可读介质和设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073520A (zh) * | 2010-12-30 | 2011-05-25 | 中国民航信息网络股份有限公司 | 一种c++应用程序版本动态管理系统和方法 |
CN107273142A (zh) * | 2017-07-12 | 2017-10-20 | 北京潘达互娱科技有限公司 | 程序更新方法、程序运行方法及装置 |
CN107479867A (zh) * | 2017-06-12 | 2017-12-15 | 百度在线网络技术(北京)有限公司 | 应用软件插件化运行方法及装置 |
CN108958842A (zh) * | 2018-07-12 | 2018-12-07 | 北京猫眼文化传媒有限公司 | 应用程序以及应用程序的业务插件使用方法 |
CN109542445A (zh) * | 2017-08-01 | 2019-03-29 | 北京京东尚科信息技术有限公司 | 一种Android插件化开发的方法和装置 |
-
2019
- 2019-06-12 CN CN201910508706.1A patent/CN110221877B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073520A (zh) * | 2010-12-30 | 2011-05-25 | 中国民航信息网络股份有限公司 | 一种c++应用程序版本动态管理系统和方法 |
CN107479867A (zh) * | 2017-06-12 | 2017-12-15 | 百度在线网络技术(北京)有限公司 | 应用软件插件化运行方法及装置 |
CN107273142A (zh) * | 2017-07-12 | 2017-10-20 | 北京潘达互娱科技有限公司 | 程序更新方法、程序运行方法及装置 |
CN109542445A (zh) * | 2017-08-01 | 2019-03-29 | 北京京东尚科信息技术有限公司 | 一种Android插件化开发的方法和装置 |
CN108958842A (zh) * | 2018-07-12 | 2018-12-07 | 北京猫眼文化传媒有限公司 | 应用程序以及应用程序的业务插件使用方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258555A (zh) * | 2020-01-15 | 2020-06-09 | 上海知白智能科技有限公司 | 软件实现装置 |
CN112052051A (zh) * | 2020-08-31 | 2020-12-08 | 北京嘀嘀无限科技发展有限公司 | 插件处理方法、装置、设备及存储介质 |
CN112256358A (zh) * | 2020-10-21 | 2021-01-22 | 恒生电子股份有限公司 | 一种对象控制方法及装置 |
CN113407165A (zh) * | 2021-06-29 | 2021-09-17 | 北京字节跳动网络技术有限公司 | Sdk的生成和自升级方法、装置、可读介质和设备 |
CN113407165B (zh) * | 2021-06-29 | 2023-04-07 | 抖音视界有限公司 | Sdk的生成和自升级方法、装置、可读介质和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110221877B (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110221877A (zh) | 一种应用程序的运行方法、装置、电子设备、及存储介质 | |
CN109375918A (zh) | 小程序的界面渲染方法、装置、电子设备和存储介质 | |
CN109743392A (zh) | 一种负载均衡方法、装置、电子设备及存储介质 | |
CN110324169B (zh) | 一种接口管理的方法和装置 | |
CN109558246A (zh) | 一种负载均衡方法、装置、电子设备及存储介质 | |
CN108962244A (zh) | 用于发送信息的方法和装置 | |
CN110391938A (zh) | 用于部署服务的方法和装置 | |
CN108846753A (zh) | 用于处理数据的方法和装置 | |
CN110069308A (zh) | 页面启动方法、装置、电子设备和存储介质 | |
CN111796865B (zh) | 一种字节码文件修改方法、装置、终端设备及介质 | |
CN110858202A (zh) | 数据库查询语句中where子句的生成方法和生成装置 | |
CN110300165A (zh) | 一种功能程序的调用方法、装置、设备及存储介质 | |
CN109117252A (zh) | 基于容器的任务处理的方法、系统及容器集群管理系统 | |
CN109815105A (zh) | 基于Btrace的应用程序测试方法和装置 | |
CN114500481B (zh) | 业务请求处理方法、系统和装置 | |
CN109726217A (zh) | 一种数据库操作方法、装置、设备及存储介质 | |
CN109032620A (zh) | 应用程序的配置文件生成方法和装置 | |
CN108958744A (zh) | 大数据分布式集群的部署方法、装置、介质及电子设备 | |
CN109669637A (zh) | 用于提供容器服务的系统、方法和装置 | |
CN108959294A (zh) | 一种访问搜索引擎的方法和装置 | |
CN109947423A (zh) | 代码生成方法、装置、终端和介质 | |
CN114222003A (zh) | 服务调用方法、系统、装置、设备及存储介质 | |
EP3872630A2 (en) | Request processing method and apparatus, electronic device, and computer storage medium | |
CN110134480A (zh) | 用户触发操作的处理方法、装置、电子设备和存储介质 | |
CN110377273A (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 |