CN111142972B - 用于扩展应用程序的功能的方法、装置、系统及介质 - Google Patents

用于扩展应用程序的功能的方法、装置、系统及介质 Download PDF

Info

Publication number
CN111142972B
CN111142972B CN201911390474.0A CN201911390474A CN111142972B CN 111142972 B CN111142972 B CN 111142972B CN 201911390474 A CN201911390474 A CN 201911390474A CN 111142972 B CN111142972 B CN 111142972B
Authority
CN
China
Prior art keywords
service
plug
component
application program
function
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
CN201911390474.0A
Other languages
English (en)
Other versions
CN111142972A (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.)
Jingdong Technology Holding Co Ltd
Original Assignee
JD Digital Technology Holdings 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 JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN201911390474.0A priority Critical patent/CN111142972B/zh
Publication of CN111142972A publication Critical patent/CN111142972A/zh
Application granted granted Critical
Publication of CN111142972B publication Critical patent/CN111142972B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-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

用于扩展应用程序的功能的方法、装置、系统及介质
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种用于扩展应用程序的功能的方法、装置、系统及介质。
背景技术
应用程序在投入使用之后,随着业务场景的增加以及用户需求的多样化,时常需要扩展新的功能以适应新的业务场景或需求。
相关技术中,当需要对应用程序扩展新的功能时,通常需要对应用程序的主工程代码进行改造,在应用程序的配置文件中增加与新的功能适应的业务组件,这样不仅导致应用程序在扩展功能时程序代码改动较大,工作量繁多,操作复杂,而且如果组件新增的业务组件需要与应用程序中的其他组件进行相互调用时,还需要在两个组件之间作进程通信。
以安卓系统中运行的应用程序为例,当需要对该应用程序添加新的业务对应的组件util.aar时,需要改造应用程序的主工程代码使应用程序具备插件化能力,然后将util.aar加载到应用程序的主工程代码中。而且如果组件util.aar需要与应用程序中的其他组件进行相互调用时,还需要在两个组件之间作进程通信。更甚地,当临时使用完成后需要卸载组件util.aar时,如果组件util.aar被应用程序的其他组件调用了,那么卸载组件util.aar就会变得尤为困难和复杂。可见,相关技术中进行应用程序的功能扩展时操作复杂,工程量大,给技术开发带来很大的困难。
发明内容
有鉴于此,本公开提供了一种用于扩展应用程序的功能的方法、装置、系统及介质。
本公开的一个方面,提供了一种用于扩展应用程序的功能的方法。所述方法包括插件化所述应用程序中第一业务功能对应的第一业务组件,在插件化后的所述第一业务组件中添加第二业务插件,以使所述第一业务组件具备所述第二业务插件对应的第二业务功能,以及在所述第一业务组件添加完所述第二业务插件之后,响应于所述应用程序的启动,初始化所述第一业务组件,以使所述应用程序具备所述第二业务功能。
根据本公开的实施例,所述插件化所述应用程序中第一业务功能对应的第一业务组件,包括在所述第一业务组件的程序中配置用于加载所述第二业务插件的安装包文件的类加载器。
根据本公开的实施例,所述在插件化后的所述第一业务组件中添加第二业务插件,包括在插件化后的所述第一业务组件的资源目录中添加所述第二业务插件的信息,所述第二业务插件的信息用于在所述第一业务组件初始化时将所述第二业务插件的安装包文件载入所述第一业务组件。
根据本公开的实施例,在所述在插件化后的所述第一业务组件中添加第二业务插件之前,所述方法还包括模块化所述第二业务功能以得到所述第二业务模块,以及将所述第二业务模块处理为所述第二业务插件。
根据本公开的实施例,所述响应于所述应用程序的启动,初始化所述第一业务组件,包括在所述第一业务组件的初始化过程中,加载所述第二业务插件的安装包文件,以及基于所述安装包文件,在所述应用程序中配置第二业务插件对应的所述第二业务功能。
本公开的另一方面,提供了一种用于扩展应用程序的功能的装置。所述装置包括第一业务插件化模块、第一业务功能添加模块以及第一业务初始化模块。所述第一业务插件化模块用于插件化所述应用程序中第一业务功能对应的第一业务组件。所述第一业务功能添加模块用于在插件化后的所述第一业务组件中添加第二业务插件,以使所述第一业务组件具备所述第二业务插件对应的第二业务功能。所述第一业务初始化模块用于在所述第一业务组件添加完所述第二业务插件之后,响应于所述应用程序的启动,初始化所述第一业务组件,以使所述应用程序具备所述第二业务功能。
根据本公开的实施例,所述第一业务插件化模块,具体用于在所述第一业务组件的程序中配置用于加载所述第二业务插件的安装包文件的类加载器。
根据本公开的实施例,所述第一业务功能添加模块,具体用于在插件化后的所述第一业务组件的资源目录中添加所述第二业务插件的信息,所述第二业务插件的信息用于在所述第一业务组件初始化时将所述第二业务插件的安装包文件载入所述第一业务组件。
根据本公开的实施例,所述装置还包括第二业务插件获得模块。所述第二业务插件获得模块用于在所述在插件化后的所述第一业务组件中添加第二业务插件之前,模块化所述第二业务功能以得到所述第二业务模块,以及将所述第二业务模块处理为所述第二业务插件。
根据本公开的实施例,所述第一业务初始化模块,具体用于在所述第一业务组件的初始化过程中,加载所述第二业务插件的安装包文件,以及基于所述安装包文件,在所述应用程序中配置第二业务插件对应的所述第二业务功能。
本公开的另一方面,提供了一种用于扩展应用程序的功能的系统。所述系统包括一个或多个存储器以及一个或多个处理器。所述存储器存储有可执行指令。所述处理器执行所述可执行指令,以实现如上所述的方法。
本公开的另一方面,提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上所述的方法。
根据本公开的实施例,可以至少部分地避免在扩展应用程序的功能时,需要在应用程序的主工程配置文件内新增的业务的组件程序二导致工作量大操作复杂的问题,并因此不仅实现了在扩展应用程序的功能时对程序的改动量小、易于操作的效果,而且也实现了第一业务组件和第二业务插件之间的相互调用。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法、装置、系统及介质的应用场景;
图2示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法的流程图;
图3示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法中初始化第一业务组件的流程图;
图4示意性示出了根据本公开另一实施例的用于扩展应用程序的功能的方法的流程图;
图5示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法的构思示意图;
图6A示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法的应用实例流程图;
图6B示意性示出了图6A所示的应用实例的部分代码以及调用层次关系示意图;
图7示意性示出了根据本公开实施例的用于扩展应用程序的功能的装置的结构框图;以及
图8示意性示出了适于实现根据本公开实施例的用于扩展应用程序的功能的方法的计算机系统的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
本公开的实施例提供了一种用于扩展应用程序的功能的方法、装置、系统和介质。该方法包括首先插件化应用程序中第一业务功能对应的第一业务组件,然后在插件化后的第一业务组件中添加第二业务插件,以使第一业务组件具备第二业务插件对应的第二业务功能,之后在第一业务组件添加完第二业务插件之后,响应于应用程序的启动,初始化第一业务组件,以使应用程序具备第二业务功能。
根据本公开的实施例,通过对应用程序内部的第一业务组件进行局部插件化,并通过插件化后的第一业务组件加载第二业务插件来扩展应用程序的功能,可以有效避免在扩展应用程序的功能时对应用程序的主工程代码的修改,从而可以避免在扩展应用程序的功能时对应用程序的整体改动,减少工作量,降低操作难度。
更进一步地,由于第二业务插件是以插件的形式添加到第一业务组件中,因此,可以实现第一业务组件和第二业务插件的快速便捷的相互调用,避免了相关技术中那样需要设置专门的进程通信来来实现二者的函数调用。
图1示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法、装置、系统及介质的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104和服务器105。网络104是用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯应用程序的客户端,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。或者,根据用户在终端设备101、102、103中操作,向终端设备101、102、103提供客户端应用的下载、安装、升级等。例如,当应用程序功能扩展后,向终端设备101、102、103发布用于更新或升级该应用程序的客户端的数据。
需要说明的是,本公开实施例所提供的用于扩展应用程序的功能的方法一般可以由服务器105执行。相应地,本公开实施例所提供的用于扩展应用程序的功能的装置、系统及介质一般可以设置于服务器105中。本公开实施例所提供的用于扩展应用程序的功能的方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的用于扩展应用程序的功能的装置、系统及介质也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法的流程图。
如图2所示,根据本公开实施例的用于扩展应用程序的功能的方法可以包括操作S201~操作S203。
在操作S201,插件化应用程序中第一业务功能对应的第一业务组件。例如,当应用程序为运行于安卓android系统中的应用程序时,第一业务组件可以是aar组件。
根据本公开的一个实施例,可以在第一业务组件的程序中配置用于加载第二业务插件的安装包文件的类加载器,从而插件化所示第一业务组件。例如,第一业务组件可以通过类加载器dexpathclassloader自定义编写插件加载器,来加载插件第二业务插件。
在操作S202,在插件化后的第一业务组件中添加第二业务插件,以使第一业务组件具备第二业务插件对应的第二业务功能。例如,当应用程序为运行于安卓android系统中的应用程序时,第二业务插件可以是针对第二业务功能生成的dex.apk文件。
根据本公开的一个实施例,在插件化后的第一业务组件中添加第二业务插件具体可以是,在插件化后的第一业务组件的资源assets目录中添加第二业务插件的信息,其中,第二业务插件的信息用于在第一业务组件初始化时将第二业务插件的安装包文件(例如,dex.apk文件的全部内容)载入第一业务组件。
在操作S203,在第一业务组件添加完第二业务插件之后,响应于应用程序的启动,初始化第一业务组件,以使应用程序具备第二业务功能。
根据本公开的一个实施例,初始化第一业务组件的过程可以参考如下图3的示意。
图3示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法中操作S203初始化第一业务组件的流程图。
如图3所示,根据本公开的实施例,操作S203可以包括操作S213和操作S223。
在操作S213,在第一业务组件的初始化过程中,加载第二业务插件的安装包文件。
在操作S223,基于该安装包文件,在应用程序中配置第二业务插件对应的第二业务功能。
根据本公开的实施例的方法,在应用程序原本拥有第一业务组件的情况下,当需要对应用程序扩展第二业务功能时,可以首先针对第二业务功能生成相应的第二业务插件apk文件(android package文件,即安卓系统的应用软件安装包文件)。与此同时可以对第一业务组件插件化以增加第一业务组件的插件化能力,然后在第一业务组件中加载第二业务插件,这样之后第一业务组件就拥有了第二业务插件所对应的第二业务功能。此后,由于应用程序持续拥有第一业务组件,因此可以在应用程序的再次启动的过程中,对第一业务组件再次初始化,从而在应用程序中运行第二业务功能,使得应用程序具备了第二业务功能。
以应用程序为一购物应用为例举例说明。例如,在开发之初在该购物应用中配置有分享模块(即,第一业务组件),该分享模块用于将页面分享给微信好友的功能(即,第一业务功能)。随着网络应用的种类繁多,为满足用户多样化的需求,希望对该该购物应用添加分享到微博、微信朋友圈、今日头条或知乎等功能(即,第二业务功能)。根据本公开的实施例的方法,可以将分享模块进行插件化,在插件化后的分享模块中以加载插件的方式加载用于实现分享到微博、微信朋友圈、今日头条或知乎页面中的业务插件。在此过程中,该购物应用持续拥有分享模块,通过对分享模块的初始化就可以使该购物应用同时具备了将页面分享给微信好友、微博、微信朋友圈、今日头条或知乎等的功能。以此方式,可以不用对该购物应用整体进行改动,仅对分享模块进行局部插件化就可以扩展的该购物应用功能。
可见,本公开实施例的方法可以有效避免在扩展应用程序的功能时对应用程序的主工程代码的修改,从而可以避免在扩展应用程序的功能时对应用程序的整体改动,减少工作量,降低操作难度,有效提高应用程序扩展功能的效率,方便程序人员对应用程序的改造升级。更进一步地,由于第二业务插件是以插件的形式添加到第一业务组件中,因此,可以实现第一业务组件和第二业务插件的快速便捷的相互调用,避免了相关技术中那样需要设置专门的进程通信来来实现二者的函数调用。
图4示意性示出了根据本公开另一实施例的用于扩展应用程序的功能的方法的流程图。
如图4所示,根据本公开另一实施的用于扩展应用程序的功能的方法除了操作S201~操作S203以外,还可以包括操作S401和操作S402。
在操作S401,模块化所述第二业务功能以得到所述第二业务模块。在操作S402,将所述第二业务模块处理为所述第二业务插件。例如,针对第二业务功能编写相应的程序模块,并将该程序模块打包生成相应的第二业务插件apk文件,以便加载到插件化后的第一业务组件中。
图4中示意的操作S401和操作S402在操作S201之前执行仅为一种示例。根据本公开的实施例,操作S401和操作S402在操作S202之前执行即可。即在插件化后的第一业务组件中添加第二业务插件之前,可以执行操作S401和操作S402的方法流程来获得第二业务插件。
图5示意性示出了根据本公开实施例的用于扩展应用程序App的功能的方法的构思示意图。
如图5所示,根据本公开实施例的方法,在扩展应用程序App的功能时,可以使第一业务组件L1.aar具备插件化能力,在第一业务组件L1.aar的assets目录中集成第二业务插件L2.aar生成的apk壳。然后第一业务组件L1.aar再次初始化的时候,可以将第二业务插件L2.aar加载到应用程序App中。其中,第一业务组件L1.aar再次初始化时,应用程序App调用第一业务组件L1.aar中的初始化方法init(Context application),将第二业务插件L2.aar的全部文件内容传入应用程序App。以此方式,通过在第一业务组件L1.aar通过加载的方式嵌套第二业务插件L2.aar,就可以使应用程序App直接使用并调用第二业务插件L2.aar。
图6A示意性示出了根据本公开实施例的用于扩展应用程序的功能的方法的应用实例流程图。图6B示意性示出了图6A所示的应用实例的部分代码以及调用层次关系示意图。
参考图6A,结合图5的构思示意以及6B的代码示意,该应用实例可以包括操作S601~操作是604。
在操作S601,应用程序App原本包含第一业务组件L1.aar。此时,应用程序App可以直接调用第一业务组件L1.aar的函数(例如,a函数),其中,通过a函数可实现a逻辑(例如将页面分享到微信好友)。
在操作S602,将第二业务插件L2.aar打包成为dex.apk文件,然后注入到第一业务组件L1.aar的程序代码中的assets目录中。
在操作S603,对第一业务组件L1.aar增加局部插件化能力(例如,在第一业务组件L1.aar的程序代码中增加Dexpathclassloader类加载器。
在操作是604,第一业务组件L1.aar再次初始化,应用程序App包含了新的第一业务组件L1.aar。这样,当应用程序App调用第一业务组件L1.aar的a函数时,会在应用程序App增加第二业务插件可实现的逻辑(例如,不仅可以将页面分享给微信好友,还可以将页面分享到微博、微信朋友圈、今日头条或知乎等)。
可见,第一业务组件L1.aar无论是增加第二业务插件L2.aar与否,均使用相同的已有的原始方式给应用程序App提供接入。而第二业务插件L2.aar对应的dex.apk文件,通过第一业务组件L1.aar的局部插件加载方法,被第一业务组件L1.aar加载使用。
根据本公开实施例的用于扩展应用程序的方法,可以在应用程序的组件内实现插件化部分功能,并且可以实现组件的嵌套引用,而且第一业务组件提供给应用程序的接入方式可以保持不变。另外,通过组件内部的插件化技术来添加新的业务功能,避免应用程序的主工程需要同时包含多个组件,一方面避免应用程序的主工程代码的配置,另一方面避免组件之间的进程通信。而且组件可以灵活添加和删除新增的插件,无需通知主工程开发者,可以方便应用程序中新增业务功能的扩展和下架。
图7示意性示出了根据本公开实施例的用于扩展应用程序的功能的装置700的结构框图。
如图7所示,根据本公开实施例的用于扩展应用程序的功能的装置700可以包括第一业务插件化模块710、第一业务功能添加模块720、以及第一业务初始化模块730。该装置700可以用于实现参考图2~图6B所描述的方法。
第一业务插件化模块710用于插件化所述应用程序中第一业务功能对应的第一业务组件。根据本公开的实施例,所述第一业务插件化模块710具体用于在所述第一业务组件的程序中配置用于加载所述第二业务插件的安装包文件的类加载器。
第一业务功能添加模块720用于在插件化后的所述第一业务组件中添加第二业务插件,以使所述第一业务组件具备所述第二业务插件对应的第二业务功能。根据本公开的实施例,第一业务功能添加模块720具体用于在插件化后的所述第一业务组件的资源目录中添加所述第二业务插件的信息,所述第二业务插件的信息用于在所述第一业务组件初始化时将所述第二业务插件的安装包文件载入所述第一业务组件。
第一业务初始化模块730用于在所述第一业务组件添加完所述第二业务插件之后,响应于所述应用程序的启动,初始化所述第一业务组件,以使所述应用程序具备所述第二业务功能。根据本公开的实施例,所述第一业务初始化模块730具体用于在所述第一业务组件的初始化过程中,加载所述第二业务插件的安装包文件,以及基于所述安装包文件,在所述应用程序中配置第二业务插件对应的所述第二业务功能。
根据本公开的实施例,所述装置700还包括第二业务插件获得模块740。第二业务插件获得模块740用于在所述在插件化后的所述第一业务组件中添加第二业务插件之前,模块化所述第二业务功能以得到所述第二业务模块,以及将所述第二业务模块处理为所述第二业务插件。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一业务插件化模块710、第一业务功能添加模块720、第一业务初始化模块730、以及第二业务插件获得模块740中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一业务插件化模块710、第一业务功能添加模块720、第一业务初始化模块730、以及第二业务插件获得模块740中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一业务插件化模块710、第一业务功能添加模块720、第一业务初始化模块730、以及第二业务插件获得模块740中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图8示意性示出了适于实现根据本公开实施例的用于扩展应用程序的功能的方法的计算机系统800的方框图。图8示出的计算机系统800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,根据本公开实施例的计算机系统800包括处理器801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。处理器801例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器801还可以包括用于缓存用途的板载存储器。处理器801可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 803中,存储有计算机系统800操作所需的各种程序和数据。处理器801、ROM802以及RAM 803通过总线804彼此相连。处理器801通过执行ROM 802和/或RAM 803中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 802和RAM 803以外的一个或多个存储器中。处理器801也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,计算机系统800还可以包括输入/输出(I/O)接口805,输入/输出(I/O)接口805也连接至总线804。系统800还可以包括连接至I/O接口805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被处理器801执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 802和/或RAM 803和/或ROM 802和RAM 803以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (12)

1.一种用于扩展应用程序的功能的方法,包括:
插件化所述应用程序中第一业务功能对应的第一业务组件,其中,所述应用程序的主工程代码不包括所述第一业务组件的代码;
在插件化后的所述第一业务组件中以插件的形式添加第二业务插件,以使所述第一业务组件具备所述第二业务插件对应的第二业务功能;以及
在所述第一业务组件添加完所述第二业务插件之后,响应于所述应用程序的启动,初始化所述第一业务组件,以使所述应用程序具备所述第二业务功能。
2.根据权利要求1所述的方法,其中,所述插件化所述应用程序中第一业务功能对应的第一业务组件包括:
在所述第一业务组件的程序中配置用于加载所述第二业务插件的安装包文件的类加载器。
3.根据权利要求1所述的方法,其中,所述在插件化后的所述第一业务组件中添加第二业务插件包括:
在插件化后的所述第一业务组件的资源目录中添加所述第二业务插件的信息,所述第二业务插件的信息用于在所述第一业务组件初始化时将所述第二业务插件的安装包文件载入所述第一业务组件。
4.根据权利要求1所述的方法,其中,在所述在插件化后的所述第一业务组件中添加第二业务插件之前,所述方法还包括:
模块化所述第二业务功能以得到第二业务模块;以及
将所述第二业务模块处理为所述第二业务插件。
5.根据权利要求1所述的方法,其中,所述响应于所述应用程序的启动,初始化所述第一业务组件包括:
在所述第一业务组件的初始化过程中,加载所述第二业务插件的安装包文件;以及
基于所述安装包文件,在所述应用程序中配置第二业务插件对应的所述第二业务功能。
6.一种用于扩展应用程序的功能的装置,包括:
第一业务插件化模块,用于插件化所述应用程序中第一业务功能对应的第一业务组件,其中,所述应用程序的主工程代码不包括所述第一业务组件的代码;
第一业务功能添加模块,用于在插件化后的所述第一业务组件中以插件的形式添加第二业务插件,以使所述第一业务组件具备所述第二业务插件对应的第二业务功能;以及
第一业务初始化模块,用于在所述第一业务组件添加完所述第二业务插件之后,响应于所述应用程序的启动,初始化所述第一业务组件,以使所述应用程序具备所述第二业务功能。
7.根据权利要求6所述的装置,其中,所述第一业务插件化模块具体用于:
在所述第一业务组件的程序中配置用于加载所述第二业务插件的安装包文件的类加载器。
8.根据权利要求6所述的装置,其中,所述第一业务功能添加模块具体用于:
在插件化后的所述第一业务组件的资源目录中添加所述第二业务插件的信息,所述第二业务插件的信息用于在所述第一业务组件初始化时将所述第二业务插件的安装包文件载入所述第一业务组件。
9.根据权利要求6所述的装置,其中,所述装置还包括:
第二业务插件获得模块,用于在所述在插件化后的所述第一业务组件中添加第二业务插件之前,模块化所述第二业务功能以得到第二业务模块,以及将所述第二业务模块处理为所述第二业务插件。
10.根据权利要求6所述的装置,其中,所述第一业务初始化模块具体用于:
在所述第一业务组件的初始化过程中,加载所述第二业务插件的安装包文件;以及
基于所述安装包文件,在所述应用程序中配置第二业务插件对应的所述第二业务功能。
11.一种用于扩展应用程序的功能的系统,包括:
一个或多个存储器,存储有可执行指令;以及
一个或多个处理器,执行所述可执行指令,以实现根据权利要求1~5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~5中任一项所述的方法。
CN201911390474.0A 2019-12-27 2019-12-27 用于扩展应用程序的功能的方法、装置、系统及介质 Active CN111142972B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911390474.0A CN111142972B (zh) 2019-12-27 2019-12-27 用于扩展应用程序的功能的方法、装置、系统及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911390474.0A CN111142972B (zh) 2019-12-27 2019-12-27 用于扩展应用程序的功能的方法、装置、系统及介质

Publications (2)

Publication Number Publication Date
CN111142972A CN111142972A (zh) 2020-05-12
CN111142972B true CN111142972B (zh) 2021-10-01

Family

ID=70521680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911390474.0A Active CN111142972B (zh) 2019-12-27 2019-12-27 用于扩展应用程序的功能的方法、装置、系统及介质

Country Status (1)

Country Link
CN (1) CN111142972B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111796802B (zh) * 2020-06-30 2023-09-12 北京字节跳动网络技术有限公司 功能包生成方法、装置和电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544005A (zh) * 2013-09-10 2014-01-29 Tcl集团股份有限公司 一种Android自定义控件的扩展开发方法及装置
CN103927180A (zh) * 2014-04-21 2014-07-16 广州市久邦数码科技有限公司 一种基于安卓系统的功能插件的实现方法及其系统
CN104834534A (zh) * 2015-06-09 2015-08-12 北京奇虎科技有限公司 扩展应用程序功能的方法、装置及系统
US9430207B1 (en) * 2013-03-13 2016-08-30 MobileForce Software, Inc. Automated cross-platform native mobile application generation with cloud driven user interface and workflow synthesis
CN109254762A (zh) * 2018-08-23 2019-01-22 深圳市默贝克驱动技术有限公司 一种开放式驱动器软件平台

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014159943A2 (en) * 2013-03-14 2014-10-02 Bitvore Corp. Dynamically loaded plugin architecture
CN103399792A (zh) * 2013-07-24 2013-11-20 佳都新太科技股份有限公司 基于Android的应用插件化实现方案
CN104731625B (zh) * 2015-03-27 2019-02-26 北京奇虎科技有限公司 一种加载插件的方法、装置和移动终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430207B1 (en) * 2013-03-13 2016-08-30 MobileForce Software, Inc. Automated cross-platform native mobile application generation with cloud driven user interface and workflow synthesis
CN103544005A (zh) * 2013-09-10 2014-01-29 Tcl集团股份有限公司 一种Android自定义控件的扩展开发方法及装置
CN103927180A (zh) * 2014-04-21 2014-07-16 广州市久邦数码科技有限公司 一种基于安卓系统的功能插件的实现方法及其系统
CN104834534A (zh) * 2015-06-09 2015-08-12 北京奇虎科技有限公司 扩展应用程序功能的方法、装置及系统
CN109254762A (zh) * 2018-08-23 2019-01-22 深圳市默贝克驱动技术有限公司 一种开放式驱动器软件平台

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《 基于自修改与动态加载的Android应用保护技术研究》;王恺;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20180815;第2018年卷(第8期);全文 *

Also Published As

Publication number Publication date
CN111142972A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
WO2017166447A1 (zh) 内核模块加载方法和装置
CN111427579A (zh) 插件、应用程序实现方法及系统和计算机系统及存储介质
US9733977B2 (en) Distributed processing system, distributed processing device, distributed processing method, and distributed processing program
CN113127361B (zh) 应用程序的开发方法、装置、电子设备和存储介质
CN113138768B (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
WO2018090871A1 (zh) 应用业务提示方法及应用业务提示装置
CN107800779B (zh) 优化负载均衡的方法及系统
CN109408256B (zh) 应用调用方法和装置
CN114564280A (zh) 一种运行时动态加载接口实现软件包的方法及系统
CN111142972B (zh) 用于扩展应用程序的功能的方法、装置、系统及介质
CN112214250A (zh) 一种应用程序组件的加载方法和装置
US10997269B1 (en) Using web application components with different web application frameworks in a web application
CN111399928B (zh) 应用程序的启动方法、装置、电子设备及可读存储介质
CN113127430A (zh) 镜像信息处理方法、装置、计算机可读介质及电子设备
CN106843895B (zh) 用于处理请求的方法、系统和可读存储介质
CN113805858B (zh) 持续部署脚本语言开发的软件的方法和装置
CN116431137A (zh) 跨开发框架的组件转换方法、处理系统和组件转换装置
US11163622B1 (en) Web application implementing a shared set of identifiers for handling links to web application plugins
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
CN112579192B (zh) 信息处理方法、装置、系统和计算机可读存储介质
CN113805878B (zh) 插件工程化方法、装置、计算机系统和介质
CN114706656A (zh) 创建容器镜像的方法、装置、电子设备和计算机可读介质
CN113703787A (zh) 安装包处理方法、装置、电子设备、计算机可读存储介质
CN116737254A (zh) 类加载方法、装置、设备及介质
CN116382719A (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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.