CN105893094A - 应用程序插件化的实现方法和装置 - Google Patents

应用程序插件化的实现方法和装置 Download PDF

Info

Publication number
CN105893094A
CN105893094A CN201610201697.8A CN201610201697A CN105893094A CN 105893094 A CN105893094 A CN 105893094A CN 201610201697 A CN201610201697 A CN 201610201697A CN 105893094 A CN105893094 A CN 105893094A
Authority
CN
China
Prior art keywords
library file
feature card
dynamic library
interface
application program
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
Application number
CN201610201697.8A
Other languages
English (en)
Other versions
CN105893094B (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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201610201697.8A priority Critical patent/CN105893094B/zh
Publication of CN105893094A publication Critical patent/CN105893094A/zh
Application granted granted Critical
Publication of CN105893094B publication Critical patent/CN105893094B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

本发明提出一种应用程序插件化的实现方法和装置,该应用程序插件化的实现方法包括:获取应用程序的功能插件对应的动态库文件,所述动态库文件中包含预先定义的功能插件与应用程序间的接口文件;将所述动态库文件加载到内存中,并从所述动态库文件中获取接口文件;根据所述接口文件加载所述功能插件,并实现所述应用程序与所述功能插件之间的双向数据通信;将所述功能插件的内存路径发送给所述功能插件,以使所述功能插件根据所述内存路径自加载插件资源。该方法能够实现应用程序的插件化,从而可以减小APP包的大小,并且可以对功能插件进行动态更新,无需让用户更新整个APP包。

Description

应用程序插件化的实现方法和装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种应用程序插件化的实现方法和装置。
背景技术
随着移动互联网技术的发展,移动设备的使用已很普遍。用户可以在移动设备上安装应用程序(APP),以满足用户各种需求。
相关技术中,在生成APP时,一般是将模块的代码和资源打包成静态库,加载到APP工程中进行编译,最终链接到APP包中,所有模块的代码和资源均是包含在APP包中。
但是,上述技术存在如下问题:(1)随着功能模块的增多,APP包集成的静态库越多,APP包大小将随着增大,最终甚至可能因为包过大而无法通过移动设备***(如iOS***)公司的审核;(2)功能模块无法进行代码的动态更新,需要用户更新整个APP包。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种应用程序插件化的实现方法,该方法可以实现应用程序的插件化,从而可以减小APP包的大小,并且可以对功能插件进行动态更新,无需让用户更新整个APP包。
本发明的另一个目的在于提出一种应用程序插件化的实现装置。
为达到上述目的,本发明第一方面实施例提出的应用程序插件化的实现方法,包括:获取应用程序的功能插件对应的动态库文件,所述动态库文件中包含预先定义的功能插件与应用程序间的接口文件;将所述动态库文件加载到内存中,并从所述动态库文件中获取接口文件;根据所述接口文件加载所述功能插件,并实现所述应用程序与所述功能插件之间的双向数据通信;将所述功能插件的内存路径发送给所述功能插件,以使所述功能插件根据所述内存路径自加载插件资源。
本发明第一方面实施例提出的应用程序插件化的实现方法,通过加载动态库文件,可以根据动态库文件加载功能插件、保证应用程序与功能插件间的双向数据通信,以及实现功能插件自加载插件资源,可以在应用程序运行时动态加载功能插件,从而实现应用程序的插件化,当应用程序采用插件化管理后,可以减少APP包的大小,并且可以对功能插件进行动态更新,无需让用户更新整个APP包。
为达到上述目的,本发明第二方面实施例提出的应用程序插件化的实现装置,包括:第一获取模块,用于获取应用程序的功能插件对应的动态库文件,所述动态库文件中包含预先定义的功能插件与应用程序间的接口文件;第二获取模块,用于将所述动态库文件加载到内存中,并从所述动态库文件中获取接口文件;加载模块,用于根据所述接口文件加载所述功能插件,并实现所述应用程序与所述功能插件之间的双向数据通信;发送模块,用于将所述功能插件的内存路径发送给所述功能插件,以使所述功能插件根据所述内存路径自加载插件资源。
本发明第二方面实施例提出的应用程序插件化的实现装置,通过加载动态库文件,可以根据动态库文件加载功能插件、保证应用程序与功能插件间的双向数据通信,以及实现功能插件自加载插件资源,可以在应用程序运行时动态加载功能插件,从而实现应用程序的插件化,当应用程序采用插件化管理后,可以减少APP包的大小,并且可以对功能插件进行动态更新,无需让用户更新整个APP包。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例提出的应用程序插件化的实现方法的流程示意图;
图2是本发明另一个实施例提出的应用程序插件化的实现方法的流程示意图;
图3是本发明一个实施例提出的应用程序插件化的实现装置的结构示意图;
图4是本发明一个实施例提出的应用程序插件化的实现装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1是本发明一个实施例提出的应用程序插件化的实现方法的流程示意图。
参见图1,本实施例的方法包括:
S11:获取应用程序的功能插件对应的动态库文件,所述动态库文件中包含预先定义的功能插件与应用程序间的接口文件。
本发明实施例中,以应用程序是应用于iOS***的应用程序为例。
在开发应用程序时,可以将至少部分的功能模块独立进行开发,并以插件的形式动态加载到APP中。这些独立开发的功能模块可以称为功能插件。
在iOS***中,描述功能插件的文件称为动态库(framework)文件,framework文件中包含了代码和资源文件。
在开发APP时,可以定义功能插件与APP间的通信协议接口(简称为接口),并将定义得到的接口文件保存在动态库文件中。
其中,APP在需要加载功能插件时,可以从本地获取上述的动态库文件,或者,也可以从服务端获取上述的动态库文件。具体的,在生成动态库文件时,可以标识版本,当本地存在需要版本的动态库文件时,从本地获取上述的动态库文件,如果本地不存在需要版本的动态库文件时,则从服务端获取动态库文件。
进一步的,需要版本可以具体是指最新版本。在开发人员生成最新版本的动态库文件后,可以将最新版本的动态库文件保存在服务端。
S12:将所述动态库文件加载到内存中,并从所述动态库文件中获取接口文件。
在获取到上述的动态库文件后,可以利用OC中的NSBundle加载机制将动态库文件加载到内存中。
在将动态库文件加载到内存后,可以解析该动态库文件,从中获取接口文件。
S13:根据所述接口文件加载所述功能插件,并实现所述应用程序与所述功能插件之间的双向数据通信。
其中,可以从接口文件中获取接口名称,该接口名称是一个字符串。
之后,可以采用反射机制,利用接口名称动态生成接口类,并对其实例化,得到接口实例对象。
其中,反射机制是指JAVA反射机制,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为JAVA反射机制。
得到接口实例对象后,可以利用接口实例对象采用selector方式动态调用APP与功能插件间接口的方法,实现功能插件的加载。
selector是一个对象中用来选择方法来执行的名字,或者是当源代码编译时候用来替换名字的唯一的标示。selector自己并不能做任何事情。它简单的标示了一个方法。使得selector方法名称不同于普通字符串的唯一的事情是编译器确定selectors是独特的。使得selector有用的是(与运行时结合)它扮演着类似于一个动态函数指针,对于一个已经给与的名字,自动指向类所使用的适用的方法的实现。
在实现APP与功能插件间的双向数据通信时,可以采用委托机制,在上述采用selector方式调用方法时传递和返回委托对象,实现APP与插件间的双向数据通信。委托对象是指APP内与功能插件进行交互的类对象。
委托机制(Delegate)是iOS***中的一种协议,通过@protocol的方式实现,能够委托由他人帮助自身完成指定的事情。
S14:将所述功能插件的内存路径发送给所述功能插件,以使所述功能插件根据所述内存路径自加载插件资源。
其中,功能插件的内存路径是动态库文件的内存路径,该内存路径可以预先指定。
在加载功能插件后,APP可以利用委托机制,将功能插件的内存(bundle)路径发送给功能插件,由于功能插件运行时需要的插件资源都保存到内存路径对应的内存中,因此,功能插件获取到内存路径后,可以根据该内存路径从对应的内存中获取插件资源,实现插件资源的自加载,保证功能插件的成功运行。
本实施例中,通过加载动态库文件,可以根据动态库文件加载功能插件、保证应用程序与功能插件间的双向数据通信,以及实现功能插件自加载插件资源,可以在应用程序运行时动态加载功能插件,从而实现应用程序的插件化,当应用程序采用插件化管理后,可以减少APP包的大小,并且可以对功能插件进行动态更新,无需让用户更新整个APP包。
图2是本发明另一个实施例提出的应用程序插件化的实现方法的流程示意图。
参见图2,本实施例的方法包括:
S201:定义APP与功能插件之间的通信协议接口,生成接口文件。
其中,在开发APP时,可以由开发人员定义该接口,生成相应的接口文件(.h文件)。
S202:创建包含接口文件的动态库文件,并标识版本。
其中,可以在XCode中创建动态库(framework)工程,将上述生成的接口文件包含在动态库工程中,并在动态库工程中进行插件的功能开发,生成动态库文件,并标识版本。
S203:压缩动态库文件并保存在服务端。
例如,将动态库文件压缩成.zip格式。
S204:APP在需要加载功能插件时,进行版本匹配。
例如,APP确定需要加载的功能插件对应的需要的动态库文件的版本,并与本地存储的该功能插件对应的动态库文件的版本进行比较。
S205:APP判断本地存储的动态库文件是否是最新版本,若是,执行S207,否则执行S206。
S206:从服务端下载压缩后的动态库文件,并解压到APP的目录中。
其中,在确定需要版本的动态库文件后,可以从服务端下载相应版本的动态库文件。
S207:利用OC中的NSBundle加载机制将动态库文件加载到内存中。
例如,在本地存在最新版本的动态库文件,或者,从服务端下载并解压到APP的目录中后,可以从本地的APP目录中获取最新版本的动态库文件,并采用上述的机制加载到内存中。
S208:采用反射机制,利用接口名称动态生成接口类,并对其实例化,得到接口实例对象。
S209:利用接口实例对象采用selector方式动态调用APP与功能插件间接口的方法,实现功能插件的加载。
S210:采用委托机制,在上述采用selector方式调用接口的方法时传递和返回委托对象,实现APP与插件间的双向数据通信。
S211:利用委托机制,将功能插件的内存(bundle)路径发送给功能插件,实现功能插件的资源自加载。
本实施例中,通过将APP插件化后,可以将APP的至少部分功能模块独立进行开发,并以插件的形式动态加载到APP中,实现APP与插件之间从功能到资源上的深度解耦,并实现插件的动态更新,极大地减小了APP包的大小,同时,又能对功能进行动态更新,而无需让用户更新APP,提升用户体验。
图3是本发明一个实施例提出的应用程序插件化的实现装置的结构示意图。参见图3,该装置30包括:第一获取模块31、第二获取模块32、加载模块33和发送模块34。
第一获取模块31用于获取应用程序的功能插件对应的动态库文件,所述动态库文件中包含预先定义的功能插件与应用程序间的接口文件。
本发明实施例中,以应用程序是应用于iOS***的应用程序为例。
在开发应用程序时,可以将至少部分的功能模块独立进行开发,并以插件的形式动态加载到APP中。这些独立开发的功能模块可以称为功能插件。
在iOS***中,描述功能插件的文件称为动态库(framework)文件,framework文件中包含了代码和资源文件。
在开发APP时,可以定义功能插件与APP间的通信协议接口(简称为接口),并将定义得到的接口文件保存在动态库文件中。
其中,APP在需要加载功能插件时,可以从本地获取上述的动态库文件,或者,也可以从服务端获取上述的动态库文件。具体的,在生成动态库文件时,可以标识版本,当本地存在需要版本的动态库文件时,从本地获取上述的动态库文件,如果本地不存在需要版本的动态库文件时,则从服务端获取动态库文件。
进一步的,需要版本可以具体是指最新版本。在开发人员生成最新版本的动态库文件后,可以将最新版本的动态库文件保存在服务端。
第二获取模块32用于将所述动态库文件加载到内存中,并从所述动态库文件中获取接口文件。
在获取到上述的动态库文件后,可以利用OC中的NSBundle加载机制将动态库文件加载到内存中。
在将动态库文件加载到内存后,可以解析该动态库文件,从中获取接口文件。
加载模块33用于根据所述接口文件加载所述功能插件,并实现所述应用程序与所述功能插件之间的双向数据通信。
其中,可以从接口文件中获取接口名称,该接口名称是一个字符串。
之后,可以采用反射机制,利用接口名称动态生成接口类,并对其实例化,得到接口实例对象。
其中,反射机制是指JAVA反射机制,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为JAVA反射机制。
得到接口实例对象后,可以利用接口实例对象采用selector方式动态调用APP与功能插件间接口的方法,实现功能插件的加载。
在实现APP与功能插件间的双向数据通信时,可以采用委托机制,在上述采用selector方式调用方法时传递和返回委托对象,实现APP与插件间的双向数据通信。委托对象是指APP内与功能插件进行交互的类对象。
发送模块34用于将所述功能插件的内存路径发送给所述功能插件,以使所述功能插件根据所述内存路径自加载插件资源。
其中,功能插件的内存路径是动态库文件的内存路径,该内存路径可以预先指定。
在加载功能插件后,APP可以利用委托机制,将功能插件的内存(bundle)路径发送给功能插件,由于功能插件运行时需要的插件资源都保存到内存路径对应的内存中,因此,功能插件获取到内存路径后,可以根据该内存路径从对应的内存中获取插件资源,实现插件资源的自加载,保证功能插件的成功运行。
一些实施例中,参见图4,该装置30还包括:
第一生成模块35,用于生成所述接口文件。
其中,在开发APP时,可以由开发人员定义该接口,生成相应的接口文件(.h文件)。
第二生成模块36,用于将所述接口文件包含在所述动态库文件中,并标识所述动态库文件的版本。
其中,在开发APP时,可以由开发人员定义该接口,生成相应的接口文件(.h文件)。
保存模块37,用于对所述动态库文件进行压缩后保存在服务端。
例如,将动态库文件压缩成.zip格式。
相应的,第一获取模块31包括:
第一单元311,用于在应用程序需要加载所述功能插件时,判断本地是否存在需要加载的功能插件的需要版本的动态库文件;
第二单元312,用于如果本地存在需要版本的动态库文件,则在本地获取所述动态库文件;
第三单元313,用于如果本地不存在需要版本的动态库文件,则从服务端下载需要版本的动态库文件,并对下载的动态库文件进行解压,以获取解压后的动态库文件。
例如,在本地存在最新版本的动态库文件,或者,从服务端下载并解压到APP的目录中后,可以从本地的APP目录中获取最新版本的动态库文件,并采用上述的机制加载到内存中。
一些实施例中,参见图4,加载模块33包括:
第四单元331,用于从所述接口文件中获取接口名称;
第五单元332,用于采用反射机制,利用所述接口名称动态生成接口类,并进行实例化,得到接口实例对象;
第六单元333,用于利用接口实例对象,采用selector方式动态调用应用程序与功能插件间接口的方法,实现功能插件的加载。
一些实施例中,加载模块33包括:
第七单元334,用于利用委托机制,在调用所述接口的方法时,传递和返回委托对象,实现应用程序与所述功能插件间的双向数据通信。
一些实施例中,所述发送模块34具体用于:
利用委托机制,将功能插件的内存路径发送给功能插件。
可以理解的是,本实施例的装置与方法实施例对应,具体内容可以参见方法实施例中的相关描述,在此不再详细说明。
本实施例中,通过加载动态库文件,可以根据动态库文件加载功能插件、保证应用程序与功能插件间的双向数据通信,以及实现功能插件自加载插件资源,可以在应用程序运行时动态加载功能插件,从而实现应用程序的插件化,当应用程序采用插件化管理后,可以减少APP包的大小,并且可以对功能插件进行动态更新,无需让用户更新整个APP包。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (13)

1.一种应用程序插件化的实现方法,其特征在于,包括:
获取应用程序的功能插件对应的动态库文件,所述动态库文件中包含预先定义的功能插件与应用程序间的接口文件;
将所述动态库文件加载到内存中,并从所述动态库文件中获取接口文件;
根据所述接口文件加载所述功能插件,并实现所述应用程序与所述功能插件之间的双向数据通信;
将所述功能插件的内存路径发送给所述功能插件,以使所述功能插件根据所述内存路径自加载插件资源。
2.根据权利要求1所述的方法,其特征在于,还包括:
生成所述接口文件;
将所述接口文件包含在所述动态库文件中,并标识所述动态库文件的版本;
对所述动态库文件进行压缩后保存在服务端。
3.根据权利要求2所述的方法,其特征在于,所述获取应用程序的功能插件对应的动态库文件,包括:
在应用程序需要加载所述功能插件时,判断本地是否存在需要加载的功能插件的需要版本的动态库文件;
如果本地存在需要版本的动态库文件,则在本地获取所述动态库文件;
如果本地不存在需要版本的动态库文件,则从服务端下载需要版本的动态库文件,并对下载的动态库文件进行解压,以获取解压后的动态库文件。
4.根据权利要求1所述的方法,其特征在于,所述根据所述接口文件加载所述功能插件,包括:
从所述接口文件中获取接口名称;
采用反射机制,利用所述接口名称动态生成接口类,并进行实例化,得到接口实例对象;
利用接口实例对象,采用selector方式动态调用应用程序与功能插件间接口的方法,实现功能插件的加载。
5.根据权利要求1所述的方法,其特征在于,所述实现应用程序与所述功能插件间的双向数据通信,包括:
利用委托机制,在调用所述接口的方法时,传递和返回委托对象,实现应用程序与所述功能插件间的双向数据通信。
6.根据权利要求1所述的方法,其特征在于,所述将所述功能插件的内存路径发送给所述功能插件,包括:
利用委托机制,将功能插件的内存路径发送给功能插件。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述应用程序是应用于iOS***的应用程序。
8.一种应用程序插件化的实现装置,其特征在于,包括:
第一获取模块,用于获取应用程序的功能插件对应的动态库文件,所述动态库文件中包含预先定义的功能插件与应用程序间的接口文件;
第二获取模块,用于将所述动态库文件加载到内存中,并从所述动态库文件中获取接口文件;
加载模块,用于根据所述接口文件加载所述功能插件,并实现所述应用程序与所述功能插件之间的双向数据通信;
发送模块,用于将所述功能插件的内存路径发送给所述功能插件,以使所述功能插件根据所述内存路径自加载插件资源。
9.根据权利要求8所述的装置,其特征在于,还包括:
第一生成模块,用于生成所述接口文件;
第二生成模块,用于将所述接口文件包含在所述动态库文件中,并标识所述动态库文件的版本;
保存模块,用于对所述动态库文件进行压缩后保存在服务端。
10.根据权利要求9所述的装置,其特征在于,所述第一获取模块包括:
第一单元,用于在应用程序需要加载所述功能插件时,判断本地是否存在需要加载的功能插件的需要版本的动态库文件;
第二单元,用于如果本地存在需要版本的动态库文件,则在本地获取所述动态库文件;
第三单元,用于如果本地不存在需要版本的动态库文件,则从服务端下载需要版本的动态库文件,并对下载的动态库文件进行解压,以获取解压后的动态库文件。
11.根据权利要求8所述的装置,其特征在于,所述加载模块包括:
第四单元,用于从所述接口文件中获取接口名称;
第五单元,用于采用反射机制,利用所述接口名称动态生成接口类,并进行实例化,得到接口实例对象;
第六单元,用于利用接口实例对象,采用selector方式动态调用应用程序与功能插件间接口的方法,实现功能插件的加载。
12.根据权利要求8所述的装置,其特征在于,所述加载模块包括:
第七单元,用于利用委托机制,在调用所述接口的方法时,传递和返回委托对象,实现应用程序与所述功能插件间的双向数据通信。
13.根据权利要求8所述的装置,其特征在于,所述发送模块具体用于:
利用委托机制,将功能插件的内存路径发送给功能插件。
CN201610201697.8A 2016-03-31 2016-03-31 应用程序插件化的实现方法和装置 Active CN105893094B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610201697.8A CN105893094B (zh) 2016-03-31 2016-03-31 应用程序插件化的实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610201697.8A CN105893094B (zh) 2016-03-31 2016-03-31 应用程序插件化的实现方法和装置

Publications (2)

Publication Number Publication Date
CN105893094A true CN105893094A (zh) 2016-08-24
CN105893094B CN105893094B (zh) 2019-05-03

Family

ID=57013197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610201697.8A Active CN105893094B (zh) 2016-03-31 2016-03-31 应用程序插件化的实现方法和装置

Country Status (1)

Country Link
CN (1) CN105893094B (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325957A (zh) * 2016-08-31 2017-01-11 广州品唯软件有限公司 一种插件加载方法及设备
CN106648795A (zh) * 2016-12-29 2017-05-10 北京奇虎科技有限公司 应用程序更新方法及装置
CN107273142A (zh) * 2017-07-12 2017-10-20 北京潘达互娱科技有限公司 程序更新方法、程序运行方法及装置
CN107426278A (zh) * 2017-04-24 2017-12-01 阿里巴巴集团控股有限公司 H5应用的调用方法、装置和移动终端
CN107493336A (zh) * 2017-08-21 2017-12-19 北京北信源软件股份有限公司 实现客户端插件化的方法和装置、可读介质和存储控制器
CN107992308A (zh) * 2017-11-22 2018-05-04 竞技世界(北京)网络技术有限公司 一种安卓终端应用程序的插件化管理方法
CN108228264A (zh) * 2016-12-12 2018-06-29 北京国双科技有限公司 插件资源加载方法和装置
CN108279941A (zh) * 2016-12-31 2018-07-13 阿里巴巴集团控股有限公司 一种应用程序的压缩方法和装置
CN108681473A (zh) * 2018-05-18 2018-10-19 广州酷狗计算机科技有限公司 应用程序生成、运行方法、装置、计算机设备和存储介质
CN109491718A (zh) * 2018-09-13 2019-03-19 北京米文动力科技有限公司 一种插件加载方法及设备
CN109947407A (zh) * 2019-03-07 2019-06-28 腾讯科技(北京)有限公司 一种数据获取方法及装置
CN110096282A (zh) * 2019-05-15 2019-08-06 湖南快乐阳光互动娱乐传媒有限公司 一种基于插件化架构的数据处理方法及装置
CN110134457A (zh) * 2019-04-17 2019-08-16 深圳壹账通智能科技有限公司 插件加载方法和装置
CN110308949A (zh) * 2019-06-28 2019-10-08 深圳市酷开网络科技有限公司 插件化框架的实现方法、装置及计算机可读存储介质
CN110413343A (zh) * 2019-07-17 2019-11-05 深圳市酷开网络科技有限公司 一种即时的插件集成的方法、装置和计算机设备
CN110531981A (zh) * 2019-08-27 2019-12-03 珠海格力智能装备有限公司 视觉软件***及其应用方法
CN110750545A (zh) * 2019-09-03 2020-02-04 北京字节跳动网络技术有限公司 动态库热更新方法、装置、介质和设备
CN110874250A (zh) * 2019-11-20 2020-03-10 杭州天宽科技有限公司 工具厂商与app端的转换方法、***、装置及存储介质
CN111782504A (zh) * 2020-05-20 2020-10-16 车智互联(北京)科技有限公司 一种应用程序异常的诊断方法、移动终端及可读存储介质
CN111984299A (zh) * 2019-05-22 2020-11-24 青岛海信宽带多媒体技术有限公司 一种数据加载的方法和设备
CN112214250A (zh) * 2019-06-24 2021-01-12 北京京东尚科信息技术有限公司 一种应用程序组件的加载方法和装置
CN112416383A (zh) * 2020-01-21 2021-02-26 上海哔哩哔哩科技有限公司 golang程序热更新方法、装置以及计算机设备
CN112866182A (zh) * 2019-11-28 2021-05-28 浙江宇视科技有限公司 数据对接方法、装置和计算机可读存储介质
CN112948018A (zh) * 2021-03-01 2021-06-11 北京百度网讯科技有限公司 用于小程序的动态库加载方法、装置、设备及介质
CN114116048A (zh) * 2021-11-10 2022-03-01 北京乐驾科技有限公司 移动设备应用程序轻量化的实现方法以及装置
CN114489862A (zh) * 2022-02-16 2022-05-13 深圳市明泰智能技术有限公司 一种idev***的插件实现方法
CN116382796A (zh) * 2023-03-29 2023-07-04 上海视九信息科技有限公司 一种h5小程序运行器的插件管理方法、装置及电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561763A (zh) * 2009-04-30 2009-10-21 腾讯科技(北京)有限公司 一种实现动态链接库的方法和装置
US20100162277A1 (en) * 2008-12-22 2010-06-24 Electronics And Telecommunications Research Institute Of Daejeon Apparatus and method for executing robot application program
CN102141922A (zh) * 2010-01-29 2011-08-03 腾讯科技(深圳)有限公司 一种微内核插件化程序应用***及其实现方法
CN102195804A (zh) * 2011-03-10 2011-09-21 易程(苏州)软件股份有限公司 软件自动更新方法及其***
CN102520967A (zh) * 2011-12-28 2012-06-27 深圳市融创天下科技股份有限公司 一种创建与使用移动平台插件的方法、***和移动终端
CN103019819A (zh) * 2012-12-05 2013-04-03 上海创图网络科技发展有限公司 一种基于插件机制的动态库统一调度方法
CN103399792A (zh) * 2013-07-24 2013-11-20 佳都新太科技股份有限公司 基于Android的应用插件化实现方案
CN103927180A (zh) * 2014-04-21 2014-07-16 广州市久邦数码科技有限公司 一种基于安卓***的功能插件的实现方法及其***
CN104424002A (zh) * 2013-09-10 2015-03-18 中国科学院声学研究所 一种基于插件机制的动态加载组件方法和***
CN104834534A (zh) * 2015-06-09 2015-08-12 北京奇虎科技有限公司 扩展应用程序功能的方法、装置及***

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100162277A1 (en) * 2008-12-22 2010-06-24 Electronics And Telecommunications Research Institute Of Daejeon Apparatus and method for executing robot application program
CN101561763A (zh) * 2009-04-30 2009-10-21 腾讯科技(北京)有限公司 一种实现动态链接库的方法和装置
CN102141922A (zh) * 2010-01-29 2011-08-03 腾讯科技(深圳)有限公司 一种微内核插件化程序应用***及其实现方法
CN102195804A (zh) * 2011-03-10 2011-09-21 易程(苏州)软件股份有限公司 软件自动更新方法及其***
CN102520967A (zh) * 2011-12-28 2012-06-27 深圳市融创天下科技股份有限公司 一种创建与使用移动平台插件的方法、***和移动终端
CN103019819A (zh) * 2012-12-05 2013-04-03 上海创图网络科技发展有限公司 一种基于插件机制的动态库统一调度方法
CN103399792A (zh) * 2013-07-24 2013-11-20 佳都新太科技股份有限公司 基于Android的应用插件化实现方案
CN104424002A (zh) * 2013-09-10 2015-03-18 中国科学院声学研究所 一种基于插件机制的动态加载组件方法和***
CN103927180A (zh) * 2014-04-21 2014-07-16 广州市久邦数码科技有限公司 一种基于安卓***的功能插件的实现方法及其***
CN104834534A (zh) * 2015-06-09 2015-08-12 北京奇虎科技有限公司 扩展应用程序功能的方法、装置及***

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325957A (zh) * 2016-08-31 2017-01-11 广州品唯软件有限公司 一种插件加载方法及设备
CN108228264A (zh) * 2016-12-12 2018-06-29 北京国双科技有限公司 插件资源加载方法和装置
CN106648795A (zh) * 2016-12-29 2017-05-10 北京奇虎科技有限公司 应用程序更新方法及装置
CN108279941B (zh) * 2016-12-31 2021-06-15 阿里巴巴集团控股有限公司 一种应用程序的压缩方法和装置
CN108279941A (zh) * 2016-12-31 2018-07-13 阿里巴巴集团控股有限公司 一种应用程序的压缩方法和装置
CN107426278A (zh) * 2017-04-24 2017-12-01 阿里巴巴集团控股有限公司 H5应用的调用方法、装置和移动终端
CN107273142A (zh) * 2017-07-12 2017-10-20 北京潘达互娱科技有限公司 程序更新方法、程序运行方法及装置
CN107273142B (zh) * 2017-07-12 2021-04-23 北京龙之心科技有限公司 程序更新方法、程序运行方法及装置
CN107493336A (zh) * 2017-08-21 2017-12-19 北京北信源软件股份有限公司 实现客户端插件化的方法和装置、可读介质和存储控制器
CN107992308A (zh) * 2017-11-22 2018-05-04 竞技世界(北京)网络技术有限公司 一种安卓终端应用程序的插件化管理方法
CN107992308B (zh) * 2017-11-22 2020-10-20 竞技世界(北京)网络技术有限公司 一种安卓终端应用程序的插件化管理方法
CN108681473A (zh) * 2018-05-18 2018-10-19 广州酷狗计算机科技有限公司 应用程序生成、运行方法、装置、计算机设备和存储介质
CN109491718A (zh) * 2018-09-13 2019-03-19 北京米文动力科技有限公司 一种插件加载方法及设备
CN109947407A (zh) * 2019-03-07 2019-06-28 腾讯科技(北京)有限公司 一种数据获取方法及装置
CN110134457A (zh) * 2019-04-17 2019-08-16 深圳壹账通智能科技有限公司 插件加载方法和装置
CN110096282A (zh) * 2019-05-15 2019-08-06 湖南快乐阳光互动娱乐传媒有限公司 一种基于插件化架构的数据处理方法及装置
CN111984299A (zh) * 2019-05-22 2020-11-24 青岛海信宽带多媒体技术有限公司 一种数据加载的方法和设备
CN112214250A (zh) * 2019-06-24 2021-01-12 北京京东尚科信息技术有限公司 一种应用程序组件的加载方法和装置
CN112214250B (zh) * 2019-06-24 2024-05-17 北京京东尚科信息技术有限公司 一种应用程序组件的加载方法和装置
CN110308949A (zh) * 2019-06-28 2019-10-08 深圳市酷开网络科技有限公司 插件化框架的实现方法、装置及计算机可读存储介质
CN110413343A (zh) * 2019-07-17 2019-11-05 深圳市酷开网络科技有限公司 一种即时的插件集成的方法、装置和计算机设备
CN110531981A (zh) * 2019-08-27 2019-12-03 珠海格力智能装备有限公司 视觉软件***及其应用方法
CN110750545A (zh) * 2019-09-03 2020-02-04 北京字节跳动网络技术有限公司 动态库热更新方法、装置、介质和设备
CN110874250A (zh) * 2019-11-20 2020-03-10 杭州天宽科技有限公司 工具厂商与app端的转换方法、***、装置及存储介质
CN110874250B (zh) * 2019-11-20 2023-05-02 杭州天宽科技有限公司 工具厂商与app端的转换方法、***、装置及存储介质
CN112866182A (zh) * 2019-11-28 2021-05-28 浙江宇视科技有限公司 数据对接方法、装置和计算机可读存储介质
CN112866182B (zh) * 2019-11-28 2023-05-23 浙江宇视科技有限公司 数据对接方法、装置和计算机可读存储介质
CN112416383A (zh) * 2020-01-21 2021-02-26 上海哔哩哔哩科技有限公司 golang程序热更新方法、装置以及计算机设备
CN111782504A (zh) * 2020-05-20 2020-10-16 车智互联(北京)科技有限公司 一种应用程序异常的诊断方法、移动终端及可读存储介质
CN112948018B (zh) * 2021-03-01 2023-08-01 北京百度网讯科技有限公司 用于小程序的动态库加载方法、装置、设备及介质
CN112948018A (zh) * 2021-03-01 2021-06-11 北京百度网讯科技有限公司 用于小程序的动态库加载方法、装置、设备及介质
CN114116048A (zh) * 2021-11-10 2022-03-01 北京乐驾科技有限公司 移动设备应用程序轻量化的实现方法以及装置
CN114116048B (zh) * 2021-11-10 2023-12-01 北京乐驾科技有限公司 移动设备应用程序轻量化的实现方法以及装置
CN114489862A (zh) * 2022-02-16 2022-05-13 深圳市明泰智能技术有限公司 一种idev***的插件实现方法
CN116382796A (zh) * 2023-03-29 2023-07-04 上海视九信息科技有限公司 一种h5小程序运行器的插件管理方法、装置及电子设备
CN116382796B (zh) * 2023-03-29 2024-02-13 上海视九信息科技有限公司 一种h5小程序运行器的插件管理方法、装置及电子设备

Also Published As

Publication number Publication date
CN105893094B (zh) 2019-05-03

Similar Documents

Publication Publication Date Title
CN105893094A (zh) 应用程序插件化的实现方法和装置
US11467854B2 (en) Method and apparatus for loading multiple differing versions of a native library into a native environment
US10795660B1 (en) Live code updates
CN110502222B (zh) 外发依赖内部基础库的aar方法、装置、介质和设备
CN108319460B (zh) 应用程序安装包的生成方法、装置、电子设备及存储介质
CN102455912A (zh) 运行时扩展
CN106020877A (zh) ***环境配置自动更新方法及装置
CN109344619A (zh) 应用程序的热修复方法和装置
CN112965761B (zh) 一种数据处理方法、***、电子设备及存储介质
CN109857432A (zh) 一种游戏应用的热更新方法和装置
CN112965713B (zh) 可视化编辑器的开发方法、装置、设备及存储介质
CN113407165B (zh) Sdk的生成和自升级方法、装置、可读介质和设备
CN112650521B (zh) 软件开发工具包sdk热修复方法、装置与电子设备
CN112905220A (zh) 热修复方法、装置、设备及存储介质
CN105373384B (zh) 一种软件开发方法和装置
AU2016378425B2 (en) Application program running method and apparatus
CN105933887B (zh) 应用在不同双卡智能手机间的适配方法和装置
CN112732277B (zh) 一种java多服务应用自动安装部署的集成方法与***
CN107402749B (zh) 实现图片加载库的方法及装置
CN111625232B (zh) 应用程序安装包的生成方法、装置、可读介质和电子设备
CN108008984A (zh) 一种资源文件下载更新方法及装置
CN114153462A (zh) 客户端源码处理方法、装置、存储介质及电子设备
CN113377415A (zh) 应用发布方法及装置
CN111240657A (zh) 用于生成sdk的方法、装置和电子设备
CN110502251A (zh) 应用安装方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant