编译项目文件的更新方法、装置、存储介质及电子装置与流程

文档序号:31662936发布日期:2022-09-27 23:24阅读:100来源:国知局
编译项目文件的更新方法、装置、存储介质及电子装置与流程

1.本发明实施例涉及计算机领域,具体而言,涉及一种编译项目文件的更新方法、装置、存储介质及电子装置。


背景技术:

2.随着业务扩展,功能增加,客户端会不断迭代更新版本。版本更新过程中,通常有两种方法让用户更新程序。一个是提供新的完整程序安装包供用户下载安装。另一个是提供增量更新方案,如维护一份所有文件的md5校验值,从服务端获取此文件,与本地对比,取出md5不一致的文件进行下载。然而,第一种方式,当变更的文件很少,也需要下载一个较大的程序安装包,浪费带宽。第二种方式可能程序里有相当一部分的动态库文件,在相邻的程序版本里功能没有改动。通过文件md5校验码判断文件是否相同的策略,会认为这些动态库文件已经不同,需要更新。
3.由此可知,相关技术中存在更新编译项目文件效率的问题。
4.针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种编译项目文件的更新方法、装置、存储介质及电子装置,以至少解决相关技术中存在的更新编译项目文件效率的问题。
6.根据本发明的一个实施例,提供了一种编译项目文件的更新方法,包括:确定目标客户端的第一编译项目文件的第一版本,以及确定所述第一编译项目文件所依赖的第二编译项目文件的第二版本,其中,所述第一版本为所述第一编译项目文件的当前版本,所述第二版本为所述第二编译项目文件的当前版本;基于所述第一版本以及所述第二版本确定所述第一编译项目文件的本地版本;确定目标服务器中存储的所述第一编译项目文件的服务器版本,其中,所述目标服务器与所述目标客户端连接;在所述本地版本与所述服务器版本不一致的情况下,从所述目标服务器中获取与所述第一编译项目文件对应的服务器端版本文件;基于所述服务器端版本文件更新所述第一编译项目文件。
7.根据本发明的另一个实施例,提供了一种编译项目文件的更新装置,包括:第一确定模块,用于确定目标客户端的第一编译项目文件的第一版本,以及确定所述第一编译项目文件所依赖的第二编译项目文件的第二版本,其中,所述第一版本为所述第一编译项目文件的当前版本,所述第二版本为所述第二编译项目文件的当前版本;第二确定模块,用于基于所述第一版本以及所述第二版本确定所述第一编译项目文件的本地版本;第三确定模块,用于确定目标服务器中存储的所述第一编译项目文件的服务器版本,其中,所述目标服务器与所述目标客户端连接;获取模块,用于在所述本地版本与所述服务器版本不一致的情况下,从所述目标服务器中获取与所述第一编译项目文件对应的服务器端版本文件;更新模块,用于基于所述服务器端版本文件更新所述第一编译项目文件。
8.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可
读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项中所述的方法的步骤。
9.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
10.通过本发明,确定目标客户端的第一编译项目文件的第一版本,以及确定第一编译项目文件所依赖的第二编译项目文件的第二版本,根据第一版本和第二版本确定第一编译项目文件的本地版本,确定目标服务器中存在的第一编译项目文件的服务器版本,在本地版本与服务器版本不一致的情况下,从目标服务器中获取与第一编译项目文件对应的服务器端版本文件,并根据服务器端版本文件更新第一编译项目文件。由于在确定第一编译项目文件时,可以根据第一编译项目文件的当前版本以及第一编译项目文件所依赖的编译项目文件的当前版本进行确定,即仅在第一编译项目文件或其所依赖的第二编译项目文件发生更新时,才对第一编译项目文件进行更新,无需对其他文件进行更新,因此,可以解决相关技术中存在的更新编译项目文件效率的问题,达到提高编译项目文件的更新效率的效果。
附图说明
11.图1是本发明实施例的一种编译项目文件的更新方法的移动终端的硬件结构框图;
12.图2是根据本发明实施例的编译项目文件的更新的方法的流程图;
13.图3是根据本发明示例性实施例的目标客户端中包括的各个编译项目文件示意图;
14.图4是根据本发明示例性实施例的目标客户端中包括的各个编译项目文件的依赖关系示意图;
15.图5是根据本发明示例性实施例的带有版本号的各编译项目文件的依赖关系示意图;
16.图6是根据本发明示例性实施例的目标客户端与目标服务器交互示意图;
17.图7是根据本发明实施例的编译项目文件的更新装置的结构框图。
具体实施方式
18.下文中将参考附图并结合实施例来详细说明本发明的实施例。
19.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
20.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种编译项目文件的更新方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示
意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
21.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的编译项目文件的更新方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
22.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
23.在本实施例中提供了一种编译项目文件的更新的方法,图2是根据本发明实施例的编译项目文件的更新的方法的流程图,如图2所示,该流程包括如下步骤:
24.步骤s202,确定目标客户端的第一编译项目文件的第一版本,以及确定所述第一编译项目文件所依赖的第二编译项目文件的第二版本,其中,所述第一版本为所述第一编译项目文件的当前版本,所述第二版本为所述第二编译项目文件的当前版本;
25.步骤s204,基于所述第一版本以及所述第二版本确定所述第一编译项目文件的本地版本;
26.步骤s206,确定目标服务器中存储的所述第一编译项目文件的服务器版本,其中,所述目标服务器与所述目标客户端连接;
27.步骤s208,在所述本地版本与所述服务器版本不一致的情况下,从所述目标服务器中获取与所述第一编译项目文件对应的服务器端版本文件;
28.步骤s210,基于所述服务器端版本文件更新所述第一编译项目文件。
29.在上述实施例中,目标客户端可以是应用程序客户端,第一编译项目文件以及第二编译项目文件可以是目标客户端下的项目的编译产物文件,如动态库、可执行文件等。
30.在上述实施例中,可以确定目标客户端的各个编译项目文件之间的依赖关系,根据依赖关系确定第一编译项目文件所依赖的第二编译项目文件,并确定第一编译项目文件以及第二编译项目文件的第一版本和第二版本,根据第一版本和第二版本确定第一编译项目文件的本地版本。例如,可以根据第一版本和第二版本的大小关系确定本地版本,还可以根据第一版本和第二版本的先后顺序确定本地版本。
31.在上述实施例中,可以向目标服务器请求在目标表服务器中存储的目标客户端的每个编译项目文件的服务器版本,基于服务器版本确定第一编译项目文件的本地版本是否需要更细。当服务器版本与本地版本一致时,则无需更新,当服务器版本与本地版本不一致时,则可以获取目标服务器中存储的服务器端版本文件,并在本地解析安装服务器端版本文件。
32.在上述实施例中,当第一编译项目文件和第二编译项目文件为动态库时,在使用
版本控制系统(svn/git等)托管的项目里,可以认为其产物里动态库的版本号为当前项目目录的版本号。但从实际开发上来看,由于各动态库依赖目录或文件不同,其版本可以更加精细化。不失一般性,目标客户端中包括的各个编译项目文件示意图可参见附图3,如图3所示,该项目有a、b、c、d、e五个工程目录及include、lib两个依赖目录,最终生成五个动态库(以windows程序生成dll为例)。假设各动态库依赖关系如下:a不依赖其他目录;b依赖include;c依赖include和lib;d依赖c;e依赖c、include和lib。目标客户端中包括的各个编译项目文件的依赖关系示意图可参见附图4,如图4所示,如果某个版本功能修改里只有a工程里有文件代码修改,那么b、c、d、e四个动态库较上一个版本功能是一样的,增量更新时只需要更新a即可;如果b工程有文件代码修改,则增量更新时只需要更新b即可;如果c工程有文件代码修改,则增量更新时只需要更新c、d、e;如果d工程有文件代码修改,则增量更新时只需要更新d即可;如果e工程有文件代码修改,则增量更新时只需要更新e即可;如果include目录下有文件代码修改,则增量更新时需要更新b、c、d、e;如果lib目录下有文件代码修改,则增量更新时需要更新c、d、e。
33.可选地,上述步骤的执行主体可以是目标客户端,或者其他的具备类似处理能力的设备,还可以是至少集成有数据处理设备的机器,其中,数据处理设备可以包括计算机、手机等终端,但不限于此。
34.通过本发明,确定目标客户端的第一编译项目文件的第一版本,以及确定第一编译项目文件所依赖的第二编译项目文件的第二版本,根据第一版本和第二版本确定第一编译项目文件的本地版本,确定目标服务器中存在的第一编译项目文件的服务器版本,在本地版本与服务器版本不一致的情况下,从目标服务器中获取与第一编译项目文件对应的服务器端版本文件,并根据服务器端版本文件更新第一编译项目文件。由于在确定第一编译项目文件时,可以根据第一编译项目文件的当前版本以及第一编译项目文件所依赖的编译项目文件的当前版本进行确定,即仅在第一编译项目文件或其所依赖的第二编译项目文件发生更新时,才对第一编译项目文件进行更新,无需对其他文件进行更新,因此,可以解决相关技术中存在的更新编译项目文件效率的问题,达到提高编译项目文件的更新效率的效果。
35.在一个示例性实施例中,确定目标客户端的第一编译项目文件的第一版本包括:确定所述目标客户端的所述第一编译项目文件的第一版本号,将所述第一版本号确定为所述第一版本;确定所述第一编译项目文件所依赖的第二编译项目文件的第二版本包括:确定所述第二编译项目文件的第二版本号,将所述第二版本号确定为所述第二版本。在本实施例中,在确定第一版本和第二版本时,可以将第一编译项目文件的第一版本号确定为第一版本,将第二编译文件的第二版本号确定为第二版本。
36.在一个示例性实施例中,基于所述第一版本以及所述第二版本确定所述第一编译项目文件的本地版本包括:比较所述第一版本以及所述第二版本,得到比较结果;基于所述比较结果确定所述本地版本。在本实施例中,可以比较第一版本和第二版本的大小关系或者先后关系,根据比较结果确定本地版本。
37.在上述实施例中,对于svn托管的项目,可以根据编译项目文件的版本号的大小关系确定本地版本。对于git托管的项目,可以通过获取提交记录的时间,以时间戳大小作为版本比较的依据。
38.在一个示例性实施例中,基于所述比较结果确定所述本地版本包括:在所述比较结果指示所述第一版本大于或等于所述第二版本的情况下,将所述第一版本确定为所述本地版本;在所述比较结果指示所述第一版本小于所述第二版本的情况下,将所述第二版本确定为所述本地版本。在本实施例中,在svn托管的项目里,每个文件夹以及每个文件都有一个提交版本号。在项目编译前,针对每个工程,分别获取其依赖的目录的版本号,以及自身目录的版本号,取最大的一个,即为当前工程产物的版本号。如果其依赖的目录或自身目录下有新的提交记录,那么该工程产物的版本号较之前为大。反之,该工程产物的版本号与之前相同。在项目编译前,依次获取工程目录自身版本号及被依赖的目录或文件的版本号,取最大值作为当前工程产物的版本号,可将此版本号保存至一个文件中,在对项目打包时,将该文件也一起打包进去。增量更新时,先获取服务器端的版本文件,与本地端版本文件进行对比,找出版本不一致的文件,从服务器端增量下载更新即可。
39.在一个示例性实施例中,在确定目标客户端的第一编译项目文件的第一版本,以及确定所述第一编译项目文件所依赖的第二编译项目文件的第二版本之前,所述方法还包括:确定所述第一编译项目文件所对应的第一编译数据及第一版本号,以及确定所述第二编译项目文件所对应的第二编译数据及第二版本号;将所述第一编译数据以及所述第一版本号打包成第一数据包,以及将所述第二编译数据以及所述第二版本号打包成第二数据包;将所述第一数据包确定为所述第一编译文件,以及将所述第二数据包确定为所述第二编译文件。在本实施例中,在项目编译前,依次获取工程目录自身版本号及被依赖的目录或文件的版本号,取最大值作为当前工程产物的版本号,可将此版本号保存至一个文件中,在对项目打包时,将该文件也一起打包进去。其中,带有版本号的各编译项目文件的依赖关系示意图可参见附图5。
40.在一个示例性实施例中,所述第一编译项目文件包括以下之一:动态库文件、可执行文件,所述第二编译项目文件包括以下之一:动态库文件、可执行文件,所述第一编译项目文件与所述第二编译项目文件类型相同。在本实施例中,目标客户端中包括的编译项目文件可以基于版本号增量进行更新,其中,编译项目文件可以是编译产物文件,如动态库和可执行文件等。
41.在上述实施例中,对于目标客户端中包括的图片、文本文件、配置文件等非编译产物文件,可以结合md5校验码方式来实现增量更新。在更新目标客户端时,可以将这两种方式结合起来,达到更好的增量更新效果。
42.在一个示例性实施例中,确定目标服务器中存储的所述第一编译项目文件的服务器版本包括:向所述目标服务器发送版本请求信息;接收所述目标服务器基于所述版本请求信息发送的版本文件;基于所述版本文件确定所述服务器版本。在本实施例中,目标客户端可以向目标服务器发送请求版本文件的版本请求信息,目标服务器根据版本请求信息返回版本文件,目标客户端可以根据版本文件确定需要更新的文件,并向目标服务器发送请求增量更新文件,目标服务器返回增量更新文件,即服务器端版本文件。目标客户端可以解析并安装服务器端版本文件,实现编译项目文件的更新。其中,目标客户端与目标服务器交互示意图可参见附图6。
43.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多
情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
44.在本实施例中还提供了一种编译项目文件的更新装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
45.图7是根据本发明实施例的编译项目文件的更新装置的结构框图,如图7所示,该装置包括:
46.第一确定模块702,用于确定目标客户端的第一编译项目文件的第一版本,以及确定所述第一编译项目文件所依赖的第二编译项目文件的第二版本,其中,所述第一版本为所述第一编译项目文件的当前版本,所述第二版本为所述第二编译项目文件的当前版本;
47.第二确定模块704,用于基于所述第一版本以及所述第二版本确定所述第一编译项目文件的本地版本;
48.第三确定模块706,用于确定目标服务器中存储的所述第一编译项目文件的服务器版本,其中,所述目标服务器与所述目标客户端连接;
49.获取模块708,用于在所述本地版本与所述服务器版本不一致的情况下,从所述目标服务器中获取与所述第一编译项目文件对应的服务器端版本文件;
50.更新模块710,用于基于所述服务器端版本文件更新所述第一编译项目文件。
51.在一个示例性实施例中,第一确定模块702可以通过如下方式实现确定目标客户端的第一编译项目文件的第一版本:确定所述目标客户端的所述第一编译项目文件的第一版本号,将所述第一版本号确定为所述第一版本;第一确定模块702可以通过如下方式实现确定所述第一编译项目文件所依赖的第二编译项目文件的第二版本:确定所述第二编译项目文件的第二版本号,将所述第二版本号确定为所述第二版本。
52.在一个示例性实施例中,第二确定模块704可以通过如下方式实现基于所述第一版本以及所述第二版本确定所述第一编译项目文件的本地版本:比较所述第一版本以及所述第二版本,得到比较结果;基于所述比较结果确定所述本地版本。
53.在一个示例性实施例中,第二确定模块704可以通过如下方式实现基于所述比较结果确定所述本地版本:在所述比较结果指示所述第一版本大于或等于所述第二版本的情况下,将所述第一版本确定为所述本地版本;在所述比较结果指示所述第一版本小于所述第二版本的情况下,将所述第二版本确定为所述本地版本。
54.在一个示例性实施例中,所述装置还可以用于在确定目标客户端的第一编译项目文件的第一版本,以及确定所述第一编译项目文件所依赖的第二编译项目文件的第二版本之前,确定所述第一编译项目文件所对应的第一编译数据及第一版本号,以及确定所述第二编译项目文件所对应的第二编译数据及第二版本号;将所述第一编译数据以及所述第一版本号打包成第一数据包,以及将所述第二编译数据以及所述第二版本号打包成第二数据包;将所述第一数据包确定为所述第一编译文件,以及将所述第二数据包确定为所述第二编译文件。
55.在一个示例性实施例中,所述第一编译项目文件包括以下之一:动态库文件、可执行文件,所述第二编译项目文件包括以下之一:动态库文件、可执行文件,所述第一编译项目文件与所述第二编译项目文件类型相同。
56.在一个示例性实施例中,第三确定模块706可以通过如下方式实现确定目标服务器中存储的所述第一编译项目文件的服务器版本:向所述目标服务器发送版本请求信息;接收所述目标服务器基于所述版本请求信息发送的版本文件;基于所述版本文件确定所述服务器版本。
57.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
58.本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项中所述的方法的步骤。
59.在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
60.本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
61.在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
62.本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
63.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
64.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1