CN110673869B - 库文件的加载方法、装置及系统 - Google Patents
库文件的加载方法、装置及系统 Download PDFInfo
- Publication number
- CN110673869B CN110673869B CN201910904352.2A CN201910904352A CN110673869B CN 110673869 B CN110673869 B CN 110673869B CN 201910904352 A CN201910904352 A CN 201910904352A CN 110673869 B CN110673869 B CN 110673869B
- Authority
- CN
- China
- Prior art keywords
- target
- version
- upgrade
- file
- library
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种库文件的加载方法、装置及系统,属于计算机技术领域。所述方法包括:获取目标程序待加载的目标库文件的升级库目录,升级库目录包括:目标接口的至少一个版本一一对应的至少一个子目录,目标接口用于加载目标库文件,目标接口的每个版本对应的子目录包括:目标接口的每个版本兼容的目标库文件的升级版本;确定目标程序中目标接口的当前版本在升级库目录中对应的目标子目录;通过目标接口的当前版本加载目标子目录中的目标升级版本,目标升级版本为目标子目录中目标库文件的任一升级版本。本申请解决了程序调用接口加载该库文件可能会导致程序崩溃的问题,本申请用于库文件的加载。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种库文件的加载方法、装置及系统。
背景技术
随着计算机技术的发展,运行在终端中的程序越来越多。终端在运行程序时,需要通过程序的接口加载库文件。
相关技术中,终端中存储有程序的库目录,该库目录包括该程序在运行时需要加载的各个库文件。终端在通过程序加载库文件时,终端可以根据该库文件的名称,在本地存储的多个库目录中查找该程序的库文件,并将第一个查找到的库文件作为待加载的库文件。之后,再调用该程序中用于加载该库文件的接口加载该库文件。
但是,终端中通常存储有多个库目录,上述第一个查找到的库文件可能与程序中用于加载该库文件的接口并不兼容,因此调用该程序的接口加载该库文件可能会导致程序崩溃。
发明内容
本申请提供了一种库文件的加载方法、装置及系统,可以解决调用程序的接口加载库文件可能会导致程序崩溃的问题,所述技术方案如下:
一方面,提供了一种库文件的加载方法,所述方法包括:
获取目标程序待加载的目标库文件的升级库目录,所述升级库目录包括:目标接口的至少一个版本一一对应的至少一个子目录,所述目标接口用于加载所述目标库文件,所述目标接口的每个版本对应的子目录包括:所述目标接口的所述每个版本兼容的所述目标库文件的升级版本;
确定所述目标程序中所述目标接口的当前版本在所述升级库目录中对应的目标子目录;
通过所述目标接口的当前版本加载所述目标子目录中的目标升级版本,所述目标升级版本为所述目标子目录中目标库文件的任一升级版本。
另一方面,提供了一种库文件的加载装置,所述库文件的加载装置包括:
第一获取模块,用于获取目标程序待加载的目标库文件的升级库目录,所述升级库目录包括:目标接口的至少一个版本一一对应的至少一个子目录,所述目标接口用于加载所述目标库文件,所述目标接口的每个版本对应的子目录包括:所述目标接口的所述每个版本兼容的所述目标库文件的升级版本;
第一确定模块,用于确定所述目标程序中所述目标接口的当前版本在所述升级库目录中对应的目标子目录;
第一加载模块,用于通过所述目标接口的当前版本加载所述目标子目录中的目标升级版本,所述目标升级版本为所述目标子目录中目标库文件的任一升级版本。
又一方面,提供了一种库文件的加载系统,所述库文件的加载系统包括:终端和服务器,所述终端包括上述库文件的加载装置。
本申请提供的技术方案带来的有益效果至少包括:
本发明实施例提供的库文件的加载方法中,目标库文件具有升级库目录,并且,该升级库目录包括目标程序中用于加载目标库文件的目标接口的至少一个版本对应的子目录。在加载目标库文件时,可以基于目标程序中目标接口的当前版本,查找该当前版本对应的目标子目录,进而在该目标子目录中得到与目标接口的当前版本兼容的目标升级版本,并加载该目标升级版本。由于目标子目录中的升级版本均与目标接口的当前版本兼容,因此,能够避免目标程序崩溃。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种库文件的加载方法的应用场景示意图;
图2为本发明实施例提供的一种库文件的加载方法的流程图;
图3为本发明实施例提供的一种库文件的加载方法中库文件获取阶段的流程图;
图4为本发明实施例提供的一种库文件的加载方法中库文件加载阶段的流程图;
图5是本发明实施例提供的一种库文件的加载装置的结构示意图;
图6是本发明实施例提供的另一种库文件的加载装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1为本发明实施例提供的一种库文件的加载方法的应用场景示意图,如图1所示,该应用场景包括库文件的加载系统。该加载系统包括:终端01和服务器02。
其中,终端01可以为手机、平板电脑、电视等电子设备。服务器02可以为一个服务器或多个服务器组成的服务器集群。终端01上可以运行有程序,终端在运行程序时,需要调用接口加载一个或多个库文件,以实现该程序的功能。需要说明的是,程序具有至少一个版本,程序的不同版本在运行时可能需要加载同一库文件。并且,用于加载每个库文件的接口也存在至少一个版本,且每个程序版本中用于加载库文件的接口的版本固定,不同程序版本中用于加载同一库文件的接口的版本可能相同,也可能不同。
相关技术中,终端中存储有多个程序的库目录,且每个程序的库目录包括该程序在运行时需要加载的各个库文件。终端在通过某一程序的接口加载某一库文件时,终端可以根据该库文件的名称,在本地存储的多个库目录中查找该库文件,并将查找到的第一个库文件作为待加载的库文件。之后,再调用该程序的接口加载该库文件。但是,终端中通常存储有多个程序的多个库目录,且不同程序的库目录可能包括的库文件的名称相同,且这两个程序中用于加载该库文件的接口的版本可能不同。这样一来,上述第一个查找到的库文件可能并不兼容于该接口的当前版本,因此调用该接口的当前版本加载该库文件可能会导致程序崩溃。
示例地,程序1和程序2中用于加载库文件1的接口均为接口1,且程序1中接口1的版本为第一接口版本,程序2中的接口1的版本为第二接口版本。程序1和程序2的库目录中均存在库文件1,但是,库文件1与第二接口版本兼容,且与第一接口版本不兼容。在终端通过程序1的接口1加载库文件1时,终端找到的第一个库文件与第一接口版本并不兼容,若终端采用程序1的接口1(第一接口版本)加载该库文件1,则会导致该程序1崩溃。
本发明实施例提供了一种库文件的加载方法,终端采用该方法记载库文件,能够避免程序崩溃。示例地,图2为本发明实施例提供的一种库文件的加载方法的流程图。该方法可以用于图1中的终端01,如图2所示,该库文件的加载方法包括:
步骤201、获取目标程序待加载的目标库文件的升级库目录,升级库目录包括:目标接口的至少一个版本一一对应的至少一个子目录,目标接口用于加载目标库文件,目标接口的每个版本对应的子目录包括:目标接口的每个版本兼容的目标库文件的升级版本;
步骤202、确定目标程序中目标接口的当前版本在升级库目录中对应的目标子目录;
步骤203、通过目标接口的当前版本加载目标子目录中的目标升级版本,目标升级版本为目标子目录中目标库文件的任一升级版本。
综上所述,本发明实施例提供的库文件的加载方法中,目标库文件具有升级库目录,并且,该升级库目录包括目标程序中用于加载目标库文件的目标接口的至少一个版本对应的子目录。在加载目标库文件时,可以基于目标程序中目标接口的当前版本,查找该当前版本对应的目标子目录,进而在该目标子目录中得到与目标接口的当前版本兼容的目标升级版本,并加载该目标升级版本。由于目标子目录中的升级版本均与目标接口的当前版本兼容,因此,能够避免目标程序崩溃。
示例地,该库文件的加载方法可以包括:如图3所示的库文件获取阶段,以及如图4所示的库文件加载阶段。以下将对这两个阶段分别进行解释说明。
如图3所示,该库文件的加载方法中的库文件获取阶段可以包括:
步骤301、终端向服务器发送目标库文件的升级请求。
终端在启动用于加载待加载的目标库文件的目标程序后,便可以周期性地向服务器发送升级请求。该升级请求可以携带有该目标程序中目标接口的版本标识,以及目标库文件的标识。该升级请求用于请求对目标接口兼容的目标库文件进行升级。
需要说明的是,终端中可以运行有一个或多个程序,目标程序可以为终端中运行的任一程序。
步骤302、服务器向终端发送目标库文件的目标升级版本的升级响应。
服务器在接收到终端发送的升级请求后,需要基于该升级请求检查兼容于该目标接口的目标库文件是否存在升级后的版本(本发明实施例中称之为目标升级版本),并在存在该目标升级版本时,获取该目标升级版本及其参数。之后,服务器需要向终端发送目标库文件的目标升级版本的升级响应,该升级响应可以携带有这些参数,示例地,这些参数可以包括目标升级版本的压缩包的下载地址。
可选地,升级响应还携带有目标升级版本的标识,以及目标接口的目标接口版本的标识,目标程序的目标接口为目标程序中用于加载目标库文件的接口。需要说明的是,本发明实施例中的接口是指软件接口,可以是目标程序调用目标库文件的规则。
可选地,升级响应还携带有:服务器对目标升级版本的第一验证信息进行第一处理(如使用服务器的私钥计算)得到的第二验证信息,第一验证信息由服务器通过对目标升级版本进行第二处理得到。示例地,该第一验证信息可以为目标升级版本的信息摘要(也称md5),当然该第一验证信息也可以是其他的验证信息,本发明实施例对此不作限定。当第一验证信息为md5时,第二验证信息可以为目标升级版本的签名信息(可以称为sign)。
可选地,升级响应还携带有:压缩包的文件大小,以及服务器对压缩包进行第三处理得到的压缩包的验证信息。该压缩包的验证信息也可以为压缩包的md5。
需要说明的是,当升级响应包括:上述下载地址、目标升级版本的标识、目标接口版本的标识、第一验证信息、第二验证信息、压缩包的文件大小和压缩包的验证信息时,在步骤301之前,服务器需要获取目标升级版本,并生成上述目标升级版本的这些参数。
示例地,假设服务器将目标升级版本命名为libname.tmp。服务器可以基于该目标升级版本libname.tmp生成目标升级版本的md5,再基于目标升级版本的md5生成目标文件版本的签名信息。服务器还可以对目标升级版本进行压缩,得到目标升级版本的压缩包(可以命名为libname.zip),服务器还可以生成压缩包libname.zip的md5和文件大小(也称size)。服务器在生成压缩包后,还可以将压缩包上传至内容分发网络(content deliverynetwork,cdn)中,以获取到该压缩包在内容分发网络中的下载地址,如统一资源定位符(uniform resourcelocator,url)。服务器还可以生成上述目标升级版本的标识,以及该目标接口版本的标识。目标升级版本的参数可以包括:压缩包的文件大小(size),压缩包的md5,目标升级版本的签名信息(sign),压缩包的下载地址(url),目标升级版本(表示为libname),目标接口版本的标识,以及目标升级版本的标识。
可选地,该目标升级版本的参数还可以包括:检查升级指示(可以称为checkupgrade),该检查升级指示用于指示是否能够进行目标库文件的升级。
步骤303、终端在目标程序中目标接口的当前版本的标识与升级响应携带的目标接口版本的标识相同,且目标接口当前加载的目标库文件的版本的标识与升级响应携带的目标升级版本的标识不同时,根据升级响应携带的下载地址下载目标升级版本的压缩包。
终端在接收到上述升级响应后,可以首先对升级响应进行验签,以确定该升级响应是否被篡改。示例地,终端可以采用非对称加密算法(也称RSA)对升级响应进行验签。
在对升级响应验签后,若确定该升级响应被篡改,则终端可以停止执行后续步骤。若确定该升级响应未被篡改,则终端可以获取升级响应携带的目标升级版本的参数。比如上述压缩包的文件大小(size),压缩包的md5,目标升级版本的签名信息(sign),压缩包的下载地址(url),目标升级版本(表示为libname),目标程序的目标接口版本的标识,目标文件版本的标识,以及检查升级指示(可以称为check upgrade)。
可选地,当目标升级版本的参数包括上述检查升级指示时,终端可以在该检查升级指示用于指示能够进行目标库文件的升级时,才执行步骤303。本发明实施例对此不作限定。在该检查升级指示用于指示不能进行目标库文件的升级时,则终端可以无需执行后续步骤。
在执行步骤303时,终端可以检查目标接口当前加载的目标库文件的版本的标识,以及目标接口的当前版本的标识。之后,再比较目标接口当前加载的目标库文件的版本的标识与升级响应中携带的目标升级版本的标识,以及目标接口的当前版本的标识与目标程序的目标接口版本的标识进行比较。在目标接口的当前版本的标识与升级响应携带的目标接口版本的标识相同,且目标接口当前加载的目标库文件的版本的标识与升级响应携带的目标升级版本的标识不同时,终端可以根据升级响应携带的下载地址下载目标升级版本的压缩包。
在目标接口的当前版本的标识与升级响应携带的目标接口版本的标识相同,且当前加载的目标库文件的版本的标识与升级响应携带的目标升级版本的标识相同时,终端无需对目标库文件进行升级,所以无需执行后续步骤。在目标接口的当前版本的标识与升级响应携带的目标接口版本的标识不同时,表明升级响应错误,此时也不能对目标库文件进行升级,所以无需执行后续步骤。
步骤304、当压缩包的文件大小与升级响应携带的文件大小相同时,终端对压缩包进行第三处理,得到压缩包的验证信息。
终端在下载好目标升级版本的压缩包后,为了保证压缩包的正确性,需要对压缩包进行验证。示例地,终端可以将压缩包的文件大小与升级响应携带的文件大小进行比对,以确定该压缩包与升级响应指示的压缩包是否一致。当下载的压缩包的文件大小与升级响应携带的文件大小相同时,终端还可以对压缩包进行第三处理,得到压缩包的验证信息(如md5),以便于进一步确定压缩包的正确性。
当压缩包的文件大小与升级响应携带的文件大小不同时,表明压缩包错误,此时终端可以删除该压缩包,并无需执行后续步骤。
步骤305、当生成的压缩包的验证信息与升级响应携带的压缩包的验证信息相同时,终端将压缩包存储在目标子目录中。
终端在生成压缩包的验证信息后,可以将该压缩包的验证信息与升级响应中携带的压缩包的验证信息进行比对。当终端生成的压缩包的验证信息与升级响应中携带的压缩包的验证信息相同时,终端可以确定压缩包正确,此时可以将压缩包进行存储。
示例地,终端中存储有目标程序运行时需要调用的每个库文件的升级库目录,并且每个升级库目录还包括目标程序中目标接口的每个版本对应的子目录。终端在存储压缩包时,可以先查找该目标库文件的升级库目录,之后,在基于该升级库目录中查找目标接口的当前版本(与目标接口版本相同)对应的目标子目录。最后,终端可以将该压缩包存储在该目标子目录中。
当生成的压缩包的验证信息与升级响应携带的压缩包的验证信息不同时,表明压缩包错误,此时终端可以删除该压缩包,并无需执行后续步骤。
步骤306、终端对压缩包解压,得到目标升级版本。
终端在确定目标升级版本的压缩包正确后,还可以对该压缩包进行解压,以得到目标升级版本。
步骤307、终端对目标升级版本进行第二处理,得到目标升级版本的第一验证信息。
终端在生成目标升级版本后,还需要对该目标升级版本进行验证,以确定该目标升级版本是否正确。示例地,终端可以首先对目标升级版本进行第二处理,得到目标升级版本的第一验证信息(如md5)。在步骤307之后,终端可以将生成的该第一验证信息与升级响应携带的第一验证信息进行比较。当终端生成的第一验证信息与升级响应携带的第一验证信息相同时,表明目标升级版本正确,此时可以执行步骤308;当终端生成的第一验证信息与升级响应携带的第一验证信息不同时,表明目标升级版本错误,此时可以删除该目标升级版本及其压缩包。
步骤308、当生成的第一验证信息与升级响应携带的第一验证信息相同时,终端将第二验证信息写入目标升级版本,以得到目标升级版本的验证文件。
验证文件的名称包括:目标升级版本的指示信息,第二验证信息,第二验证信息的写入成功指示,以及临时文件标识。例如,目标升级版本的名称为:libname.tmp,第二验证信息为sign,该写入成功指示为:ok,则验证文件的名称为:libname.ok.sign.tmp,其中,libname为目标升级版本的指示,tmp为临时文件标识。
步骤309、终端对验证文件进行第一重命名,以得到第一文件。
在得到验证文件后,终端可以将验证文件进行第一重命名,以得到第一文件。该第一文件的名称包括:目标升级版本的指示信息,第二验证信息,以及第一重命名的成功指示。例如,目标升级版本的名称为:libname.tmp,第二验证信息为sign,该第一重命名的成功指示为:ok,则第二文件版本的名称为:libname.ok.sign,其中,libname为目标升级版本的指示信息。
需要说明的是,若对验证文件无法进行第一重命名,也即第一重命名失败,则说明终端不具有验证文件的写权限,后续终端也无法利用该验证文件,此时可以将验证文件、目标升级版本及其压缩包均删除。
步骤310、终端在目标子目录中存储第一文件。
步骤311、对目标升级版本进行第三重命名,以得到目标升级版本的第二文件。
其中,第二文件的名称包括目标升级版本的指示信息,以及第三重命名的成功指示。例如,目标升级版本的名称为:libname.tmp,该第二重命名的成功指示为:ok,则第二文件版本的名称为:libname.ok,其中,libname为目标升级版本的指示信息。
由于第二文件是由目标升级版本重命名得到的,因此第二文件仅与目标升级版本的名称不同,该第二文件的内容与目标升级版本的内容相同。
需要说明的是,若对目标升级版本无法进行第三重命名,也即第三重命名失败,则说明终端不具有目标升级版本的写权限,后续终端也无法调用该目标升级版本,此时可以将目标升级版本及其压缩包均删除。
步骤312、终端将第二文件存储在目标子目录中。
终端在得到第二文件后,可以将第二文件也存储在目标子目录中。且由于第二文件的内容与目标升级版本的内容相同,因此在目标子目录中存储第二文件相当于在目标子目录中存储了目标升级版本。
至此,终端自动获取到目标库文件升级后的版本(也即目标升级版本)的相关文件(如目标升级版本的压缩包、第一文件和第二文件),并在目标子目录中存储了这些相关文件。后续终端可以基于这些相关文件,加载目标升级版本,以对目标库文件进行升级。
示例地,如图4所示,该库文件的加载方法中的库文件加载阶段可以包括:
步骤401、终端获取目标程序待加载的目标库文件的升级库目录。
示例地,升级库目录包括目标接口的至少一个版本一一对应的至少一个子目录,目标接口的每个版本对应的子目录包括:目标接口的该版本兼容的目标库文件的至少一个升级版本。在步骤401之前,若目标库文件存在升级情况,则终端可以参考图3所示的实施例获取到该目标库文件升级后每个版本(图3中以获取目标升级版本为例)的相关文件。本发明实施例在此不做赘述。
步骤402、终端确定目标程序中目标接口的当前版本在升级库目录中对应的目标子目录。
终端在获取到该目标库文件的升级库目录后,便可以先确定加载目标库文件的目标接口的当前版本(也即该目标接口在目标程序中的版本),并在该升级库目录中查找该当前版本对应的子目录(本发明实施例中以该子目录为目标子目录为例)。
步骤403、终端对目标子目录中的第一文件进行第二重命名,以得到目标升级版本的验证文件。
终端对第一文件进行第二重命名的过程可以为前述第一重命名的逆过程,本发明实施例在此不作赘述。验证文件包括上述第二验证信息。
并且,若终端对该第一文件进行第二重命名成功,则表明当前该第一文件能够被终端使用,此时可以执行后续步骤。
步骤404、终端获取验证文件中的第二验证信息。
步骤405、终端对获取到第二验证信息进行第一处理的逆处理,得到第三验证信息。
终端在获取到目标升级版本的第二验证信息后,可以对该第二验证信息进行第一处理的逆处理(如采用终端的公钥和第二验证信息进行计算),以得到第三验证信息。
步骤406、终端对目标子目录中的第二文件进行第四重命名,以得到目标升级版本。
由于目标升级版本的第二文件为对目标升级版本进行第三重命名得到,因此,终端还可以对该第二文件进行第三重命名的逆命名(可以称为第四重命名),以得到目标升级版本。并且,若终端对该第二文件进行第四重命名成功,则表明当前该第二文件能够被终端使用,此时可以执行后续步骤。
步骤407、终端对目标升级版本进行第二处理,以得到第一验证信息。
步骤407可以参考前述步骤中第二处理的过程,本发明实施例在此不做赘述。
步骤408、在第一验证信息与第三验证信息相同时,终端通过目标接口的当前版本加载目标升级版本。
在终端通过目标接口的当前版本加载目标升级版本时,该目标库文件就升级为目标升级版本。
需要说明的是,上述实施例中以目标子目录包括第一文件和第二文件,且上述第二重命名和第四重命名均成功为例。可选地,若目标子目录不包括上述第一文件,和/或,目标子目录不包括上述第二文件,和/或,对第一文件的第二重命名失败,和/或,对第二文件的第四重命名失败,则终端可以认为条件集合中的至少一个条件满足,此时无法通过目标接口的当前版本加载目标升级版本。终端可以获取目标库文件的原始库目录,并通过目标接口的当前版本加载该原始库目录中目标库文件未升级的原始文件版本。需要说明的是,目标接口的任一版本均与该原始文件版本兼容。
可选地,当目标子目录不包括第一文件时,终端还可以检测目标子目录中是否存在上述验证文件。若目标子目录中存在该验证文件,则终端可以不执行上述步骤403,而是直接获取该验证文件。若目标子目录中不存在验证文件,则终端可以获取目标库文件的原始库目录,并通过目标接口的当前版本加载该原始库目录中的原始文件版本。
可选地,当目标子目录不包括第二文件时,终端还可以检测目标子目录中是否存在上述目标升级版本。若目标子目录中存在该目标升级版本,则终端可以不执行上述步骤406。若目标子目录中不存在目标升级版本,则终端可以获取目标库文件的原始库目录,并通过目标接口的当前版本加载该原始库目录中的原始文件版本。
可选地,终端在获取目标库文件的原始库目录,并通过目标接口的当前版本加载该原始库目录中的原始文件版本时,还可以删除该子目录中目标升级版本的相关文件(如上述第一文件、第二文件等)。
综上所述,本发明实施例提供的库文件的加载方法中,目标库文件具有升级库目录,并且,该升级库目录包括目标程序中用于加载目标库文件的目标接口的至少一个版本对应的子目录。在加载目标库文件时,可以基于目标程序的目标接口的当前版本,查找该当前版本对应的目标子目录,进而在该目标子目录中得到与目标接口的当前版本兼容的目标升级版本,并加载该目标升级版本。由于目标子目录中的升级版本均与目标接口的当前版本兼容,因此,能够避免目标程序崩溃。
另外,本发明实施例中能够对程序运行时需要加载的库文件进行单独升级,因此,无需对整个程序的所有文件进行升级,能够大大减少升级过程中的流量消耗,以及提高升级效率和灵活性。
再者,本发明实施例中在库文件获取阶段和库文件加载阶段均对文件进行了反复的验证,以防止文件出错,因此,能够保证库文件加载的准确性和安全性。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
本发明实施例提供了一种库文件的加载装置,其应用于图1所示的终端。如图5所示,该库文件的加载装置50包括:
第一获取模块501,用于获取目标程序待加载的目标库文件的升级库目录,升级库目录包括:目标接口的至少一个版本一一对应的至少一个子目录,目标接口用于加载目标库文件,目标接口的每个版本对应的子目录包括:目标接口的每个版本兼容的目标库文件的至少一个升级版本;
第一确定模块502,用于确定目标程序中目标接口的当前版本在升级库目录中对应的目标子目录;
第一加载模块503,用于通过目标接口的当前版本加载目标子目录中的目标升级版本,目标升级版本为目标子目录中目标库文件的任一升级版本。
可选地,该库文件的加载装置还包括:
发送模块,用于向服务器发送目标库文件的升级请求;
接收模块,用于接收服务器发送的目标升级版本的升级响应,升级响应携带有目标升级版本的压缩包的下载地址;
下载模块,用于根据下载地址下载目标升级版本的压缩包;
解压模块,用于对压缩包解压,得到目标升级版本;
存储模块,用于将目标升级版本的相关文件存储在目标子目录中,相关文件包括:目标升级版本。
可选地,升级响应还携带有:服务器对目标升级版本的第一验证信息进行第一处理得到的第二验证信息,第一验证信息由服务器对目标升级版本进行第二处理得到,相关文件还包括:携带有第二验证信息的第一文件,库文件的加载装置还可以包括:
第一处理模块,用于在通过目标接口的当前版本加载目标子目录中的目标升级版本之前,获取目标子目录中第一文件携带的第二验证信息;
第二处理模块,用于对获取到第二验证信息进行第一处理的逆处理,得到第三验证信息;
第三处理模块,用于对目标升级版本进行第二处理,以得到第一验证信息;
第一加载模块用于:在第一验证信息与第三验证信息相同时,通过目标接口的当前版本加载目标子目录中的目标升级版本。
可选地,库文件的加载装置还包括:
写入模块,用于将第二验证信息写入目标升级版本,以得到目标升级版本的验证文件;
第一重命名模块,用于对验证文件进行第一重命名,以得到第一文件;
第一处理模块用于:对目标子目录中的第一文件进行第二重命名,以得到验证文件;获取验证文件中的第二验证信息。
可选地,第一存储模块用于:
对目标升级版本进行第三重命名,以得到目标升级版本的第二文件;
将第二文件存储在目标子目录中;
库文件的加载装置还包括:
第四重命名模块,用于对目标子目录中的第二文件进行第四重命名,以得到目标升级版本。
可选地,库文件的加载装置还包括:
第二获取模块,用于在条件集合中的至少一个条件满足时,获取目标库文件的原始库目录,原始库目录包括:目标库文件未升级的原始文件版本,目标接口的任一版本均与原始文件版本兼容;
加载模块,用于通过目标接口的当前版本加载原始文件版本;
条件集合包括:
目标子目录不包括第一文件;
目标子目录不包括第二文件;
第二重命名失败;
第四重命名失败。
可选地,升级响应还携带有目标升级版本的标识,以及目标接口的目标接口版本的标识,目标升级版本与目标接口版本兼容;
下载模块用于:
在目标接口的当前版本的标识与目标接口版本的标识相同,且目标接口当前加载的目标库文件的版本的标识与目标升级版本的标识不同时,根据下载地址下载目标升级版本的压缩包。
可选地,升级响应还携带有:压缩包的文件大小,以及服务器对压缩包进行第三处理得到的压缩包的验证信息,库文件的加载装置还包括:
解压模块,用于在对压缩包解压,得到目标升级版本之前,当压缩包的文件大小与升级响应携带的文件大小相同时,对压缩包进行第三处理,得到压缩包的验证信息;
信息生成模块,用于在对压缩包解压,得到目标升级版本之后,对目标升级版本进行第二处理,得到目标升级版本的第一验证信息;
第一存储模块用于:
当第三处理得到的压缩包的验证信息与升级响应携带的压缩包的验证信息相同时,将压缩包存储在目标子目录中,相关文件还包括压缩包;
当第二处理得到的第一验证信息与升级响应携带的第一验证信息相同时,将第一文件存储在目标子目录中。
本发明实施例提供了另一种库文件的加载装置,如图6所示,所述库文件的加载装置60包括:
处理器601,以及用于存储处理器601的可执行指令的存储器602。
其中,处理器601被配置为:在运行可执行指令时,能够实现本发明实施例提供的任一库文件的加载方法中终端执行的步骤。
本发明实施例提供了一种可读存储介质,该可读存储介质中存储有指令,当指令在处理组件上运行时,使得处理组件可以执行本发明实施例提供的库文件的加载方法中终端执行的步骤。
本发明实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机可以执行本发明实施例提供的库文件的加载方法中终端执行的步骤。
在本发明实施例中,术语“第一”和“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。
需要说明的是,本发明实施例提供的方法实施例能够与相应的装置实施例相互参考,本发明实施例对此不做限定。本发明实施例提供的方法实施例步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种库文件的加载方法,其特征在于,所述方法包括:
向服务器发送目标库文件的升级请求,所述升级请求用于请求对目标接口兼容的目标库文件进行升级,所述服务器用于基于所述升级请求检查兼容于所述目标接口的目标库文件是否存在升级后的版本,并在存在时,获取目标升级版本的参数,所述目标升级版本的参数包括所述目标升级版本的压缩包的下载地址;
接收所述服务器发送的所述目标升级版本的升级响应,所述升级响应携带有所述目标升级版本的压缩包的下载地址;
根据所述下载地址下载所述目标升级版本的压缩包;
对所述压缩包解压,得到所述目标升级版本;
将所述目标升级版本的相关文件存储在目标子目录中,所述相关文件包括:所述目标升级版本;
获取目标程序待加载的所述目标库文件的升级库目录,所述升级库目录包括:所述目标接口的至少一个版本一一对应的至少一个子目录,所述目标接口用于加载所述目标库文件,所述目标接口的每个版本对应的子目录包括:所述目标接口的所述每个版本兼容的所述目标库文件的至少一个升级版本;
确定所述目标程序中所述目标接口的当前版本在所述升级库目录中对应的所述目标子目录;
通过所述目标接口的当前版本加载所述目标子目录中的目标升级版本,所述目标升级版本为所述目标子目录中目标库文件的任一升级版本。
2.根据权利要求1所述的方法,其特征在于,所述升级响应还携带有:所述服务器对所述目标升级版本的第一验证信息进行第一处理得到的第二验证信息,所述第一验证信息由所述服务器对所述目标升级版本进行第二处理得到,所述相关文件还包括:携带有所述第二验证信息的第一文件,所述方法还包括:
在所述通过所述目标接口的当前版本加载所述目标子目录中的目标升级版本之前,获取所述目标子目录中所述第一文件携带的所述第二验证信息;
对获取到所述第二验证信息进行所述第一处理的逆处理,得到第三验证信息;
对所述目标升级版本进行所述第二处理,以得到所述第一验证信息;
所述通过所述目标接口的当前版本加载所述目标子目录中的目标升级版本,包括:
在所述第一验证信息与所述第三验证信息相同时,通过所述目标接口的当前版本加载所述目标升级版本。
3.根据权利要求2所述的方法,其特征在于,在对所述压缩包解压,得到所述目标升级版本之后,所述方法还包括:
将所述第二验证信息写入所述目标升级版本,以得到所述目标升级版本的验证文件;
对所述验证文件进行第一重命名,以得到所述第一文件;
获取所述目标子目录中所述第一文件携带的所述第二验证信息,包括:
对所述目标子目录中的所述第一文件进行第二重命名,以得到所述验证文件;
获取所述验证文件中的所述第二验证信息。
4.根据权利要求3所述的方法,其特征在于,将所述目标升级版本的相关文件存储在所述目标子目录中,包括:
对所述目标升级版本进行第三重命名,以得到所述目标升级版本的第二文件;
将所述第二文件存储在所述目标子目录中;
在通过所述目标接口的当前版本加载所述目标子目录中的目标升级版本之前,所述方法还包括:
对所述目标子目录中的所述第二文件进行第四重命名,以得到所述目标升级版本。
5.根据权利要求4所述的方法,其特征在于,在确定所述目标程序中所述目标接口的当前版本在所述升级库目录中对应的目标子目录之后,所述方法还包括:
在条件集合中的至少一个条件满足时,获取所述目标库文件的原始库目录,所述原始库目录包括:所述目标库文件未升级的原始文件版本,所述目标接口的任一版本均与所述原始文件版本兼容;
通过所述目标接口的当前版本加载所述原始文件版本;
所述条件集合包括:
所述目标子目录不包括所述第一文件;
所述目标子目录不包括所述第二文件;
所述第二重命名失败;
所述第四重命名失败。
6.根据权利要求2至5任一所述的方法,其特征在于,所述升级响应还携带有所述目标升级版本的标识,以及所述目标接口的目标接口版本的标识,所述目标升级版本与所述目标接口版本兼容;
根据所述下载地址下载所述目标升级版本的压缩包,包括:
在所述目标接口的当前版本的标识与所述目标接口版本的标识相同,且所述目标接口当前加载的所述目标库文件的版本的标识与所述目标升级版本的标识不同时,根据所述下载地址下载所述目标升级版本的压缩包。
7.根据权利要求6所述的方法,其特征在于,所述升级响应还携带有:所述压缩包的文件大小,以及所述服务器对所述压缩包进行第三处理得到的所述压缩包的验证信息,所述方法还包括:
在对所述压缩包解压,得到所述目标升级版本之前,当所述压缩包的文件大小与所述升级响应携带的文件大小相同时,对所述压缩包进行所述第三处理,得到所述压缩包的验证信息;
在对所述压缩包解压,得到所述目标升级版本之后,对所述目标升级版本进行第二处理,得到所述目标升级版本的第一验证信息;
将所述目标升级版本的相关文件存储在所述目标子目录中,包括:
当所述第三处理得到的所述压缩包的验证信息与所述升级响应携带的所述压缩包的验证信息相同时,将所述压缩包存储在所述目标子目录中,所述相关文件还包括所述压缩包;
当所述第二处理得到的所述第一验证信息与所述升级响应携带的所述第一验证信息相同时,将所述第一文件存储在所述目标子目录中。
8.一种库文件的加载装置,其特征在于,所述库文件的加载装置包括:
发送模块,用于向服务器发送目标库文件的升级请求,所述升级请求用于请求对目标接口兼容的目标库文件进行升级,所述服务器用于基于所述升级请求检查兼容于所述目标接口的目标库文件是否存在升级后的版本,并在存在时,获取目标升级版本的参数,所述目标升级版本的参数包括所述目标升级版本的压缩包的下载地址;
接收模块,用于接收所述服务器发送的所述目标升级版本的升级响应,所述升级响应携带有所述目标升级版本的压缩包的下载地址;
下载模块,用于根据所述下载地址下载所述目标升级版本的压缩包;
解压模块,用于对所述压缩包解压,得到所述目标升级版本;
存储模块,用于将所述目标升级版本的相关文件存储在目标子目录中,所述相关文件包括:所述目标升级版本;
第一获取模块,用于获取目标程序待加载的所述目标库文件的升级库目录,所述升级库目录包括:所述目标接口的至少一个版本一一对应的至少一个子目录,所述目标接口用于加载所述目标库文件,所述目标接口的每个版本对应的子目录包括:所述目标接口的所述每个版本兼容的所述目标库文件的升级版本;
第一确定模块,用于确定所述目标程序中所述目标接口的当前版本在所述升级库目录中对应的所述目标子目录;
第一加载模块,用于通过所述目标接口的当前版本加载所述目标子目录中的目标升级版本,所述目标升级版本为所述目标子目录中目标库文件的任一升级版本。
9.一种库文件的加载系统,其特征在于,所述库文件的加载系统包括:终端和服务器,所述终端包括权利要求8所述的库文件的加载装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910904352.2A CN110673869B (zh) | 2019-09-24 | 2019-09-24 | 库文件的加载方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910904352.2A CN110673869B (zh) | 2019-09-24 | 2019-09-24 | 库文件的加载方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110673869A CN110673869A (zh) | 2020-01-10 |
CN110673869B true CN110673869B (zh) | 2023-09-12 |
Family
ID=69077425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910904352.2A Active CN110673869B (zh) | 2019-09-24 | 2019-09-24 | 库文件的加载方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110673869B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182255B (zh) * | 2014-08-20 | 2017-11-21 | 青岛海信宽带多媒体技术有限公司 | 一种系统应用的库文件升级方法及终端 |
JP6409514B2 (ja) * | 2014-11-10 | 2018-10-24 | 日本電気株式会社 | 情報処理装置およびライブラリロード方法、並びにコンピュータ・プログラム |
CN107038045B (zh) * | 2017-03-30 | 2022-10-14 | 腾讯科技(深圳)有限公司 | 加载库文件的方法及装置 |
-
2019
- 2019-09-24 CN CN201910904352.2A patent/CN110673869B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110673869A (zh) | 2020-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729041B (zh) | 应用程序热更新方法、装置、终端和存储介质 | |
CN110058873B (zh) | 应用页面更新方法、装置、设备和存储介质 | |
US6996818B2 (en) | Update system for facilitating software update and data conversion in an electronic device | |
US20160378458A1 (en) | Method and device for system application installation package, and terminal | |
CN105786538B (zh) | 基于安卓系统的软件升级方法和装置 | |
CN107911401B (zh) | 应用插件扩展功能方法及应用服务器 | |
CN110162964B (zh) | 一种文件篡改的检查方法、装置及系统 | |
CN104052818A (zh) | 一种移动终端的版本升级方法及装置 | |
CN107256161B (zh) | 基于electron技术的客户端升级方法 | |
CN112463191A (zh) | 一种文件更新方法及装置、设备、存储介质 | |
CN110765394A (zh) | so文件加载方法、装置、存储介质及终端设备 | |
CN111538523A (zh) | 差分升级方法、设备及存储介质 | |
CN114780019A (zh) | 电子设备的管理方法、装置、电子设备及存储介质 | |
CN106354832B (zh) | 一种数据发布方法、设备及系统 | |
CN112328284A (zh) | 应用程序升级方法、系统、设备和存储介质 | |
CN110673869B (zh) | 库文件的加载方法、装置及系统 | |
CN104158907A (zh) | 应用程序文件下载方法及装置 | |
CN106155723B (zh) | 业务应用程序的升级方法和装置、终端和计算机存储介质 | |
CN109766084B (zh) | 支付应用的定制开发方法、装置、计算机设备和存储介质 | |
CN109684026B (zh) | App皮肤更换方法、装置、电子设备及存储介质 | |
CN106569841B (zh) | 一种文件加载方法和装置 | |
CN114756261B (zh) | 一种容器集群的升级方法、系统、电子设备及介质 | |
CN113867756A (zh) | 软件升级方法、终端设备及可读存储介质 | |
CN112559131A (zh) | 更新容器镜像的方法、装置、设备及计算机可读存储介质 | |
CN110569088A (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 |