CN105912362A - 一种加载插件的方法、装置及电子设备 - Google Patents
一种加载插件的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN105912362A CN105912362A CN201610219485.2A CN201610219485A CN105912362A CN 105912362 A CN105912362 A CN 105912362A CN 201610219485 A CN201610219485 A CN 201610219485A CN 105912362 A CN105912362 A CN 105912362A
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- card
- file
- loading
- 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
技术领域
本发明涉及应用程序插件技术,尤其涉及一种加载插件的方法、装置及电子设备。
背景技术
随着计算机通信以及互联网技术的不断发展,电子设备的应用越来越普遍,例如,智能移动电话、个人数字助理、掌上电脑、笔记本电脑得到了越来越广泛的应用。电子设备上安装的应用程序(APP,Application)也越来越多,为了满足用户不断增长的应用功能需求,要求应用程序提供的应用功能也越来越多,这样,需要在每添加一应用功能或更新、升级应用功能时,都需要对应用程序进行改动,从而需要用户频繁下载应用程序更新包,不仅增加了应用程序的维护工作量,也会降低用户对应用程序的体验。
为了既能满足应用程序的不断扩展,又能减少对应用程序的改动以及用户频繁下载应用程序更新包,现有技术提出了应用程序插件化的技术方案,插件(Plug-in)是一种遵循一定规范的应用程序编程接口(API,ApplicationProgramming Interface)编写出来的应用程序,依附于应用程序,应用程序通过提供插件,使插件可以加载到应用程序和网络传输协议中,可以提供该应用程序的多项扩展服务,而无需对该应用程序进行改动。插件化有利于应用程序的模块化,便于应用程序的分层次及方便维护管理。例如,插件可以加载到应用程序上并且能够动态更新,且不会对应用程序造成任何改变。举例来说,在IE浏览器应用程序中,通过安装相关插件,IE浏览器能够直接调用插件,实现插件中设置的应用功能。
但现有加载插件的方法,由于不同的插件对应设置有不同的接口,在加载插件时,需要预先针对插件不同的接口编写相应的接口代码段,使得在扩展插件的应用功能时,编写不同接口代码段所需的时间较长,导致扩展插件应用功能的成本较高,降低了插件的加载效率,不利于插件的后续扩展以及集合管理维护。
发明内容
有鉴于此,本发明实施例提供一种加载插件的方法、装置及电子设备,能够降低扩展插件应用功能的成本,提升插件的加载效率,以解决现有的加载插件的方法不能使不同插件的接口采用统一的接口代码段的问题。
第一方面,本发明实施例提供一种加载插件的方法,包括:
监测到应用程序加载插件,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;
提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;
如果所述插件绝对路径名称下存在文件,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;
如果所述文件签名与已存储的插件配置信息文件中的任一插件签名相同,调用插件导出函数,获取所述插件的插件接口识别值;
如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值相同,调用插件加载函数,利用所述插件的插件接口加载所述插件。
结合第一方面,在第一方面的第一种实施方式中,所述插件配置信息文件采用可扩展标记语言编辑,包括:插件标识、插件相对路径名称、插件签名以及插件接口的通用唯一识别码值。
结合第一方面,在第一方面的第二种实施方式中,所述插件导出函数为DllGetClassObject函数。
结合第一方面,在第一方面的第三种实施方式中,所述插件接口包括:插件初始化子接口、插件反初始化子接口、启动插件子接口以及停止插件子接口,所述插件加载函数为LoadLibrary函数。
结合第一方面的第一种或第二种或第三种实施方式,在第一方面的第四种实施方式中,所述方法还包括:
如果所述插件绝对路径名称下未存在文件;或,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名均不相同;或,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值不相同,退出加载所述插件的流程。
第二方面,本发明实施例提供一种加载插件的装置,包括:条目数据读取模块、路径名称获取模块、文件签名获取模块、插件接口识别值获取模块以及插件加载模块,其中,
条目数据读取模块,用于在监测到应用程序加载插件后,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;
路径名称获取模块,用于提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;
文件签名获取模块,如果所述插件绝对路径名称下存在文件,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;
插件接口识别值获取模块,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名相同,调用插件导出函数,获取所述插件的插件接口识别值;
插件加载模块,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值相同,调用插件加载函数,利用所述插件的插件接口加载所述插件。
结合第二方面,在第二方面的第一种实施方式中,所述插件配置信息文件采用可扩展标记语言编辑,包括:插件标识、插件相对路径名称、插件签名以及插件接口的通用唯一识别码值。
结合第二方面,在第二方面的第二种实施方式中,所述插件导出函数为DllGetClassObject函数。
结合第二方面,在第二方面的第三种实施方式中,所述插件接口包括:插件初始化子接口、插件反初始化子接口、启动插件子接口以及停止插件子接口,所述插件加载函数为LoadLibrary函数。
结合第二方面的第一种至第三种中任一种实施方式,在第二方面的第四种实施方式中,所述装置还包括:
插件加载退出模块,如果所述插件绝对路径名称下未存在文件;或,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名均不相同;或,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值不相同,退出加载所述插件的流程。
第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的加载插件的方法。
本发明实施例提供的一种加载插件的方法、装置及电子设备,通过监测到应用程序加载插件,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;如果所述插件绝对路径名称下存在文件,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;如果所述文件签名与已存储的插件配置信息文件中的任一插件签名相同,调用插件导出函数,获取所述插件的插件接口识别值;如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值相同,调用插件加载函数,利用所述插件的插件接口加载所述插件,能够/解决现有加载插件的方法不能使不同插件的接口采用统一的接口代码段而导致的扩展插件应用功能的成本较高,插件的加载效率较低的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明加载插件的方法实施例一流程示意图;
图2为本发明加载插件的方法实施例二流程示意图;
图3为本发明加载插件的装置实施例一的结构示意图;
图4为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明加载插件的方法实施例一流程示意图,如图1所示,本实施例的方法可以包括:
步骤101,监测到应用程序加载插件,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;
本实施例中,插件配置信息文件用于存储各插件的配置信息,以对各插件对应的接口进行统一。这样,在对插件进行扩展或编辑不同的插件时,所有插件对应相同的接口代码段,无需针对不同的插件编写相应不同的接口代码段,降低了编写不同接口代码段所需的时间,提升了插件的更新效率。
作为一可选实施例,插件配置信息文件采用可扩展标记语言(XML,Extensible Mark Language)进行编辑,包括:插件标识(item id)、插件相对路径名称(name)、插件签名以及插件接口的通用唯一识别码(UUID,UniversallyUnique Identifier)值。其中,
插件标识(item id),用于标识插件;
插件相对路径名称(name),用于设置插件相对所属应用程序安装根目录路径名称的相对路径;
插件签名,用于标识插件的签名公司(运营商)的名称;
插件接口的UUID值,用于标识插件接口映射的UUID值。
作为一可选实施例,插件配置信息文件包含的内容如下:
本实施例中,插件配置信息文件中,包含有一个或多个插件的配置信息,写在<plugins>与</<plugins>之间,每一插件配置信息对应一条目<item>数据。例如,对于第一个插件,插件标识(item id)为1,插件相对路径名称(name)为:plugins\kunionplugin.dll,插件签名(sign)为:kingsoft.com,插件接口的UUID值(Interfaceuuid)为:{E02FE26A-76FA-4cda-9E61-FE37AD336206}。
本实施例中,作为一可选实施例,插件相对路径名称可由插件对应的应用程序运营商预先设置,插件接口采用预先设置的统一接口,例如,IKBasePlugins插件接口,其映射的UUID值为:{E02FE26A-76FA-4cda-9E61-FE37AD336206}。
本实施例中,在设置插件配置信息文件后,可以将设置的插件配置信息文件下发至各电子设备,电子设备接收并存储插件配置信息文件,以便后续依据该插件配置信息文件进行插件的加载。
本实施例中,应用程序在初始化完成后,开始读取每一插件的<item>数据。
本实施例中,每一插件对应一条目数据。
步骤102,提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;
本实施例中,将所述插件相对路径名称接入到所述应用程序的安装根目录路径名称下,即将应用程序的安装根目录路径名称与所述插件相对路径名称进行拼接,得到插件绝对路径名称。例如,插件相对路径名称为:plugins\kunionplugin.dll,所述应用程序的安装根目录路径名称为:C:\programfiles\kingsoft\,则通过拼接,得到的插件绝对路径名称为:C:\programfiles\kingsoft\plugins\kunionplugin.dll。
步骤103,如果所述插件绝对路径名称下存在文件,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;
本实施例中,作为一可选实施例,文件获取函数为windows函数。
本实施例中,作为一可选实施例,该方法还可以包括:
如果所述插件绝对路径名称下未存在文件,退出加载所述插件的流程。
本实施例中,如果所述插件绝对路径名称下未存在文件,说明应用程序安装目录并没有该插件,不需要加载。
步骤104,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名相同,调用插件导出函数,获取所述插件的插件接口识别值;
本实施例中,将获取的文件签名与已存储的插件配置信息文件中的任一sign字段进行匹配。
本实施例中,插件导出函数为DllGetClassObject函数,关于调用插件导出函数,获取所述插件的插件接口识别值为公知技术,在此略去详述。
本实施例中,作为一可选实施例,该方法还可以包括:
如果所述文件签名与已存储的插件配置信息文件中的任一插件签名均不相同,退出加载所述插件的流程。
本实施例中,如果获取的文件签名与已存储的插件配置信息文件中的任一sign字段不相匹配,表明无需加载该插件。
步骤105,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值相同,调用插件加载函数,利用所述插件的插件接口加载所述插件。
本实施中,作为一可选实施例,如果获取的插件接口是IKBasePlugins,其映射的插件接口识别值为:{E02FE26A-76FA-4cda-9E61-FE37AD336206},则与插件配置信息文件中的插件接口的通用唯一识别码值相同,可以调用该插件接口。
本实施中,作为一可选实施例,插件加载函数为LoadLibrary函数。
本实施中,作为一可选实施例,插件接口包括:插件初始化子接口、插件反初始化子接口、启动插件子接口以及停止插件子接口。其中,每一插件子接口对应一子接口函数,分别为插件初始化子接口函数(Init函数)、插件反初始化子接口函数(UnInit函数)、启动插件子接口函数(RunPlugin函数)以及停止插件子接口函数(StopPlugin函数),其中,
Init函数用于需完成插件的初始化操作;
RunPlugin函数用于插件在完成初始化后,调用运行的插件;
UnInit函数用于需完成插件的反初始化操作;
StopPlugin函数用于插件在完成反初始化后,停止插件的运行。
通过在子接口函数中填充相应的应用功能信息,可以完成插件的相应应用功能(初始化插件、反初始化插件、启动插件以及停止插件)。
作为一可选实施例,插件接口包含的子接口函数如下:
//>插件初始化
Virtual int_stdcall Init()=0;
//>插件反初始化
Virtual int_stdcall UnInit()=0;
//>启动插件
Virtual int_stdcall RunPlugin()=0;
//>插件初始化
Virtual int_stdcall StopPlugin()=0;
本实施例中,各插件利用上述四个子接口函数为相关入口,可以调用插件并实现插件的不同功能。
本实施例中,作为一可选实施例,该方法还可以包括:
如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值不相同,退出加载所述插件的流程。
本实施例中,如果获取的插件接口识别值与已存储的插件接口的通用唯一识别码值不相同,退出加载插件的流程,可以避免获取的插件接口可能是无效的,从而导致无效的插件接口执行插件加载造成应用程序崩溃的情形,提升插件加载的稳定性。
本发明加载插件的方法,监测到应用程序加载插件,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;如果所述插件绝对路径名称下存在文件,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;如果所述文件签名与已存储的插件配置信息文件中的任一插件签名相同,调用插件导出函数,获取所述插件的插件接口识别值;如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值相同,调用插件加载函数,利用所述插件的插件接口加载所述插件。这样,通过设置用于统一插件接口的插件配置信息文件,避免了现有的不同插件在加载时,需要获取不同的插件接口,调用相应的接口函数导致的需要预先针对不同的插件接口编写相应的接口代码段,缩短了编写接口代码段所需的时间,降低了扩展插件应用功能的成本,提升了插件的加载效率,有利于插件的后续扩展以及集合管理维护;使得根据插件配置信息文件,只需一份接口代码段就可加载所有插件,并实现不同插件的相同插件接口,实现插件的多样化应用功能,方便插件的统一管理;且无需更改应用程序代码。只需要在插件中配置相关信息,即可实现插件加载,有利于插件的扩展。
图2为本发明加载插件的方法实施例二流程示意图,如图2所示,本实施例的方法可以包括:
步骤201,监测到应用程序加载插件,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;
步骤202,提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;
本实施例中,步骤201至步骤202的过程分别和上述方法实施例一的步骤101至步骤102类似,此处不再赘述。
步骤203,判断所述插件绝对路径名称下是否存在文件,如果存在,执行步骤204;如果不存在,执行步骤209;
步骤204,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;
步骤205,比较所述文件签名与已存储的插件配置信息文件中的任一插件签名,如果相同,执行步骤206;如果不相同,执行步骤209;
步骤206,调用插件导出函数,获取所述插件的插件接口识别值;
步骤207,比较所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值,如果相同,执行步骤208;如果不相同,执行步骤209;
步骤208,调用插件加载函数,利用所述插件的插件接口加载所述插件;
本实施例中,如果对插件进行初始化,调用Init函数。
步骤209,退出加载所述插件的流程。
本发明加载插件的方法,在待加载的插件的相关配置信息与插件配置信息文件中的相应配置信息不相匹配时,退出插件加载流程,可以避免插件加载无效时造成应用程序崩溃的情形,提升电子设备的资源利用率。
图3为本发明加载插件的装置实施例一的结构示意图,如图3所示,本实施例的加载插件的装置可以包括:条目数据读取模块31、路径名称获取模块32、文件签名获取模块33、插件接口识别值获取模块34以及插件加载模块35,其中,
条目数据读取模块31,用于在监测到应用程序加载插件后,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;
路径名称获取模块32,用于提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;
文件签名获取模块33,如果所述插件绝对路径名称下存在文件,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;
插件接口识别值获取模块34,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名相同,调用插件导出函数,获取所述插件的插件接口识别值;
插件加载模块35,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值相同,调用插件加载函数,利用所述插件的插件接口加载所述插件。
本实施例中,作为一可选实施例,所述插件配置信息文件采用可扩展标记语言编辑,包括:插件标识、插件相对路径名称、插件签名以及插件接口的通用唯一识别码值。其中,
插件标识,用于标识插件;
插件相对路径名称,用于设置插件相对所属应用程序安装根目录路径名称的相对路径;
插件签名,用于标识插件的签名公司(运营商)的名称;
插件接口的UUID值,用于标识插件接口映射的UUID值。
本实施例中,插件配置信息文件中,包含有一个或多个插件的配置信息,每一插件对应一条目数据。
本实施例中,作为一可选实施例,插件相对路径名称可由插件对应的应用程序运营商预先设置,插件接口采用预先设置的统一接口。
本实施例中,作为一可选实施例,文件获取函数为windows函数。
本实施例中,作为一可选实施例,所述插件导出函数为DllGetClassObject函数。
本实施例中,作为一可选实施例,所述插件接口包括:插件初始化子接口、插件反初始化子接口、启动插件子接口以及停止插件子接口,所述插件加载函数为LoadLibrary函数。其中,每一插件子接口对应一子接口函数,分别为Init函数、UnInit函数、RunPlugin函数以及StopPlugin函数,其中,
Init函数用于需完成插件的初始化操作;
RunPlugin函数用于插件在完成初始化后,调用运行的插件;
UnInit函数用于需完成插件的反初始化操作;
StopPlugin函数用于插件在完成反初始化后,停止插件的运行。
通过在子接口函数中填充相应的应用功能信息,可以完成插件的相应初始化、反初始化、启动以及停止应用功能。
本实施例中,作为一可选实施例,所述装置还包括:
插件加载退出模块36,如果所述插件绝对路径名称下未存在文件;或,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名均不相同;或,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值不相同,退出加载所述插件的流程。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,″计算机可读介质″可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。
在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。
图4为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-3所示实施例的流程,如图4所示,上述电子设备可以包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述电子设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的加载插件的方法。
处理器42对上述步骤的具体执行过程以及处理器42通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-3所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、***总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种加载插件的方法,其特征在于,包括:
监测到应用程序加载插件,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;
提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;
如果所述插件绝对路径名称下存在文件,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;
如果所述文件签名与已存储的插件配置信息文件中的任一插件签名相同,调用插件导出函数,获取所述插件的插件接口识别值;
如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值相同,调用插件加载函数,利用所述插件的插件接口加载所述插件。
2.根据权利要求1所述的加载插件的方法,其特征在于,所述插件配置信息文件采用可扩展标记语言编辑,包括:插件标识、插件相对路径名称、插件签名以及插件接口的通用唯一识别码值。
3.根据权利要求1所述的加载插件的方法,其特征在于,所述插件导出函数为DllGetClassObject函数。
4.根据权利要求1所述的加载插件的方法,其特征在于,所述插件接口包括:插件初始化子接口、插件反初始化子接口、启动插件子接口以及停止插件子接口,所述插件加载函数为LoadLibrary函数。
5.根据权利要求1至4任一项所述的加载插件的方法,其特征在于,所述方法还包括:
如果所述插件绝对路径名称下未存在文件;或,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名均不相同;或,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值不相同,退出加载所述插件的流程。
6.一种加载插件的装置,其特征在于,包括:条目数据读取模块、路径名称获取模块、文件签名获取模块、插件接口识别值获取模块以及插件加载模块,其中,
条目数据读取模块,用于在监测到应用程序加载插件后,读取所述插件的条目数据,所述条目数据按照预先设置的插件配置信息文件进行配置;
路径名称获取模块,用于提取所述条目数据中的插件相对路径名称,依据所述应用程序的安装根目录路径名称以及所述插件相对路径名称,得到插件绝对路径名称;
文件签名获取模块,如果所述插件绝对路径名称下存在文件,调用文件获取函数获取所述插件绝对路径名称下存在的文件的文件签名;
插件接口识别值获取模块,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名相同,调用插件导出函数,获取所述插件的插件接口识别值;
插件加载模块,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值相同,调用插件加载函数,利用所述插件的插件接口加载所述插件。
7.根据权利要求6所述的加载插件的装置,其特征在于,所述插件配置信息文件采用可扩展标记语言编辑,包括:插件标识、插件相对路径名称、插件签名以及插件接口的通用唯一识别码值。
8.根据权利要求6所述的加载插件的装置,其特征在于,所述插件导出函数为DllGetClassObject函数。
9.根据权利要求6所述的加载插件的装置,其特征在于,所述插件接口包括:插件初始化子接口、插件反初始化子接口、启动插件子接口以及停止插件子接口,所述插件加载函数为LoadLibrary函数。
10.根据权利要求6至9任一项所述的加载插件的装置,其特征在于,所述装置还包括:
插件加载退出模块,如果所述插件绝对路径名称下未存在文件;或,如果所述文件签名与已存储的插件配置信息文件中的任一插件签名均不相同;或,如果所述插件的插件接口识别值与已存储的插件配置信息文件中的插件接口的通用唯一识别码值不相同,退出加载所述插件的流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610219485.2A CN105912362B (zh) | 2016-04-11 | 2016-04-11 | 一种加载插件的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610219485.2A CN105912362B (zh) | 2016-04-11 | 2016-04-11 | 一种加载插件的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105912362A true CN105912362A (zh) | 2016-08-31 |
CN105912362B CN105912362B (zh) | 2019-02-26 |
Family
ID=56744854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610219485.2A Active CN105912362B (zh) | 2016-04-11 | 2016-04-11 | 一种加载插件的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105912362B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491718A (zh) * | 2018-09-13 | 2019-03-19 | 北京米文动力科技有限公司 | 一种插件加载方法及设备 |
CN109614158A (zh) * | 2017-09-30 | 2019-04-12 | 北京国双科技有限公司 | 一种插件的调用方法、***、存储介质和处理器 |
CN110032400A (zh) * | 2018-01-09 | 2019-07-19 | 武汉斗鱼网络科技有限公司 | 一种加载插件的方法及电子终端 |
CN110855656A (zh) * | 2019-11-06 | 2020-02-28 | 云深互联(北京)科技有限公司 | 可实现应用服务器防护的插件流量代理方法、装置及*** |
CN111026466A (zh) * | 2019-12-03 | 2020-04-17 | 成都卫士通信息产业股份有限公司 | 文件处理方法、装置、计算机可读存储介质及电子设备 |
WO2021057411A1 (zh) * | 2019-09-29 | 2021-04-01 | 华为技术有限公司 | 一种组件加载方法、装置及*** |
CN112667246A (zh) * | 2021-01-08 | 2021-04-16 | 深圳前海微众银行股份有限公司 | 应用功能扩展的方法、装置及电子设备 |
CN114296820A (zh) * | 2021-12-23 | 2022-04-08 | 北京知道创宇信息技术股份有限公司 | 插件地址的添加方法、装置、服务器及存储介质 |
CN114942796A (zh) * | 2022-05-05 | 2022-08-26 | 北京达佳互联信息技术有限公司 | 插件编译及调用方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060698A1 (en) * | 2003-09-11 | 2005-03-17 | International Business Machines Corporation | Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy |
CN102760068A (zh) * | 2012-06-01 | 2012-10-31 | 奇智软件(北京)有限公司 | 一种ActiveX插件加载方法和装置 |
CN102883324A (zh) * | 2012-10-19 | 2013-01-16 | 广州市动景计算机科技有限公司 | 移动终端中的插件调用安全验证方法及装置、移动终端 |
-
2016
- 2016-04-11 CN CN201610219485.2A patent/CN105912362B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060698A1 (en) * | 2003-09-11 | 2005-03-17 | International Business Machines Corporation | Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy |
CN102760068A (zh) * | 2012-06-01 | 2012-10-31 | 奇智软件(北京)有限公司 | 一种ActiveX插件加载方法和装置 |
CN102883324A (zh) * | 2012-10-19 | 2013-01-16 | 广州市动景计算机科技有限公司 | 移动终端中的插件调用安全验证方法及装置、移动终端 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614158A (zh) * | 2017-09-30 | 2019-04-12 | 北京国双科技有限公司 | 一种插件的调用方法、***、存储介质和处理器 |
CN109614158B (zh) * | 2017-09-30 | 2021-11-26 | 北京国双科技有限公司 | 一种插件的调用方法、***、存储介质和处理器 |
CN110032400A (zh) * | 2018-01-09 | 2019-07-19 | 武汉斗鱼网络科技有限公司 | 一种加载插件的方法及电子终端 |
CN109491718A (zh) * | 2018-09-13 | 2019-03-19 | 北京米文动力科技有限公司 | 一种插件加载方法及设备 |
WO2021057411A1 (zh) * | 2019-09-29 | 2021-04-01 | 华为技术有限公司 | 一种组件加载方法、装置及*** |
CN110855656A (zh) * | 2019-11-06 | 2020-02-28 | 云深互联(北京)科技有限公司 | 可实现应用服务器防护的插件流量代理方法、装置及*** |
CN111026466A (zh) * | 2019-12-03 | 2020-04-17 | 成都卫士通信息产业股份有限公司 | 文件处理方法、装置、计算机可读存储介质及电子设备 |
CN112667246A (zh) * | 2021-01-08 | 2021-04-16 | 深圳前海微众银行股份有限公司 | 应用功能扩展的方法、装置及电子设备 |
CN112667246B (zh) * | 2021-01-08 | 2024-03-01 | 深圳前海微众银行股份有限公司 | 应用功能扩展的方法、装置及电子设备 |
CN114296820A (zh) * | 2021-12-23 | 2022-04-08 | 北京知道创宇信息技术股份有限公司 | 插件地址的添加方法、装置、服务器及存储介质 |
CN114942796A (zh) * | 2022-05-05 | 2022-08-26 | 北京达佳互联信息技术有限公司 | 插件编译及调用方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105912362B (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105912362A (zh) | 一种加载插件的方法、装置及电子设备 | |
CN104516783B (zh) | 权限控制方法和装置 | |
CN105955762A (zh) | 一种注入动态链接库文件的方法、装置及电子设备 | |
CN103970563B (zh) | 动态加载安卓类的方法 | |
CN104866341A (zh) | 一种组件升级方法、装置及终端 | |
CN104267981B (zh) | 一种加载桌面上的应用布局的方法及装置 | |
CN102075546A (zh) | 一种基于云计算的在线操作*** | |
JP2011515763A (ja) | 展開可能オブジェクト階層内におけるアプリケーション管理 | |
CN105550252A (zh) | 一种文件定位方法、装置及电子设备 | |
CN103902265A (zh) | 一种应用实现方法及相关装置 | |
CN101860853A (zh) | 软件升级方法和装置 | |
CN103970559A (zh) | 一种基于Android***的设备加载方法及装置 | |
CN106599680A (zh) | 一种设置应用程序权限的方法、装置及电子设备 | |
CN110502732A (zh) | 一种优惠券的规则生成方法、装置及服务器 | |
CN102393848A (zh) | 获取数据终端设备识别信息的方法和*** | |
CN102779045B (zh) | 一种界面生成方法、界面编辑器及电子设备 | |
CN103514004A (zh) | Windows***下的***环境管理方法及装置 | |
CN107992379A (zh) | 一种读取数据信息的方法、移动终端及计算机可读介质 | |
CN106155713A (zh) | 启动信息管理方法及装置 | |
CN105956475A (zh) | Dll文件的拦截处理方法、装置及电子设备 | |
CN103365674A (zh) | 一种基于移动终端的插件管理方法、装置和*** | |
CN105893555A (zh) | 一种浏览器界面的显示方法、装置及电子设备 | |
CN102857817A (zh) | 一种可动态加载的机顶盒生产***及方法 | |
CN109189426A (zh) | 一种升级方法、装置、存储介质及电子设备 | |
CN1971511A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190109 Address after: Room 105-53811, No. 6 Baohua Road, Hengqin New District, Shenzhen City, Guangdong Province Applicant after: Zhuhai Leopard Technology Co.,Ltd. Address before: 100085 East District, Second Floor, 33 Xiaoying West Road, Haidian District, Beijing Applicant before: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |