CN104424002A - 一种基于插件机制的动态加载组件方法和系统 - Google Patents
一种基于插件机制的动态加载组件方法和系统 Download PDFInfo
- Publication number
- CN104424002A CN104424002A CN201310409594.7A CN201310409594A CN104424002A CN 104424002 A CN104424002 A CN 104424002A CN 201310409594 A CN201310409594 A CN 201310409594A CN 104424002 A CN104424002 A CN 104424002A
- Authority
- CN
- China
- Prior art keywords
- interface
- component
- plug
- assembly
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于插件机制的动态加载组件方法和系统,所述方法包括:应用程序或组件在接收到需要调用其它组件中的相应功能指令时,查找所述其它组件,所述其它组件提供标准插件接口,具有唯一标识其身份的“MIME Type”;查找到所述组件后,将所述组件加载到内存中,并获取创建所述组件实例的接口以及调用所述组件的相应功能接口;在不需要所述的相应功能时,调用卸载组件接口,将所述其他组件卸载。本发明实施例所述接口为标准插件接口,在编译时不链接组件,在应用程序启动时不加载不必要的组件,节省了内存,避免了针对不同业务形态的嵌入式系统生成不同版本的应用程序。
Description
技术领域
本发明涉及计算机应用程序发现和组件加载技术领域,尤其涉及一种基于插件机制的动态加载组件方法和系统。
背景技术
目前,组件技术被广泛应用于嵌入式系统中。在嵌入式系统中,系统的业务形态较多,不同形态下中间件或应用程序的功能不同,需加载的组件也不同,现有技术通常是在编译时必须链接组件,这样对于相同的中间件或应用程序,需要为每个业务形态的系统链接不同的组件,生成不同版本,使用这种方法使得中间件或应用程序后续的软件维护工作量大。此外,嵌入式系统包括内存在内的硬件资源非常有限,编译链接组件库后,在应用程序启动时就加载所有组件,不必要地耗费了内存。
现有动态加载组件流程都是私有的,都是通过定义一些私有函数接口实现对组件库的查找和对组件库方法的调用,这种方法限制了其通用型,封装的接口只对某个具体的组件库有效,对别的组件库就没有作用了。
发明内容
本发明的目的在于,为克服上述问题,本发明提出一种基于插件机制的动态加载组件方法和系统。
为实现上述目的,本发明提供了一种嵌入式系统的动态加载组件的方法,所述方法包含:
步骤101)封装组件库;
步骤102)当某个应用程序或组件收到需要调用另一个组件中的相应功能指令时,依据标识该另一组件身份的“MIME Type”,遍历系统中的各组件库的“MIMEType”来查找所述其它组件;
步骤103)当查找到所需组件后,在内存中加载所需组件,并获取创建所需组件实例的接口以及调用所需组件的相应功能接口;
其中,所有组件均具有唯一一个标识其身份的“MIME Type”。
上述步骤103)之后还包含:
调用卸载组件接口,卸载加载的组件。
采用插件标准NPAPI接口函数封装组件库。
采用插件标准NPAPI接口函数封装组件库的方法具体包含如下步骤:
在编译组件库的时候加入npruntime.h、np_entry.cpp、npn_gate.cpp、npp_gate.cpp以及设置插件调用接口的def文件;所述npruntime.h为头文件,np_entry.cpp、npn_gate.cpp、npp_gate.cpp为接口函数,且接口函数np_entry.cpp、npn_gate.cpp和npp_gate.cpp定义在npruntime.h头文件中;
其中,
np_entry.cpp中定义了三个接口,分别是:
NP_GetEntryPoints–在插件加载之后立即调用该接口,用于浏览器获取所有可能需要调用的API函数的指针;
NP_Initialize–为插件提供全局初始化;
NP_Shutdown–为插件提供全局反初始化;
npn_gate.cpp文件用于实现20个函数接口,且这些接口是由浏览器实现的;在插件实例初始化的时候,将浏览器实现的这些函数的入口地址保存到一个NPNetscapeFuncs结构中,这些函数的实现就直接根据NPNetscapeFuncs结构中的入口地址调用浏览器实现的相关功能;且在开发插件时只需要调用NPN_开头的全局函数即可;
npp_gate.cpp文件用于实现包含如下几个函数接口:
NPP_Shutdown():在卸载一个插件DLL之前及删除任何插件实例之后调用;
NPP_New():在创建一个插件实例时调用,用来初始化插件的实例数据结构;
NPP_Destroy():在删除一个插件实例时调用,用于释放为插件实例所分配的空间;
NPP_Get MIME Description():仅用于Unix环境,用于获取由该插件所支持的MIME类型;
其中,Def文件用来设置插件供外部调用的接口,接口一般有三个,分别是NP_GetEntryPoints、NP_Initialize和NP_Shutdown;
当组件库完成封装之后,如果某个应用程序或组件需要调用采用插件标准NPAPI接口函数封装的组件库的时候,通过调用NP_GetEntryPoints、NP_Initialize和NP_Shutdown这三个接口实现对组件库方法的调用。浏览器在组件加载后调用NP_GetEntryPoints接口,获取所有可能需要调用的API函数的指针,获取的函数指针中就包含有NP_Initialize接口函数指针;然后调用NP_Initialize接口对组件进行全局初始化,初始化后获得一系列NPN类和NPP类函数接口的指针,获得的NPP类函数接口的指针中就包含有NPP_Get MIME Description接口函数指针;通过调用NPP_Get MIME Description接口函数,就能获得该组件支持的“MIME Type”。
遍历系统中各组件库的特征接口进而查找所需组件;
组件封装之后,把封装好的组件文件放在指定目录下,当解析页面遇到需要调用组件的方法时,加载所需组件;加载所需组件前,应用程序或组件首先遍历系统中的各组件库的“MIME Type”来查找所述组件,找到与指定所需组件的“MIMEType”值相同的组件,进而加载所需组件。
上述步骤103)进一步包含:
加载组件时会调用NP_Initialize()进行初始化,初始化后获得一系列NPN类和NPP类函数接口的指针,然后调用NPP_New()函数接口创建组件实例并初始化,实例对象的构造函数中会生成ScriptablePluginObject对象,创建组件实例后,当遇到需要调用组件中的方法,根据组件方法的名称,去调用ScriptablePluginObject:HasMethod来判断是否有这个方法,如果有这个方法,则会触发ScriptablePluginObject::invoke函数运行,invoke函数内部根据方法名称实现对应的操作。
此外,本发明还提供了一种嵌入式系统的动态加载组件的系统,所述系统包含:
封装模块,用于把组件用插件标准NPAPI接口封装,实现像调用标准插件那样通过标准接口去查找组件并调用组件的方法;
查找模块,用于遍历存放有多个组件库的目录,寻找到所需要调用的组件库;和调用模块,用于查找所需组件库后去调用具体的方法实现相应的功能。
与现有技术相比,本发明的技术优势在于:本发明内容是基于标准插件流程的,封装组件库所用的接口函数不是自己定义的私有接口函数,而是插件标准NPAPI接口函数。本专利发明内容的的封装规则同时适用于多个组件库,组件库只要按本专利的方法封装,第三方库或者应用程序就可以通过标准接口实现对组件库的查找以及对组件库方法的调用,不用具体区分是哪个组件库,大大提高了动态加载组件的通用性。
附图说明
图1是本发明实施例的嵌入式浏览器动态查找和加载组件流程示意图;
图2是本发明实施例嵌入式系统组件加载方法示意图。
具体实施方式
下面通过附图和实施例,对本发明实施例的技术方案做进一步的详细描述。
本发明提供了一种基于插件机制的动态加载组件方法,所述方法包括:
应用程序或组件在接收到需要调用标准插件NPAPI封装的其它组件中的相应功能指令时,查找所述其它组件,所述其它组件具有唯一标识其身份的“MIME Type”;
查找到所述组件后,将所述组件加载到内存中,并获取创建所述组件实例的接口以及调用所述组件的相应功能接口;
在不需要所述的相应功能时,调用卸载组件接口,将所述其他组件卸载。
上述其它组件使用标准插件接口NPAPI封装;
上述查找其他组件的方法符合标准插件加载过程,具体为:遍历系统中各组件库的特征接口来查找所述其它组件;加载所述其它组件前,应用程序或组件首先会取得平台上存在的所有所述其它组件类型,保存所述其它组件的路径和名称,然后在解析网页遇到指定插件时,会去遍历系统中的各组件库的“MIME Type”值,找到与指定所述其它组件的“MIME Type”值相同的组件库,进而加载正确的所述其它组件。
优选地,应用程序或组件启动时不加载所述其它组件。
优选地,应用程序在编译阶段时不链接所述其它组件。
优选地,所述其它组件具有唯一标识其身份的“MIME Type”,具体为:不同的所述其它组件拥有不同的“MIME Type”类型,这是表示所述其它组件本身唯一的标识。应用程序或组件就是通过此类型标识来识别特定的插件,进而调用所述其它组件的API函数。
采用插件标准NPAPI接口函数封装组件库的方法具体包含如下步骤:
在编译组件库的时候加入npruntime.h、np_entry.cpp、npn_gate.cpp、npp_gate.cpp以及设置插件调用接口的def文件;所述npruntime.h为头文件,np_entry.cpp、npn_gate.cpp、npp_gate.cpp为接口函数,且接口函数np_entry.cpp、npn_gate.cpp和npp_gate.cpp定义在npruntime.h头文件中;
其中,
np_entry.cpp中定义了三个接口,分别是:
NP_GetEntryPoints–在插件加载之后立即调用该接口,用于浏览器获取所有可能需要调用的API函数的指针;
NP_Initialize–为插件提供全局初始化;
NP_Shutdown–为插件提供全局反初始化;
npn_gate.cpp文件用于实现20个函数接口,且这些接口是由浏览器实现的;在插件实例初始化的时候,将浏览器实现的这些函数的入口地址保存到一个NPNetscapeFuncs结构中,这些函数的实现就直接根据NPNetscapeFuncs结构中的入口地址调用浏览器实现的相关功能;且在开发插件时只需要调用NPN_开头的全局函数即可;
npp_gate.cpp文件用于实现包含如下几个函数接口:
NPP_Shutdown():在卸载一个插件动态链接库之前及删除任何插件实例之后调用;
NPP_New():在创建一个插件实例时调用,用来初始化插件的实例数据结构;
NPP_Destroy():在删除一个插件实例时调用,用于释放为插件实例所分配的空间;
NPP_Get MIME Description():仅用于Unix环境,用于获取由该插件所支持的MIME类型;
其中,Def文件用来设置插件供外部调用的接口,接口一般有三个,分别是NP_GetEntryPoints、NP_Initialize和NP_Shutdown;
当组件库完成封装之后,如果某个应用程序或组件需要调用采用插件标准NPAPI接口函数封装的组件库的时候,通过调用NP_GetEntryPoints、NP_Initialize和NP_Shutdown这三个接口实现对组件库方法的调用。浏览器在组件加载后调用NP_GetEntryPoints接口,获取所有可能需要调用的API函数的指针,获取的函数指针中就包含有NP_Initialize接口函数指针;然后调用NP_Initialize接口对组件进行全局初始化,初始化后获得一系列NPN类和NPP类函数接口的指针,获得的NPP类函数接口的指针中就包含有NPP_Get MIME Description接口函数指针;通过调用NPP_GetMIME Description接口函数,就能获得该组件支持的“MIME Type”。
本发明实施例所述接口为标准插件的NPAPI接口,在编译时不链接组件,在应用程序启动时不加载不必要的组件,节省了内存,避免了针对不同业务形态的嵌入式系统生成不同版本的应用程序。
实施例1:
本发明实施例包含以下步骤:
步骤1,为各组件配置具有可唯一标识其身份的“MIME Type”。
步骤2,应用程序或其他组件在接收到需要调用其它组件相应功能指令时,通过遍历系统中指定目录下各组件库的特征接口来查找组件;所述的遍历手段在顺序上没有先后限制。
步骤3,如果存在该组件,则将组件加载到内存中,并获取组件实例、调用封装组件的插件标准NPAPI接口;
步骤4,在退出相应功能模块时,卸载组件,释放内存。
其中,唯一标识组件身份的“MIME Type”可使用以下方法:
把唯一标识组件身份的“MIME Type”设置为application/x-组件名称。
本发明实施例根据嵌入式系统的特点,只在具备组件功能的系统中以及在启动组件功能时加载组件,避免了应用程序为不同业务形态的系统生成不同版本,减少了应用程序启动时加载组件耗费的内存。
实施例2
下面通过一个优选实施例对本发明实施例的方法做进一步阐述:
图1是本发明实施例的嵌入式浏览器动态查找和加载组件流程示意图。以嵌入式浏览器作为具体的应用程序。当前网页以其跨平台、易部署等特点成为嵌入式系统中的主流门户导航,嵌入式浏览器是解析网页的核心,在不同业务系统中需求不同,需要加载不同组件的功能,比如对于双模机顶盒需要使用DVB组件库,但互联网机顶盒不需要DVB组件库。通过本发明实施例方法,所述嵌入式浏览器可以动态发现和加载本地功能组件,无须为不同业务系统编译不同版本,并且只在启动相应功能时才加载组件。
本实例中组件创建实例的特征接口是调用的插件标准NPAPI中的NPP_New()接口函数,撤销实例的特征接口是调用的插件标准NPAPI中的NPP_New()接口函数。此外组件的功能接口都是C++类,因此浏览器与组件库之间需要定义一个与组件接口一一对应的基类,以供加载组件后能得到组件C++实例对象并使用其方法。
此外,本实例的系统可以基于Linux操作系统,组件编译成动态库(.so),浏览器使用Linux系统函数dlopen、dlclose、dlsym来打开、关闭组件库以及执行组件的接口,具体可以包括以下步骤:
浏览器定义一个基类,该基类中的方法与组件接口一一对应;
组件继承浏览器提供的基类,实现其派生类,然后用插件标准NPAPI接口函数封装组件库,编译成动态库;
在具备该组件功能的系统中,将组件库的路径加入配置文件;
当页面解析到需要调用组件的功能接口后,浏览器读取配置文件中的库目录路径,在该路径下遍历库,通过组件特征接口“MIME Type”去查找相应的组件库,如果没有该接口则返回错误;
如果有与组件名称对应的组件库,则调用Dlopen打开该组件对象对应的组件库,然后通过dlsym函数找到库中的NP-initialize()函数用来调用,调用np-initialize()函数后获得NPP-new()地址,然后调用NPP-new()创建实例。
然后通过方法名称直接调用组件对象实例的方法,以实现相应功能;
当离开页面时,调用插件标准NPAPI接口函数NPP_Destroy销毁组件对象实例,然后调用插件标准NPAPI接口函数NPP_Shutdown关闭组件库。
为更加清楚地展示本发明实施例的方法,图2展示了本发明实施例嵌入式系统组件加载方法示意图。从图2可见:所述方法包括:应用程序或组件在接收到需要调用标准插件NPAPI封装的其它组件中的相应功能指令时,查找所述其它组件,所述其它组件具有唯一标识其身份的“MIME Type”;查找到所述组件后,将所述组件加载到内存中,并获取创建所述组件实例的接口以及调用所述组件的相应功能接口;在不需要所述的相应功能时,调用卸载组件接口,将所述其他组件卸载。
优选地,所述查找其他组件,具体为:遍历系统中各组件库的特征接口来查找所述其它组件;加载所述其它组件前,应用程序或组件首先会取得平台上存在的所有所述其它组件类型,保存所述其它组件的路径和名称,然后在解析网页遇到指定插件时,会去遍历系统中的各组件库的“MIME Type”值,找到与指定所述其它组件的“MIME Type”值相同的组件库,进而加载正确的所述其它组件。
优选地,应用程序或组件启动时不加载所述其它组件。
优选地,应用程序在编译阶段时不链接所述其它组件。
优选地,所述其它组件具有唯一标识其身份的“MIME Type”,具体为:不同的所述其它组件拥有不同的“MIME Type”类型,这是表示所述其它组件本身唯一的标识。应用程序或组件就是通过此类型标识来识别特定的插件,进而调用所述其它组件的API函数。
本发明实施例所述接口为标准插件的NPAPI接口,在编译时不链接组件,在应用程序启动时不加载不必要的组件,节省了内存,避免了针对不同业务形态的嵌入式系统生成不同版本的应用程序。
总之,本发明实施例提出一种基于插件机制的动态加载组件方法,针对嵌入式系统的特点,只在具备组件功能的系统中以及在启动组件功能时发现并加载组件,编译时无需链接组件,从而无需为不同业务形态系统中是否需要该组件编译生成不同版本。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (8)
1.一种基于插件机制的动态加载组件方法,所述方法包含:
步骤101)封装组件库;
步骤102)当某个应用程序或组件收到需要调用另一个组件中具有某种功能的指令时,依据标识该另一组件身份的“MIME Type”,遍历系统中的各组件库的“MIMEType”进而查找所需组件;
步骤103)当查找到所需组件后,在内存中加载所需组件,并获取创建所需组件实例的接口以及调用所需组件的相应功能接口;
其中,所有组件均具有唯一一个标识其身份的“MIME Type”。
2.根据权利要求2所述的基于插件机制的动态加载组件方法,其特征在于,所述步骤103)之后还包含:
调用卸载组件接口,卸载加载的组件。
3.根据权利要求1所述的基于插件机制的动态加载组件方法,其特征在于,采用插件标准NPAPI接口函数封装组件库。
4.根据权利要求3所述的基于插件机制的动态加载组件方法,其特征在于,采用插件标准NPAPI接口函数封装组件库的方法具体包含如下步骤:
在编译组件库的时候加入npruntime.h、np_entry.cpp、npn_gate.cpp、npp_gate.cpp以及设置插件调用接口的def文件;所述npruntime.h为头文件,所述np_entry.cpp、npn_gate.cpp和npp_gate.cpp为接口函数,且接口函数np_entry.cpp、npn_gate.cpp和npp_gate.cpp定义在npruntime.h头文件中;
其中,
np_entry.cpp中定义了三个接口,分别是:
NP_GetEntryPoints–在插件加载之后立即调用该接口,用于浏览器获取所有可能需要调用的API函数的指针;
NP_Initialize–为插件提供全局初始化;
NP_Shutdown–为插件提供全局反初始化;
npn_gate.cpp文件用于实现20个函数接口,且这些接口是由浏览器实现的;在插件实例初始化的时候,将浏览器实现的这些函数的入口地址保存到一个NPNetscapeFuncs结构中,这些函数的实现就直接根据NPNetscapeFuncs结构中的入口地址调用浏览器实现的相关功能;且在开发插件时只需要调用NPN开头的全局函数即可;
npp_gate.cpp文件用于实现包含如下几个函数接口:
NPP_Shutdown():在卸载一个插件动态链接库之前及删除任何插件实例之后调用;
NPP_New():在创建一个插件实例时调用,用于初始化插件的实例数据结构;
NPP_Destroy():在删除一个插件实例时调用,用于释放为插件实例所分配的空间;
NPP_Get MIME Description():仅用于Unix环境,用于获取由该插件所支持的MIME类型;
其中,Def文件用来设置插件供外部调用的接口,接口一般有三个,分别是NP_GetEntryPoints、NP_Initialize和NP_Shutdown;
当组件库完成封装之后,如果某个应用程序或组件需要调用采用插件标准NPAPI接口函数封装的组件库的时候,通过调用NP_GetEntryPoints、NP_Initialize和NP_Shutdown这三个接口实现对组件库方法的调用。
5.根据权利要求4所述的基于插件机制的动态加载组件方法,其特征在于,
浏览器在组件加载后调用NP_GetEntryPoints接口,获取所有可能需要调用的API函数的指针,获取的函数指针中就包含有NP_Initialize接口函数指针;
然后调用NP_Initialize接口对组件进行全局初始化,初始化后获得一系列NPN类和NPP类函数接口的指针,获得的NPP类函数接口的指针中就包含有NPP_GetMIME Description接口函数指针;
通过调用NPP_Get MIME Description接口函数,就能获得该组件支持的“MIMEType”。
6.根据权利要求1所述的基于插件机制的动态加载组件方法,其特征在于,遍历系统中各组件库的特征接口进而查找所需组件;
组件封装之后,把封装好的组件文件放在指定目录下,当解析页面遇到需要调用组件的方法时,加载所需组件;加载所需组件前,应用程序或组件首先遍历系统中的各组件库的“MIME Type”来查找所述组件,找到与指定所需组件的“MIMEType”值相同的组件,进而加载所需组件。
7.根据权利要求1所述的基于插件机制的动态加载组件方法,其特征在于,所述步骤103)进一步包含:
加载组件时会调用NP_Initialize()进行初始化,初始化后获得一系列NPN类和NPP类函数接口的指针,然后调用NPP_New()函数接口创建组件实例并初始化,实例对象的构造函数中会生成ScriptablePluginObject对象,创建组件实例后,当遇到需要调用组件中的方法,根据组件方法的名称,去调用ScriptablePluginObject:HasMethod来判断是否有这个方法,如果有这个方法,则会触发ScriptablePluginObject::invoke函数运行,invoke函数内部根据方法名称实现对应的操作。
8.一种基于插件机制的动态加载组件的系统,其特征在于,所述系统包含:
封装模块,用于把组件用插件标准NPAPI接口封装,实现像调用标准插件那样通过标准接口去查找组件并调用组件的方法;
查找模块,用于遍历存放有多个组件库的目录,寻找到所需要调用的组件库;和调用模块,用于查找所需组件库后去调用具体的方法实现相应的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310409594.7A CN104424002B (zh) | 2013-09-10 | 2013-09-10 | 一种基于插件机制的动态加载组件方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310409594.7A CN104424002B (zh) | 2013-09-10 | 2013-09-10 | 一种基于插件机制的动态加载组件方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104424002A true CN104424002A (zh) | 2015-03-18 |
CN104424002B CN104424002B (zh) | 2017-12-12 |
Family
ID=52973081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310409594.7A Expired - Fee Related CN104424002B (zh) | 2013-09-10 | 2013-09-10 | 一种基于插件机制的动态加载组件方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104424002B (zh) |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045616A (zh) * | 2015-07-03 | 2015-11-11 | 浪潮软件集团有限公司 | 一种调用驱动的方法及装置 |
CN105354052A (zh) * | 2015-09-30 | 2016-02-24 | 北京奇虎科技有限公司 | flash游戏加载方法和装置 |
CN105446809A (zh) * | 2015-11-30 | 2016-03-30 | 中国建设银行股份有限公司 | 平台迁移方法及装置 |
CN105487886A (zh) * | 2015-11-24 | 2016-04-13 | 小米科技有限责任公司 | 加载插件的方法及装置 |
CN105760196A (zh) * | 2016-02-18 | 2016-07-13 | 福建天晴数码有限公司 | 插件化外挂程序的检测方法及系统 |
CN105893089A (zh) * | 2016-03-30 | 2016-08-24 | 国云科技股份有限公司 | 一种Linux命令行的封装方法 |
CN105893094A (zh) * | 2016-03-31 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 应用程序插件化的实现方法和装置 |
CN106095521A (zh) * | 2016-08-02 | 2016-11-09 | 北京奇虎科技有限公司 | 插件加载方法及装置 |
CN106293680A (zh) * | 2015-06-11 | 2017-01-04 | 中兴通讯股份有限公司 | 一种组件管理方法及装置 |
CN106502719A (zh) * | 2016-09-23 | 2017-03-15 | 北京小米移动软件有限公司 | 管理应用程序的组件的方法及装置 |
CN106843994A (zh) * | 2017-01-18 | 2017-06-13 | 北京北信源软件股份有限公司 | 一种基于动态编译的客户端软件运行方法 |
CN106933651A (zh) * | 2017-03-14 | 2017-07-07 | 深圳市茁壮网络股份有限公司 | 一种更换js引擎的方法及装置 |
CN107122200A (zh) * | 2016-02-25 | 2017-09-01 | 博雅网络游戏开发(深圳)有限公司 | 加载插件sdk的方法、系统及客户端 |
CN107392837A (zh) * | 2017-07-03 | 2017-11-24 | 南京觅踪电子科技有限公司 | 一种动态插件式影像链设计方法 |
CN107526605A (zh) * | 2016-06-20 | 2017-12-29 | 腾讯科技(深圳)有限公司 | 实现应用程序加载服务组件的方法和装置 |
CN108197024A (zh) * | 2017-12-28 | 2018-06-22 | 深圳Tcl数字技术有限公司 | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 |
CN108279888A (zh) * | 2017-12-19 | 2018-07-13 | 中国电子科技集团公司第三十研究所 | 一种支持多款浏览器的插件实现方法 |
CN108804082A (zh) * | 2018-05-10 | 2018-11-13 | 北京酷我科技有限公司 | 一种插件化JSBridge的实现方法 |
CN108829380A (zh) * | 2018-05-31 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种插件获取信息一致性实现的方法及装置 |
CN109086102A (zh) * | 2018-08-02 | 2018-12-25 | 深圳市元征科技股份有限公司 | 诊断软件的动态加载方法、装置及存储介质 |
CN109542043A (zh) * | 2018-10-31 | 2019-03-29 | 武汉华中数控股份有限公司 | 一种基于插件的数控系统管理方法及装置 |
CN109597623A (zh) * | 2018-12-05 | 2019-04-09 | 上海中商网络股份有限公司 | 一种插件管理方法、装置、设备及存储介质 |
CN110209427A (zh) * | 2018-02-28 | 2019-09-06 | 阿里巴巴集团控股有限公司 | 应用系统及其启动方法、电子设备、存储介质 |
CN110262842A (zh) * | 2018-03-12 | 2019-09-20 | 福建天泉教育科技有限公司 | 一种启动组件的方法及终端 |
CN111008046A (zh) * | 2019-11-15 | 2020-04-14 | 电子科技大学 | 一种软件化雷达组件跨平台动态加载和动态管理系统 |
CN111552524A (zh) * | 2020-05-06 | 2020-08-18 | Oppo(重庆)智能科技有限公司 | 一种插件加载方法、装置及计算机可读存储介质 |
CN111580892A (zh) * | 2019-02-19 | 2020-08-25 | 杭州海康威视系统技术有限公司 | 一种业务组件调用的方法、装置、终端和存储介质 |
CN111857689A (zh) * | 2020-07-27 | 2020-10-30 | 深信服科技股份有限公司 | 一种框架、框架的功能配置方法、终端及存储介质 |
CN111857860A (zh) * | 2019-04-30 | 2020-10-30 | 烽火通信科技股份有限公司 | 一种安全加载插件的实现方法及系统 |
CN112114778A (zh) * | 2020-07-03 | 2020-12-22 | 上海金融期货信息技术有限公司 | 一种支持水平扩展的跨平台动态库算法管理系统 |
CN112559094A (zh) * | 2020-12-15 | 2021-03-26 | 浙江中控技术股份有限公司 | 一种c++模块接口的调用方法及装置 |
CN113448558A (zh) * | 2021-07-07 | 2021-09-28 | 医声医事(北京)科技有限公司 | 组件生成的方法 |
CN113987379A (zh) * | 2021-10-19 | 2022-01-28 | 山东百盟信息技术有限公司 | 网页渲染引擎中日志模块Histogram的优化方法和装置 |
CN117251143A (zh) * | 2023-11-14 | 2023-12-19 | 武汉万云网络科技有限公司 | 一种应用系统、构建方法及其可视化开发工具的实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1834918A (zh) * | 2005-11-04 | 2006-09-20 | 北京金山软件有限公司 | 一种组件间调用方法 |
CN102999352A (zh) * | 2012-11-15 | 2013-03-27 | 中国科学院声学研究所 | 一种嵌入式系统组件加载方法 |
CN103051693A (zh) * | 2012-12-12 | 2013-04-17 | 北京奇虎科技有限公司 | 设备控制方法与移动通信终端 |
-
2013
- 2013-09-10 CN CN201310409594.7A patent/CN104424002B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1834918A (zh) * | 2005-11-04 | 2006-09-20 | 北京金山软件有限公司 | 一种组件间调用方法 |
CN102999352A (zh) * | 2012-11-15 | 2013-03-27 | 中国科学院声学研究所 | 一种嵌入式系统组件加载方法 |
CN103051693A (zh) * | 2012-12-12 | 2013-04-17 | 北京奇虎科技有限公司 | 设备控制方法与移动通信终端 |
Cited By (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293680A (zh) * | 2015-06-11 | 2017-01-04 | 中兴通讯股份有限公司 | 一种组件管理方法及装置 |
CN105045616A (zh) * | 2015-07-03 | 2015-11-11 | 浪潮软件集团有限公司 | 一种调用驱动的方法及装置 |
CN105045616B (zh) * | 2015-07-03 | 2018-02-23 | 浪潮软件集团有限公司 | 一种调用驱动的方法及装置 |
CN105354052A (zh) * | 2015-09-30 | 2016-02-24 | 北京奇虎科技有限公司 | flash游戏加载方法和装置 |
CN105354052B (zh) * | 2015-09-30 | 2018-12-04 | 北京奇虎科技有限公司 | flash游戏加载方法和装置 |
CN105487886A (zh) * | 2015-11-24 | 2016-04-13 | 小米科技有限责任公司 | 加载插件的方法及装置 |
CN105446809B (zh) * | 2015-11-30 | 2019-01-25 | 中国建设银行股份有限公司 | 平台迁移方法及装置 |
CN105446809A (zh) * | 2015-11-30 | 2016-03-30 | 中国建设银行股份有限公司 | 平台迁移方法及装置 |
CN105760196B (zh) * | 2016-02-18 | 2019-04-30 | 福建天晴数码有限公司 | 插件化外挂程序的检测方法及系统 |
CN105760196A (zh) * | 2016-02-18 | 2016-07-13 | 福建天晴数码有限公司 | 插件化外挂程序的检测方法及系统 |
CN107122200A (zh) * | 2016-02-25 | 2017-09-01 | 博雅网络游戏开发(深圳)有限公司 | 加载插件sdk的方法、系统及客户端 |
CN105893089A (zh) * | 2016-03-30 | 2016-08-24 | 国云科技股份有限公司 | 一种Linux命令行的封装方法 |
CN105893089B (zh) * | 2016-03-30 | 2019-05-21 | 国云科技股份有限公司 | 一种Linux命令行的封装方法 |
CN105893094A (zh) * | 2016-03-31 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 应用程序插件化的实现方法和装置 |
CN105893094B (zh) * | 2016-03-31 | 2019-05-03 | 百度在线网络技术(北京)有限公司 | 应用程序插件化的实现方法和装置 |
CN107526605A (zh) * | 2016-06-20 | 2017-12-29 | 腾讯科技(深圳)有限公司 | 实现应用程序加载服务组件的方法和装置 |
CN107526605B (zh) * | 2016-06-20 | 2020-03-06 | 腾讯科技(深圳)有限公司 | 实现应用程序加载服务组件的方法和装置 |
CN106095521A (zh) * | 2016-08-02 | 2016-11-09 | 北京奇虎科技有限公司 | 插件加载方法及装置 |
CN106502719A (zh) * | 2016-09-23 | 2017-03-15 | 北京小米移动软件有限公司 | 管理应用程序的组件的方法及装置 |
CN106843994B (zh) * | 2017-01-18 | 2020-10-16 | 北京北信源软件股份有限公司 | 一种基于动态编译的客户端软件运行方法 |
CN106843994A (zh) * | 2017-01-18 | 2017-06-13 | 北京北信源软件股份有限公司 | 一种基于动态编译的客户端软件运行方法 |
CN106933651B (zh) * | 2017-03-14 | 2020-10-16 | 深圳市茁壮网络股份有限公司 | 一种更换js引擎的方法及装置 |
CN106933651A (zh) * | 2017-03-14 | 2017-07-07 | 深圳市茁壮网络股份有限公司 | 一种更换js引擎的方法及装置 |
CN107392837A (zh) * | 2017-07-03 | 2017-11-24 | 南京觅踪电子科技有限公司 | 一种动态插件式影像链设计方法 |
CN108279888A (zh) * | 2017-12-19 | 2018-07-13 | 中国电子科技集团公司第三十研究所 | 一种支持多款浏览器的插件实现方法 |
CN108197024A (zh) * | 2017-12-28 | 2018-06-22 | 深圳Tcl数字技术有限公司 | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 |
CN108197024B (zh) * | 2017-12-28 | 2022-01-04 | 深圳Tcl数字技术有限公司 | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 |
CN110209427A (zh) * | 2018-02-28 | 2019-09-06 | 阿里巴巴集团控股有限公司 | 应用系统及其启动方法、电子设备、存储介质 |
CN110262842A (zh) * | 2018-03-12 | 2019-09-20 | 福建天泉教育科技有限公司 | 一种启动组件的方法及终端 |
CN108804082A (zh) * | 2018-05-10 | 2018-11-13 | 北京酷我科技有限公司 | 一种插件化JSBridge的实现方法 |
CN108829380A (zh) * | 2018-05-31 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种插件获取信息一致性实现的方法及装置 |
CN108829380B (zh) * | 2018-05-31 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种插件获取信息一致性实现的方法及装置 |
CN109086102A (zh) * | 2018-08-02 | 2018-12-25 | 深圳市元征科技股份有限公司 | 诊断软件的动态加载方法、装置及存储介质 |
CN109542043A (zh) * | 2018-10-31 | 2019-03-29 | 武汉华中数控股份有限公司 | 一种基于插件的数控系统管理方法及装置 |
CN109597623A (zh) * | 2018-12-05 | 2019-04-09 | 上海中商网络股份有限公司 | 一种插件管理方法、装置、设备及存储介质 |
CN111580892A (zh) * | 2019-02-19 | 2020-08-25 | 杭州海康威视系统技术有限公司 | 一种业务组件调用的方法、装置、终端和存储介质 |
CN111580892B (zh) * | 2019-02-19 | 2023-09-19 | 杭州海康威视系统技术有限公司 | 一种业务组件调用的方法、装置、终端和存储介质 |
CN111857860A (zh) * | 2019-04-30 | 2020-10-30 | 烽火通信科技股份有限公司 | 一种安全加载插件的实现方法及系统 |
CN111008046A (zh) * | 2019-11-15 | 2020-04-14 | 电子科技大学 | 一种软件化雷达组件跨平台动态加载和动态管理系统 |
CN111552524A (zh) * | 2020-05-06 | 2020-08-18 | Oppo(重庆)智能科技有限公司 | 一种插件加载方法、装置及计算机可读存储介质 |
CN111552524B (zh) * | 2020-05-06 | 2023-10-13 | Oppo(重庆)智能科技有限公司 | 一种插件加载方法、装置及计算机可读存储介质 |
CN112114778A (zh) * | 2020-07-03 | 2020-12-22 | 上海金融期货信息技术有限公司 | 一种支持水平扩展的跨平台动态库算法管理系统 |
CN112114778B (zh) * | 2020-07-03 | 2024-04-02 | 上海金融期货信息技术有限公司 | 一种支持水平扩展的跨平台动态库算法管理系统 |
CN111857689A (zh) * | 2020-07-27 | 2020-10-30 | 深信服科技股份有限公司 | 一种框架、框架的功能配置方法、终端及存储介质 |
CN112559094A (zh) * | 2020-12-15 | 2021-03-26 | 浙江中控技术股份有限公司 | 一种c++模块接口的调用方法及装置 |
CN112559094B (zh) * | 2020-12-15 | 2024-04-02 | 浙江中控技术股份有限公司 | 一种c++模块接口的调用方法及装置 |
CN113448558A (zh) * | 2021-07-07 | 2021-09-28 | 医声医事(北京)科技有限公司 | 组件生成的方法 |
CN113987379A (zh) * | 2021-10-19 | 2022-01-28 | 山东百盟信息技术有限公司 | 网页渲染引擎中日志模块Histogram的优化方法和装置 |
CN117251143A (zh) * | 2023-11-14 | 2023-12-19 | 武汉万云网络科技有限公司 | 一种应用系统、构建方法及其可视化开发工具的实现方法 |
CN117251143B (zh) * | 2023-11-14 | 2024-02-06 | 武汉万云网络科技有限公司 | 一种应用系统、构建方法及其可视化开发工具的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104424002B (zh) | 2017-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104424002A (zh) | 一种基于插件机制的动态加载组件方法和系统 | |
CN102999352B (zh) | 一种嵌入式系统组件加载方法 | |
US11467854B2 (en) | Method and apparatus for loading multiple differing versions of a native library into a native environment | |
US10146515B1 (en) | Live code updates | |
US20190235883A1 (en) | Dynamically Loaded Plugin Architecture | |
US8739147B2 (en) | Class isolation to minimize memory usage in a device | |
US10564943B2 (en) | Special calling sequence for caller-sensitive methods | |
US20160019072A1 (en) | Dynamic determination of application server runtime classloading | |
CN105607935A (zh) | 应用程序更新方法及其终端、服务器 | |
US20130283259A1 (en) | Application installation | |
CN105100191A (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
US20050086640A1 (en) | Initiating execution of application programs on a data processing arrangement | |
US8370824B2 (en) | Dynamic class loading | |
CN110659045B (zh) | 一种软件化雷达实时动态更新系统 | |
CN110888652B (zh) | 基于jenkins插件的多版本构建方法及终端 | |
US20150026658A1 (en) | Systems, Methods and Media for Dynamic Creation and Update of Activation Context for Component Object Model | |
CN106933611B (zh) | 类加载方法及类加载器 | |
CN110659031A (zh) | 应用程序的编译方法、装置、电子设备及存储介质 | |
US20120030667A1 (en) | Packaging an application | |
US20130185626A1 (en) | METHOD, TERMINAL AND COMPUTER-READABLE RECORDING MEDIUM FOR COMPILING JAVASCRIPT INCLUDED IN WEB APPLICATION USING Ahead-Of-Time (AOT) | |
CN104765624A (zh) | 虚拟机应用程序的更新处理方法和装置 | |
US20160147547A1 (en) | Metadata-based class loading using a content repository | |
US20120311552A1 (en) | Runtime optimization of application bytecode via call transformations | |
CN104423932A (zh) | Javascript中调用二进制组件的方法 | |
CN108536444B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171212 Termination date: 20200910 |
|
CF01 | Termination of patent right due to non-payment of annual fee |