CN113296778A - 一种资源文件的处理方法、装置、服务器、客户端及系统 - Google Patents
一种资源文件的处理方法、装置、服务器、客户端及系统 Download PDFInfo
- Publication number
- CN113296778A CN113296778A CN202010285307.6A CN202010285307A CN113296778A CN 113296778 A CN113296778 A CN 113296778A CN 202010285307 A CN202010285307 A CN 202010285307A CN 113296778 A CN113296778 A CN 113296778A
- Authority
- CN
- China
- Prior art keywords
- file
- target
- compiling
- request
- client
- 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
- 238000003672 processing method Methods 0.000 title claims description 47
- 238000012545 processing Methods 0.000 claims abstract description 62
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000010276 construction Methods 0.000 claims description 54
- 238000003860 storage Methods 0.000 claims description 43
- 230000001419 dependent effect Effects 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 9
- 238000011161 development Methods 0.000 claims description 7
- 230000001172 regenerating effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 19
- 238000005192 partition Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种资源文件的处理方法、装置、系统及服务器,该方法包括响应于客户端发出的第一请求,获取目标资源文件的依赖关系和用于描述如何编译目标资源文件的编译文件;其中,第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;根据依赖关系、目标运行平台的类型和编译文件,对目标资源文件进行编译,得到目标编译结果文件;将目标编译结果文件提供至客户端。
Description
技术领域
本发明涉及互联网技术领域,更具体地,涉及一种资源文件的处理方法、一种资源文件的处理装置、一种服务器、一种客户端、一种资源文件的处理系统、及一种计算机可读存储介质。
背景技术
所有可以从中读取出需要的资源的文件,可以称之为“资源文件”。资源的类型可以是图片、音频、视频、文字资源,或者其他可以在计算机中展示的内容等等。由专门的接口去读取,并在客户端中根据需要向用户展示。
在客户端的开发过程中,资源文件通常需要一个导入资源库的过程,例如原始贴图是一个png文件,但是客户端的开发引擎需要的是对应运行平台的压缩格式,例如,在运行平台为windows时,压缩格式为dxt;在运行平台为Android时,压缩格式为ktx。
由于客户端所需的资源文件数量巨大,如果统一将这些资源文件导入开发引擎的资源库,将耗费用户大量的时间来等待资源文件的导入。
发明内容
本发明的一个目的是提供一种通过处理资源文件的新技术方案。
根据本发明的第一方面,提供了一种资源文件的处理方法,包括:
响应于客户端发出的第一请求,获取所述目标资源文件的依赖关系和用于描述如何编译所述目标资源文件的编译文件;其中,所述第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;
根据所述依赖关系、所述目标运行平台的类型和所述编译文件,对所述目标资源文件进行编译,得到目标编译结果文件;
将所述目标编译结果文件提供至所述客户端。
可选的,所述将所述目标编译结果文件提供至所述客户端包括:
对所述目标编译结果文件进行哈希运算,得到所述目标编译结果文件的哈希值,作为第一哈希值;
将所述第一哈希值返回至所述客户端;
接收所述客户端发出的第二请求,将所述目标编译结果文件发送至所述客户端;其中,所述第二请求为获取与所述第一哈希值对应的编译结果文件的请求。
可选的,还包括:
根据所述依赖关系、所述目标运行平台的类型和所述编译文件,生成与所述目标编译结果文件一一对应的目标构建脚本文件;
将所述目标构建脚本文件提供至客户端;
响应于所述客户端发出的第三请求,获取与所述目标构建脚本文件对应的所述目标编译结果文件,并返回至所述客户端;其中,所述第三请求为根据所述目标构建脚本文件获取所述目标资源文件在所述目标运行平台上的编译结果文件的请求。
可选的,所述根据所述依赖关系、所述目标运行平台的类型和所述编译文件,生成与所述目标编译结果文件一一对应的目标构建脚本文件包括:
根据所述依赖关系,确定所述目标资源文件所对应的依赖文件的存储地址;
分别对每一所述依赖文件进行哈希运算,得到对应依赖文件的哈希值;
对所述依赖文件的哈希值进行哈希运算,得到第二哈希值;
根据所述依赖文件的存储地址、所述第二哈希值、所述目标运行平台的类型和所述编译文件,生成所述目标构建脚本文件。
可选的,还包括:
检测重新编译所述目标资源文件的第一事件是否发生;
在所述第一事件发生的情况下,重新获取所述目标资源文件的依赖关系和所述目标资源文件的新的编译文件;
根据重新获取的依赖关系、所述目标运行平台的类型和所述新的编译文件,重新对所述目标资源文件进行编译,得到新的编译结果文件;
根据所述重新获取的依赖关系、所述目标运行平台的类型和所述新的编译文件,生成与所述新的编译结果文件一一对应的新的构建脚本文件。
可选的,所述第一事件包括以下至少一项:
再次接收到获取所述目标资源文件在所述目标运行平台上的编译结果文件的请求;
用于描述所述目标资源文件的描述文件发生变更;
用于描述所述依赖文件的描述文件发生变更;
用于描述所述编译文件的描述文件发生变更。
可选的,所述目标构建脚本文件和所述新的构建脚本文件通过可信树的方式存储。
可选的,还包括:
清理所述目标编译结果文件;
响应于所述客户端发出的所述第三请求,根据所述目标构建脚本文件重新生成所述目标编译结果文件。
可选的,还包括:
检测自身空闲的第二事件是否发生;
在所述第二事件发生的情况下,重新根据所述依赖关系、其他运行平台和所述编译文件对所述目标资源文件进行编译,得到所述目标资源文件在所述其他运行平台上的其他编译结果文件;
根据所述依赖关系、所述其他运行平台和所述编译文件,得到与所述其他编译结果文件一一对应的构建脚本文件。
可选的,所述第二事件包括以下至少一项:
内存使用率低于或等于预设的内存阈值;
进程使用率低于或等于预设的进程阈值;
CPU使用率低于或等于预设的CPU阈值。
可选的,所述目标资源文件为目标游戏的资源文件,所述客户端为游戏开发引擎。
根据本发明的第二方面,提供了一种资源文件的处理方法,包括:
向服务器发送第一请求,其中,所述第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;
接收所述服务器返回的目标编译结果文件,其中,所述目标编译结果文件为根据所述目标资源文件的依赖关系、所述目标运行平台的类型、和用于描述如何编译所述目标资源文件的编译文件对所述目标资源文件进行编译得到。
可选的,还包括:
获取所述服务器发送的第一哈希值,所述第一哈希值为对所述目标编译结果文件进行哈希运算所得到的所述目标编译结果文件的哈希值;
向服务器发送第二请求,其中,所述第二请求为获取与所述第一哈希值对应的编译结果文件的请求;
接收所述服务器响应于所述第二请求返回的所述目标编译结果文件。
可选的,还包括:
获取所述服务器发送的目标构建脚本文件,其中,所述目标构建脚本文件为根据所述依赖关系、所述目标运行平台的类型和所述编译文件所生成的,且所述目标构建脚本与所述目标编译结果文件一一对应;
向所述服务器发送第三请求;其中,所述第三请求为根据所述目标构建脚本文件获取所述目标资源文件在所述目标运行平台上的编译结果文件的请求;
接收所述服务器响应于所述第三请求返回的所述目标编译结果文件。
根据本发明的第三方面,提供了一种资源文件的处理装置,包括:
获取模块,用于响应于客户端发出的第一请求,获取所述目标资源文件的依赖关系和用于描述如何编译所述目标资源文件的编译文件;其中,所述第一请求为获取目标资源文件在目标运行平台上的编译结果文件的第一请求;
编译模块,用于根据所述依赖关系、所述目标运行平台的类型和所述编译文件,对所述目标资源文件进行编译,得到目标编译结果文件;
提供模块,用于将所述目标编译结果文件提供至所述客户端。
根据本发明的第四方面,提供了一种资源文件的处理装置,包括:
发送模块,用于向服务器发送第一请求,其中,所述第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;
接收模块,用于接收所述服务器返回的目标编译结果文件,其中,所述目标编译结果文件为根据所述目标资源文件的依赖关系、所述目标运行平台的类型、和用于描述如何编译所述目标资源文件的编译文件对所述目标资源文件进行编译得到。
根据本发明的第五方面,提供了一种服务器,包括:
根据本发明第三方面所述的装置;或者,
第一处理器和第一存储器,所述第一存储器用于存储第一指令,所述第一指令用于控制所述第一处理器执行根据本发明第一方面所述的处理方法。
根据本发明的第六方面,提供了一种客户端,包括:
根据本发明第四方面所述的装置;或者,
第二处理器和第二存储器,所述第二存储器用于存储第二指令,所述第二指令用于控制所述第二处理器执行根据本发明第二方面所述的处理方法。
根据本发明的第七方面,提供了一种资源文件的处理系统,包括根据本发明第三方面所述的服务器和根据本发明第四方面所述的客户端。
根据本发明的第八方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如本发明第一方面或第二方面所述的处理方法。
在本发明的实施例中,在目标资源文件没有发生改变的情况下,后续客户端再次发起获取目标资源文件在目标运行平台上的编译结果文件的请求时,可以是根据第一哈希值直接获取,服务器无需再次对目标资源文件进行编译。而且,在服务器中对目标资源文件进行编译,得到的目标编译结果文件可以供多个项目共用。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是显示可用于实现本发明的实施例的资源文件的处理系统的硬件配置的例子的框图。
图2示出了本发明第一实施例的资源文件的处理方法的一个例子的流程图。
图3示出了本发明第一实施例的资源文件的处理方法的一个例子的流程图。
图4示出了本发明第一实施例的资源文件的处理方法的一个例子的流程图。
图5示出了本发明第一实施例的资源文件的处理装置的一个例子的框图。
图6示出了本发明第一实施例的资源文件的处理装置的一个例子的框图。
图7示出了本发明第一实施例的服务器的一个例子的框图。
图8示出了本发明第二实施例的资源文件的处理方法的一个例子的流程图。
图9示出了本发明第二实施例的资源文件的处理装置的一个例子的框图。
图10示出了本发明第二实施例的客户端的一个例子的框图。
图11示出了本发明实施例的资源文件的处理方法的一个例子的示意图。
图12示出了本发明实施例的资源文件的处理方法的另一个例子的示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是示出可以实现本发明的实施例的资源文件的处理系统1000的硬件配置的框图。
如图1所示,本实施例的资源文件的处理系统1000包括服务器1100、客户端1200以及网络1300。
服务器1100提供处理、数据库、通讯设施的计算机。服务器1100可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如可以是单机服务器、刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
本实施例中,服务器1100可以如图1所示,包括处理器1110、存储器1120、接口装置1130、通信装置1140、显示装置1150、输入装置1160。
在该实施例中,服务器1100还可以包括扬声器、麦克风等等,在此不做限定。
处理器1110可以是专用的服务器处理器,也可以是满足性能要求的台式机处理器、移动版处理器等,在此不做限定。存储器1120例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1130例如包括各种总线接口,例如串行总线接口(包括USB接口)、并行总线接口等。通信装置1140例如能够进行有线或无线通信。显示装置1150例如是液晶显示屏、LED显示屏触摸显示屏等。输入装置1160例如可以包括触摸屏、键盘等。
在该实施例中,服务器1100的存储器1120用于存储指令,该指令用于控制处理器1110进行操作以至少执行根据本发明任意实施例的资源文件的处理方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
尽管在图1中示出了服务器1100的多个装置,但是,本发明可以仅涉及其中的部分装置,例如,服务器1100只涉及存储器1120和处理器1110。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
如图1所示,客户端1200可以包括处理器1210、存储器1220、接口装置1230、通信装置1240、显示装置1250、输入装置1260、音频输出装置1270、音频拾取装置1280,等等。其中,处理器1210可以是中央处理器CPU、微处理器MCU等。存储器1220例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1230例如包括USB接口、耳机接口等。通信装置1240例如能够进行有线或无线通信。显示装置1250例如是液晶显示屏、触摸显示屏等。输入装置1260例如可以包括触摸屏、键盘等。客户端1200可以通过音频输出装置1270输出音频信息,该音频输出装置1270例如包括扬声器。客户端1200可以通过音频拾取装置1280拾取用户输入的语音信息,该音频拾取装置1280例如包括麦克风。
客户端1200可以是智能手机、便携式电脑、台式计算机、平板电脑等可以支持资源文件运行的任意设备。
在本实施例中,客户端1200的存储器1220用于存储指令,所述指令用于控制所述处理器1210进行操作以支持实现根据本说明书任意实施例的资源文件的处理方法。技术人员可以根据本说明书所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
本领域技术人员应当理解,尽管在图1中示出了客户端1200的多个装置,但是,本说明书实施例的客户端1200可以仅涉及其中的部分装置,例如,只涉及处理器1210、存储器1220、显示装置1250、输入装置1260等。
网络1300可以是无线网络也可以是有线网络,可以是局域网也可以是广域网。客户端1200可以通过网络1300与服务器1100进行通信。
图1所示的资源文件的处理系统1000仅是解释性的,并且决不是为了要限制本说明书、其应用或用途。例如,尽管图1仅示出一个服务器1100和一个客户端1200,但不意味着限制各自的数量,资源文件的处理系统1000中可以包含多个服务器1100和/或多个客户端1200。
<第一实施例>
<方法>
在本实施例中,提供一种资源文件的处理方法。该资源文件的处理方法可以是由服务器实施。该服务器可以是如图1所示的服务器1000。
根据图2所示,本实施例的资源文件的处理方法可以包括如下步骤S2100~S2300:
步骤S2100,响应于客户端发出的第一请求,获取目标资源文件的依赖关系和用于描述如何编译目标资源文件的编译文件;其中,第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求
客户端发出的第一请求中,可以包括目标资源文件的哈希值,以供服务器根据目标资源文件的哈希值来获取目标资源文件、目标资源文件的依赖关系和编译文件。
在本发明的一个实施例中,目标资源文件可以是客户端的资源文件。资源文件可以是可以从中读取出需要的资源的文件。资源的类型可以是图片、音频、视频、文字资源,或者其他可以在计算机中展示的内容等等。由专门的程序接口去读取,并在客户端中根据需要向用户展示。
在本发明的实施例中,依赖关系记录了在构建目标资源文件在目标运行平台上的编译结果文件的过程中所需要调用的依赖文件、及依赖文件的存储路径。
依赖文件可以是在展示目标资源文件时需要调用的资源文件。例如,在目标资源文件为视频的情况下,依赖文件可以包括视频中对应帧的图片。
本实施例中的编译文件可以是用于描述如何编译目标资源文件的文件。可以是开发人员预先设置好并存储在执行本发明的实施例的服务器中的。在一个例子中,该编译文件可以是后缀为.lk的、目标资源文件的同名文件。例如,在目标资源文件的文件名为a.sc,那么,用于描述如何编译目标资源文件的编译的文件名可以为a.sc.lk。
在本发明的一个实施例中,该编译文件中还可以包括编译目标资源文件所需的构建参数。例如,在目标资源文件为.c文件的情况下,构建参数可以包括是否优化等选项。再例如,如果目标资源文件为图片,构建参数可以包括是否美颜、裁剪等选项。
目标运行平台具体可以客户端中所运行的操作系统,该目标运行平台例如可以是Windows、iOS、Android、或Linux等。
本实施例中的客户端可以是智能手机、便携式电脑、台式计算机、平板电脑等可以支持资源文件运行的任意设备。
对于不同的客户端,其性能配置可能不同。因此,在本发明的一个实施例中,服务器还中还可以预先存储有对应多种客户端性能的编译文件,不同编译文件所描述的如何编译目标资源文件的方式不同。在本实施例中,服务器可以是获取与发出第一请求的客户端的性能匹配的编译文件。
对于不同的客户端,对应用户的用户类型可能不同。因此,在本发明的一个实施例中,服务器中还可以预先存储有对应多种用户类型的编译文件,不同编译文件所描述的如何编译目标资源文件的方式不同。在本实施例中,服务器可以是获取与发出第一请求的客户端所对应的当前用户的用户特征,根据当前用户的用户特征,确定当前用户的用户类型,并获取与当前用户的用户类型匹配的编译文件。
步骤S2200,根据目标资源文件的依赖关系、目标运行平台的类型和编译文件,对目标资源文件进行编译,得到目标编译结果文件。
根据依赖关系、目标运行平台的类型和编译文件对目标资源文件进行编译所得到目标编译结果文件,就是目标资源文件在目标运行平台上的编译结果文件。
例如,目标资源文件是一个png文件,但是客户端需要的是能够目标运行平台上打开的压缩格式的编译结果文件。在目标运行平台为windows情况下,目标资源文件在目标运行平台上的编译结果文件是dxt文件。在目标运行平台为Android情况下,目标资源文件在目标运行平台上的编译结果文件是ktx文件。
步骤S2300,将目标编译结果文件提供至客户端。
在本发明的一个实施例中,将目标编译结果文件提供至客户端的方式可以为,在得到目标编译结果文件后,直接将目标编译结果文件发送至客户端。
在本发明的另一个实施例中,将目标编译结果文件提供至客户端的步骤可以包括如下所示的步骤S2310~S2330:
步骤S2310,对目标编译结果文件进行哈希运算,得到目标编译结果文件的哈希值,作为第一哈希值。
该第一哈希值与目标编译结果文件之间是一一对应的,根据第一哈希值可以查找到唯一对应的编译结果文件,即目标编译结果文件。
步骤S2320,将第一哈希值返回至客户端。
客户端在接收到第一哈希值后,可以先查找本地是否存储有与第一哈希值对应的编译结果文件,如是,则可以直接调用本地存储的编译结果;如否,则可以向服务器发出获取与第一哈希值对应的编译结果文件的第二请求。该第二请求具体可以是根据第一哈希值获取目标资源文件在目标运行平台上的编译结果文件的请求。
步骤S2330,接收客户端发出的第二请求,将目标编译结果文件发送至客户端;其中,第二请求为获取与第一哈希值对应的编译结果文件的请求。
服务器接收到客户端发出的第二请求之后,可以是查找与第一哈希值对应的文件,由于第一哈希值与目标编译结果文件之间是一一对应的,因此,通过第一哈希值,可以得到目标编译结果,将其发送至客户端。
在本发明的一个实施例中,客户端在根据目标编译结果文件展示目标资源文件之后,可以是清除该目标编译结果文件,并保留与目标资源文件在目标运行平台上的编译结果文件的第一哈希值,这样可以减少客户端的占用内存。
在客户端再次需要获取目标资源文件在目标运行平台上的编译结果文件的情况下,可以向服务器发出获取与第一哈希值对应的编译结果文件的第二请求,服务器接收该第二请求,将与第一哈希值对应的编译结果文件,即目标编译结果文件发送至客户端中。
在目标资源文件没有发生改变的情况下,后续客户端再次发出第二请求时,服务器可以是根据第一哈希值直接获取,无需再次对目标资源文件进行编译。
通过本发明的处理方法,在服务器中对目标资源文件进行编译,得到的目标编译结果文件可以供多个项目共用。
例如,在目标资源文件为一张贴图,当该贴图用在一个项目中,被编译过一次。当把这张贴图复制到新的项目使用时,是不需要重新编译的,可以直接使用该目标资源文件在目标运行平台上的目标编译结果文件。
如果目标资源文件发生改变,例如目标资源文件所调用的依赖文件发生改变,或者是目标资源文件所调用的任一依赖文件的内容发生改变,或者是编译文件发生改变,均会导致目标资源文件在目标运行平台上的编译结果文件也发生改变。
后续客户端发起根据第一哈希值获取目标资源文件在目标运行平台上的编译结果文件的第二请求时,获取的仍是之前版本的目标编译结果文件,并不是发生改变后的目标资源文件在目标运行平台上的编译结果文件。
为了解决这一问题,在本发明的一个实施例中,该处理方法还可以包括如图3所示的步骤S3100~S3300:
步骤S3100,根据目标资源文件的依赖关系、目标运行平台的类型和编译文件,生成与目标编译结果文件一一对应的目标构建脚本文件。
该目标构建脚本文件是记录目标资源文件在目标运行平台上的编译方式的文件。其中具体记录了目标资源文件的依赖关系、目标运行平台的类型和编译目标资源文件的方法。
该目标构建脚本文件是在生成目标编译结果文件的过程中生成的,该目标构建脚本文件是与生成的目标编译结果文件一一对应的。
在本发明的一个实施例中,根据依赖关系、目标运行平台的类型和编译文件,生成与目标编译结果文件一一对应的目标构建脚本文件的步骤可以包括如下所示的步骤S3110~S3140:
步骤S3110,根据依赖关系,确定目标资源文件所对应的依赖文件的存储地址。
步骤S3120,分别对每一依赖文件进行哈希运算,得到对应依赖文件的哈希值。
步骤S3130,对依赖文件的哈希值进行哈希运算,得到第二哈希值。
具体的,可以是按照目标资源文件调用依赖文件的顺序,先对所有依赖文件的哈希值进行排列,再对排列好的哈希值进行哈希运算,得到第二哈希值。具体的,该第二哈希值可以表示目标资源文件所调用的依赖文件、以及调用顺序。
步骤S3140,根据依赖文件的存储地址、第二哈希值、目标运行平台的类型和编译文件,生成目标构建脚本文件。
步骤S3200,将目标构建脚本文件提供至客户端。
目标构建脚本文件通过可信树的方式存储。在服务器首次接收到第一请求后,生成目标构建脚本文件的情况下,该目标构建脚本文件对客户端是不可见的。如果客户端再次运行该客户端,就可以看到目标构建脚本文件。那么,客户端就可以发出第三请求,其中,第三请求为根据该目标构建脚本文件获取目标资源文件在目标运行平台上的编译结果文件的请求。
在本发明的一个实施例中,服务器可以是在客户端发出第三请求之后再次运行该客户端的过程中,将目标构建脚本文件提供至客户端。
步骤S3300,响应于客户端发出的第三请求,获取与目标构建脚本文件对应的目标编译结果文件,并返回至客户端;其中,第三请求为根据目标构建脚本文件获取目标资源文件在目标运行平台上的编译结果文件的请求。
由于服务器上存储有目标构建脚本文件和目标编译结果文件之间的对应关系,目标构建脚本文件中也存储有目标资源文件和目标编译结果文件之间的对应关系,因此,在服务器中存储有目标资源文件在目标运行平台上的编译结果文件的情况下,可以直接将存储的目标编译结果文件发送至客户端;在服务器将之前生成的目标编译结果文件删除,导致服务器中未存储有目标资源文件在目标运行平台上的编译结果文件的情况下,可以根据目标构建脚本文件生成目标资源文件在目标运行平台上的编译结果文件,再将生成的编译结果文件返回至客户端。
在本发明的一个实施例中,该处理方法还可以包括如下所示的步骤S3400~S3700:
步骤S3400,检测重新编译目标资源文件的第一事件是否发生。
在本发明的一个实施例中,该第一事件可以包括以下至少一项:
再次接收到获取目标资源文件在目标运行平台上的编译结果文件的请求;
用于描述目标资源文件的描述文件发生变更;
用于描述依赖文件的描述文件发生变更;
用于描述编译文件的描述文件发生变更。
在本发明的一个实施例中,服务器中可以预先设置有文件监控模块,用于监控是否有文件发生变更。
可以是在监测到与目标资源文件相关的任一文件发生变更的情况下,判定第一事件发生。其中,该目标资源文件相关的任一文件可以包括用于描述目标资源文件的描述文件、用于描述依赖文件的描述文件、和用于描述编译文件的描述文件中的任意一个。
或者,也可以是在监测到与目标资源文件相关的任一文件发生变更的情况下,自动触发服务器中的模拟请求模块,模拟客户端发出获取目标资源文件在目标运行平台上的编译结果文件的请求,使得服务器接收到获取目标资源文件在目标运行平台上的编译结果文件的请求,则判定第一事件发生。
或者,也可以是在每次接收到客户端发出的获取目标资源文件在目标运行平台上的编译结果文件的请求的情况下,判定第一事件发生。
步骤S3500,在第一事件发生的情况下,重新获取目标资源文件的依赖关系和目标资源文件的新的编译文件。
在用于描述目标资源文件的描述文件发生变更的情况下,重新获取的依赖关系和在步骤S2100中获取的依赖关系可以相同,新的编译文件与在步骤S2100中获取的编译文件也可以相同。
在用于描述依赖文件的描述文件发生变更的情况下,重新获取的依赖关系和在步骤S2100中获取的依赖关系不同,而新的编译文件与在步骤S2100中获取的编译文件可以相同。
在用于描述编译文件的描述文件发生变更的情况下,重新获取的依赖关系和在步骤S2100中获取的依赖关系可以相同,而新的编译文件与在步骤S2100中获取的编译文件不同。
步骤S3600,根据重新获取的依赖关系、目标运行平台的类型和新的编译文件,重新对目标资源文件进行编译,得到新的编译结果文件。
具体可以参照前述的编译得到目标编译结果文件的描述,在此不再赘述。
在与目标资源文件相关的任一文件发生变更的情况下,新的编译结果文件与步骤S2200得到的目标编译结果文件不同。
步骤S3700,根据重新获取的依赖关系、目标运行平台的类型和新的编译文件,生成与新的编译结果文件一一对应的新的构建脚本文件。
具体可以参照前述的编译得到目标构建脚本文件的描述,在此不再赘述。
在与目标资源文件相关的任一文件发生变更的情况下,新的构建脚本文件与步骤S3100得到的目标构建脚本文件也不同。
在本发明的一个实施例中,新的构建脚本文件也通过可信树的方式存储。具体的,可以是每个版本的构建脚本文件均在同一可信树上,可以是不可变更的。
这样,客户端就可以通过可信树上存储的每个版本的构建脚本文件,从服务器中获取任一版本的构建脚本文件所对应的编译结果文件。
在本发明的一个实施例中,该处理方法还可以包括:清理目标编译结果文件;响应于第三请求,根据目标构建脚本文件重新生成目标编译结果文件。
具体的,可以是按照设定的清理周期来清理服务器中存储的编译结果文件;还可以是响应于清理目标编译结果文件的请求,清理服务器中存储的目标编译结果文件,以释放服务器的存储空间。
由于服务器中依然存储有每个版本的构建脚本文件,如果服务器将编译结果文件清理了,那么,可以根据对应版本的构建脚本文件重新生成对应的编译结果文件。
在本发明的一个实施例中,该处理方法还可以包括如图4所示的步骤S4100~S4300:
步骤S4100,检测自身空闲的第二事件是否发生。
该第二事件可以表示服务器处于空闲状态。
在本发明的一个实施例中,第二事件可以包括以下至少一项:
内存使用率低于或等于预设的内存阈值;
进程使用率低于或等于预设的进程阈值;
CPU使用率低于或等于预设的CPU阈值。
上述内存阈值、进程阈值和CPU阈值可以是分别根据对应的应用场景或具体需求所设定的。例如,内存阈值可以设置为6G,进程阈值可以设置为10,CPU阈值可以设置为2%。
步骤S4200,在第二事件发生的情况下,重新根据依赖关系、其他运行平台的类型和编译文件对目标资源文件进行编译,得到目标资源文件在其他运行平台上的其他编译结果文件。
在本实施例中,其他编译结果文件和目标编译结果,为同一目标资源文件在不同运行平台上的编译结果文件。
通过在服务器中预先设置可以运行客户端的多种运行平台的类型,使得服务器预先知道所有的需求,那么,可以在客户端发出第一请求的情况下,预知运行其他运行平台上的其他客户端以后还会发出获取目标资源文件在其他运行平台上的编译结果文件的请求。因此,服务器可以在空闲状态下,即第二事件发生时,提前生成尚未请求的目标资源文件在其他运行平台上的其他编译结果文件,以在接收到其他客户端发出的、获取目标资源文件在其他运行平台上的编译结果文件的请求的情况下,直接向客户端提供该其他编译结果文件。这样,可以缩短客户端发出请求到获取到其他编译结果文件的时间,减少用户的等待时间,提升用户体验。
步骤S4300,根据目标资源文件的依赖关系、其他运行平台和编译文件,得到与其他编译结果文件一一对应的其他构建脚本文件。
通过步骤S4300所生成的构建脚本文件,与通过步骤S3100所生成的目标构建脚本文件,对应于同一目标资源文件在不同运行平台上的构建脚本文件。
这样,客户端就可以发出根据该其他构建脚本文件目标资源文件在其他运行平台上的其他编译结果文件的请求。
在本发明的一个实施例中,目标资源文件可以为目标游戏的资源文件,客户端可以为安装有目标游戏的开发引擎的电子设备,也可以是安装有目标游戏的游戏引擎的电子设备。
在多个用户通过各自的客户端同时玩目标游戏的实施例中,可以是任意一个用户的客户端向服务器发出第一请求,服务器响应于第一请求,获取目标资源文件的依赖关系和每一用户的用户特征;分别根据每一用户的用户特征,确定每一用户的用户类型;获取与每一用户类型匹配的编译文件,并根据依赖关系、目标运行平台的类型和每一用户类型匹配的编译文件,对目标资源文件进行编译,得到每一用户类型对应的目标编译结果文件,并将每一用户类型对应的目标编译结果文件分别提供至属于对应用户类型的用户所使用的客户端中。
在本发明的一个实施例中,服务器中还可以包括多个存储分区,在得到目标编译结果文件的情况下,可以是将目标编译结果文件存储至对应的存储分区中。
具体的,服务器可以是按照文件类型、生成时间、对应的运行平台的类型中的任意一种来设定存储分区。
例如,服务器可以是预先设置对应Windows运行平台的第一存储分区,对应iOS运行平台的第二存储分区,对应Android运行平台的第三存储分区,和对应Linux运行平台的第四存储分区,那么,在目标编译结果文件为在Android运行平台上的编译结果文件的情况下,服务器可以是将目标编译结果文件存储至对应Android运行平台的第三存储分区中。在目标编译结果文件为在iOS运行平台上的编译结果文件的情况下,服务器可以是将目标编译结果文件存储至对应iOS运行平台的第二存储分区中。
再例如,服务器可以是预先设置对应第一种文件类型的第一存储分区,对应第二种文件类型的第二存储分区,对应第三种文件类型的第三存储分区,那么,在目标编译结果文件的文件类型为第一种文件类型的情况下,服务器可以是将目标编译结果文件存储至对应第一种文件类型的第一存储分区中。
再例如,服务器可以是预先设置对应第一时间段的第一存储分区,对应第二时间段的第二存储分区,对应第三时间段的第三存储分区和对应第四时间段的第四存储分区,那么,在根据目标资源文件的依赖关系、目标运行平台的类型和编译文件,对目标资源文件进行编译,得到目标编译结果文件的时间属于第四时间段的情况下,服务器可以是将目标编译结果文件存储至对应第四时间段的第四存储分区中。
<装置>
在本实施例中,提供一种资源文件的处理装置5000,如图5所示,包括获取模块5100、编译模块5200和提供模块5300。该获取模块5100用于响应于客户端发出的第一请求,获取目标资源文件的依赖关系和用于描述如何编译目标资源文件的编译文件;其中,第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;该编译模块5200用于根据依赖关系、目标运行平台的类型和编译文件,对目标资源文件进行编译,得到目标编译结果文件;该提供模块5300用于将目标编译结果文件提供至客户端。
在本发明的一个实施例中,该提供模块5300具体可以用于:
对目标编译结果文件进行哈希运算,得到目标编译结果文件的哈希值,作为第一哈希值;
将第一哈希值返回至客户端;
接收客户端发出的第二请求,将目标编译结果文件发送至客户端;其中,第二请求为获取与第一哈希值对应的编译结果文件的请求。
在本发明的一个实施例中,该处理装置5000还可以包括如图6所示的脚本生成模块6100、脚本提供模块6200和文件获取模块6300。该脚本生成模块6100用于根据依赖关系、目标运行平台的类型和编译文件,生成与目标编译结果文件一一对应的目标构建脚本文件;该脚本提供模块6200用于将目标构建脚本文件提供至客户端;该文件获取模块6300用于响应于客户端发出的第三请求,获取与目标构建脚本文件对应的目标编译结果文件,并返回至客户端;其中,第三请求为根据目标构建脚本文件获取目标资源文件在目标运行平台上的编译结果文件的请求。
在本发明的一个实施例中,脚本生成模块6100还可以用于:
根据依赖关系,确定目标资源文件所对应的依赖文件的存储地址;
分别对每一依赖文件进行哈希运算,得到对应依赖文件的哈希值;
对依赖文件的哈希值进行哈希运算,得到第二哈希值;
根据依赖文件的存储地址、第二哈希值、目标运行平台的类型和编译文件,生成目标构建脚本文件。
在本发明的一个实施例中,该处理装置5000还可以包括:
用于检测重新编译目标资源文件的第一事件是否发生的模块;
用于在第一事件发生的情况下,重新获取目标资源文件的依赖关系和目标资源文件的新的编译文件的模块;
用于根据重新获取的依赖关系、目标运行平台的类型和新的编译文件,重新对目标资源文件进行编译,得到新的编译结果文件的模块;
用于根据重新获取的依赖关系、目标运行平台的类型和新的编译文件,生成与新的编译结果文件一一对应的新的构建脚本文件的模块。
在本发明的一个实施例中,第一事件包括以下至少一项:
再次接收到获取目标资源文件在目标运行平台上的编译结果文件的请求;
用于描述目标资源文件的描述文件发生变更;
用于描述依赖文件的描述文件发生变更;
用于描述编译文件的描述文件发生变更。
在本发明的一个实施例中,目标构建脚本文件和新的构建脚本文件通过可信树的方式存储。
在本发明的一个实施例中,该处理装置5000还可以包括:
用于清理目标编译结果文件的模块;
用于响应于客户端发出的第三请求,根据目标构建脚本文件重新生成目标编译结果文件的模块。
在本发明的一个实施例中,该处理装置5000还可以包括:
用于检测自身空闲的第二事件是否发生的模块;
用于在第二事件发生的情况下,重新根据依赖关系、其他运行平台和编译文件对目标资源文件进行编译,得到目标资源文件在其他运行平台上的其他编译结果文件的模块;
用于根据依赖关系、其他运行平台和编译文件,得到与其他编译结果文件一一对应的构建脚本文件的模块。
在本发明的一个实施例中,第二事件包括以下至少一项:
内存使用率低于或等于预设的内存阈值;
进程使用率低于或等于预设的进程阈值;
CPU使用率低于或等于预设的CPU阈值。
在本发明的一个实施例中,目标资源文件为目标游戏的资源文件,客户端为游戏开发引擎。
本领域技术人员应当明白,可以通过各种方式来实现资源文件的处理装置5000。例如,可以通过指令配置处理器来实现资源文件的处理装置5000。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现资源文件的处理装置5000。例如,可以将资源文件的处理装置5000固化到专用器件(例如ASIC)中。可以将资源文件的处理装置5000分成相互独立的单元,或者可以将它们合并在一起实现。资源文件的处理装置5000可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
在本实施例中,资源文件的处理装置5000可以具有多种实现形式,例如,资源文件的处理装置5000可以是任何的提供导入资源文件服务的软件产品或者应用程序中运行的功能模块,或者是这些软件产品或者应用程序的外设嵌入件、插件、补丁件等,还可以是这些软件产品或者应用程序本身。
<服务器>
在本实施例中,还提供一种服务器7000。该服务器7000可以是图1所示的服务器1100。
在一方面,该服务器7000可以包括前述的资源文件的处理装置5000,用于实施本发明任意实施例的资源文件的处理方法。
在另一方面,如图7所示,服务器7000还可以包括第一处理器7100和第一存储器7200,该第一存储器7200用于存储可执行的第一指令;第一指令用于控制第一处理器7100执行根据本发明任意实施例的资源文件的处理方法。
在本实施例中,该服务器7000可以是单机服务器、刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组。
<第二实施例>
<方法>
在本实施例中,提供一种资源文件的处理方法。该资源文件的处理方法可以是由客户端实施。该客户端可以是如图1所示的客户端1200。
根据图8所示,本实施例的资源文件的处理方法可以包括如下步骤S8100~S8200:
步骤S8100,向服务器发送第一请求;其中,第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求。
在本发明的一个实施例中,可以是用户通过客户端执行指定操作,客户端响应于该指定操作,向服务器发送第一请求。其中,该指定操作可以是预先根据应用场景或具体需求所设定的。例如,该指定操作可以是点击目标资源文件的操作。
步骤S8200,接收服务器返回的目标编译结果文件,其中,目标编译结果文件为根据目标资源文件的依赖关系、目标运行平台的类型、和用于描述如何编译目标资源文件的编译文件对目标资源文件进行编译得到。
在本发明的一个实施例中,客户端在接收到目标编译结果文件的情况下,可以解析该目标编译结果文件,并对解析得到的结果进行展示。
在本发明的一个实施例中,该处理方法还可以包括:
获取服务器发送的第一哈希值,其中,第一哈希值为对目标编译结果文件进行哈希运算所得到的目标编译结果文件的哈希值;
向服务器发送第二请求;其中,第二请求为获取与第一哈希值对应的编译结果文件的请求;
接收服务器响应于第二请求返回的目标编译结果文件。
在本实施例中,客户端在接收到服务器对目标编译结果文件进行哈希运算所得到的第一哈希值的情况下,后续可以向服务器发送第二请求,以使得服务器可以无需重新对目标资源文件进行编译,而是直接获取存储的与第一哈希值对应的目标编译结果文件,作为目标资源文件在目标运行平台上的编译结果文件。
在本发明的一个实施例中,该处理方法还可以包括:
获取服务器发送的目标构建脚本文件,其中,目标构建脚本文件为根据依赖关系、目标运行平台的类型和编译文件所生成的,且目标构建脚本与目标编译结果文件一一对应;
向服务器发出第三请求;其中,第三请求为根据目标构建脚本文件获取目标资源文件在目标运行平台上的编译结果文件的请求;
接收服务器响应于第三请求返回的目标编译结果文件。
在本实施例中,客户端在接收到服务器发送的目标构建脚本文件的情况下,后续可以向服务器发送第三请求,以使得服务器可以无需重新对目标资源文件进行编译,而是可以直接获取存储的与目标构建脚本文件一一对应的目标编译结果文件,作为目标资源文件在目标运行平台上的编译结果文件。或者,服务器也可以是根据目标构建脚本文件重新生成对应的目标编译结果文件,作为目标资源文件在目标运行平台上的编译结果文件。
<装置>
在本实施例中,提供一种资源文件的处理装置9000,如图9所示,包括发送模块9100和接收模块9200。该发送模块9100用于向服务器发送第一请求;其中,第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;该接收模块9200用于接收服务器返回的目标编译结果文件,其中,目标编译结果文件为根据目标资源文件的依赖关系、目标运行平台的类型、和用于描述如何编译目标资源文件的编译文件对目标资源文件进行编译得到。
在本发明的一个实施例中,该资源文件的处理装置9000还可以包括:
用于获取服务器发送的第一哈希值的模块,其中,第一哈希值为对目标编译结果文件进行哈希运算所得到的目标编译结果文件的哈希值;
用于向服务器发送第二请求的模块;其中,第二请求为获取与第一哈希值对应的编译结果文件的请求;
用于接收服务器响应于第二请求返回的目标编译结果文件的模块。
在本发明的一个实施例中,该资源文件的处理装置9000还可以包括:
用于获取服务器发送的目标构建脚本文件的模块,其中,目标构建脚本文件为根据依赖关系、目标运行平台的类型和编译文件所生成的,且目标构建脚本与目标编译结果文件一一对应;
用于向服务器发出第三请求的模块;其中,第三请求为根据目标构建脚本文件获取目标资源文件在目标运行平台上的编译结果文件的请求;
用于接收服务器响应于第三请求返回的目标编译结果文件的模块。
本领域技术人员应当明白,可以通过各种方式来实现资源文件的处理装置9000。例如,可以通过指令配置处理器来实现资源文件的处理装置9000。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现资源文件的处理装置9000。例如,可以将资源文件的处理装置9000固化到专用器件(例如ASIC)中。可以将资源文件的处理装置9000分成相互独立的单元,或者可以将它们合并在一起实现。资源文件的处理装置9000可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
在本实施例中,资源文件的处理装置9000可以具有多种实现形式,例如,资源文件的处理装置9000可以是任何的提供导入资源文件服务的软件产品或者应用程序中运行的功能模块,或者是这些软件产品或者应用程序的外设嵌入件、插件、补丁件等,还可以是这些软件产品或者应用程序本身。
<客户端>
在本实施例中,还提供一种客户端4000。该客户端4000可以是图1所示的客户端1200。
在一方面,该客户端4000可以包括前述的资源文件的处理装置9000,用于实施本发明任意实施例的资源文件的处理方法。
在另一方面,如图10所示,客户端4000还可以包括第二处理器4100和第二存储器4200,该第二存储器4200用于存储可执行的第二指令;第二指令用于控制第二处理器4100执行根据本发明任意实施例的资源文件的处理方法。
在本实施例中,该客户端4000可以是智能手机、便携式电脑、台式计算机、平板电脑等可以支持资源文件运行的任意设备。
<例子1>
以下将结合图11进一步说明本实施例中提供的资源文件的处理方法。
如图11所示,资源文件的处理方法包括:步骤S5001~S5009。
步骤S5001,由客户端A发出第一请求;其中,第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求。
步骤S5002,由服务器响应于客户端A发出的第一请求,获取目标资源文件的依赖关系和用于描述如何编译目标资源文件的编译文件。
例如,目标资源文件可以是foo.c文件,该foo.c的代码中包含如下代码:#include<foo.h>,那么,该foo.h文件即为foo.c文件的依赖文件。
服务器中还存储有foo.c.lk文件,为用于描述如何编译目标资源文件的编译文件。
步骤S5003,由服务器根据目标资源文件的依赖关系、目标运行平台的类型和编译文件,对目标资源文件进行编译,得到目标编译结果文件。
目标资源文件在目标运行平台上的编译结果文件,即目标编译结果文件foo.xxx与目标资源文件foo.c是一一对应的。因此,客户端可以是通过目标编译结果文件foo.xxx的哈希值,来获取目标资源文件foo.c在目标运行平台上的目标编译结果文件foo.xxx。
步骤S5004,由服务器根据目标资源文件的依赖关系、目标运行平台的类型和编译文件,生成与目标编译结果文件一一对应的目标构建脚本文件。
目标构建脚本文件foo.mm中记录了用于生成目标编译结果文件foo.xxx的相关信息,其中,该相关信息可以包括依赖关系、目标运行平台的类型和编译方式等等。这样,目标构建脚本文件foo.mm中就包括了目标资源文件foo.c、依赖文件foo.h、以及依赖文件foo.h的内容的哈希值。这就保证了目标构建脚本文件foo.mm和目标编译结果文件foo.xxx是一一对应的关系。
步骤S5005,由服务器将目标编译结果文件提供至客户端A。
如果目标资源文件foo.c不变,目标资源文件的哈希值也不变,服务器之前将目标资源文件foo.c在目标运行平台上的目标编译结果文件foo.xxx提供至客户端了,客户端就应该可以直接使用本地存储的目标编译结果文件foo.xxx,无需再向服务器请求。
步骤S5006,由服务器将目标构建脚本文件提供至客户端A和客户端B。
在一个例子中,可以是在客户端B首次请求获取目标资源文件foo.c在目标运行平台上的目标编译结果文件foo.xxx时,客户端B可以同时向服务器提交目标资源文件foo.c的哈希值,以供服务器确定需要进行编译的资源文件。服务器会通知客户端B根据目标构建脚本文件foo.mm才能找到目标编译结果文件foo.xxx。
步骤S5007,由客户端B发出第三请求;其中,第三请求为根据目标构建脚本文件获取目标资源文件在目标运行平台上的编译结果文件的请求。
步骤S5008,由服务器响应于第三请求,获取与目标构建脚本文件对应的目标编译结果文件。
步骤S5009,由服务器将目标编译结果返回至客户端B。
目标构建脚本文件foo.mm和目标编译结果文件foo.xxx是一一对应的关系,服务器就可以根据客户端提交的目标构建脚本文件foo.mm,找到对应的目标编译结果文件foo.xxx返回至客户端。
<例子2>
在上述例子1的基础上,以下将结合图12进一步说明本实施例中提供的由服务器执行的资源文件的处理方法。
如图12所示,资源文件的处理方法包括:步骤S6001~S6004。
步骤S6001,检测重新编译目标资源文件的第一事件是否发生。
步骤S6002,在第一事件发生的情况下,重新获取目标资源文件的依赖关系和目标资源文件的新的编译文件。
步骤S6003,根据重新获取的依赖关系、目标运行平台的类型和新的编译文件,重新对目标资源文件进行编译,得到新的编译结果文件。
步骤S6004,根据重新获取的依赖关系、目标运行平台的类型和新的编译文件,生成与新的编译结果文件一一对应的新的构建脚本文件。
当依赖文件foo.h变化后,构建脚本文件foo.mm的内容就得变化。如果客户端用过去版本的构建脚本文件foo.mm来获取对应的编译结果文件,服务器就可以去核对对应的编译结果文件foo.xxx是不是最新版本,就可以知道客户端所请求的编译结果文件的版本和新的编译结果文件的版本不同。
<系统实施例>
在本实施例中,还提供一种资源文件的处理系统,包括前述第一实施例所述的服务器和前述第二实施例所述的客户端。
<计算机可读存储介质实施例>
在本实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现如本发明任意实施例的资源文件的处理方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (20)
1.一种资源文件的处理方法,包括:
响应于客户端发出的第一请求,获取所述目标资源文件的依赖关系和用于描述如何编译所述目标资源文件的编译文件;其中,所述第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;
根据所述依赖关系、所述目标运行平台的类型和所述编译文件,对所述目标资源文件进行编译,得到目标编译结果文件;
将所述目标编译结果文件提供至客户端。
2.根据权利要求1所述的处理方法,所述将所述目标编译结果文件提供至客户端包括:
对所述目标编译结果文件进行哈希运算,得到所述目标编译结果文件的哈希值,作为第一哈希值;
将所述第一哈希值返回至所述客户端;
接收所述客户端发出的第二请求,将所述目标编译结果文件发送至所述客户端;其中,所述第二请求为获取与所述第一哈希值对应的编译结果文件的请求。
3.根据权利要求1所述的处理方法,还包括:
根据所述依赖关系、所述目标运行平台的类型和所述编译文件,生成与所述目标编译结果文件一一对应的目标构建脚本文件;
将所述目标构建脚本文件提供至客户端;
响应于所述客户端发出的第三请求,获取与所述目标构建脚本文件对应的所述目标编译结果文件,并返回至所述客户端;其中,所述第三请求为根据所述目标构建脚本文件获取所述目标资源文件在所述目标运行平台上的编译结果文件的请求。
4.根据权利要求3所述的处理方法,所述根据所述依赖关系、所述目标运行平台的类型和所述编译文件,生成与所述目标编译结果文件一一对应的目标构建脚本文件包括:
根据所述依赖关系,确定所述目标资源文件所对应的依赖文件的存储地址;
分别对每一所述依赖文件进行哈希运算,得到对应依赖文件的哈希值;
对所述依赖文件的哈希值进行哈希运算,得到第二哈希值;
根据所述依赖文件的存储地址、所述第二哈希值、所述目标运行平台的类型和所述编译文件,生成所述目标构建脚本文件。
5.根据权利要求4所述的处理方法,还包括:
检测重新编译所述目标资源文件的第一事件是否发生;
在所述第一事件发生的情况下,重新获取所述目标资源文件的依赖关系和所述目标资源文件的新的编译文件;
根据重新获取的依赖关系、所述目标运行平台的类型和所述新的编译文件,重新对所述目标资源文件进行编译,得到新的编译结果文件;
根据所述重新获取的依赖关系、所述目标运行平台的类型和所述新的编译文件,生成与所述新的编译结果文件一一对应的新的构建脚本文件。
6.根据权利要求5所述的处理方法,所述第一事件包括以下至少一项:
再次接收到获取所述目标资源文件在所述目标运行平台的类型上的编译结果文件的请求;
用于描述所述目标资源文件的描述文件发生变更;
用于描述所述依赖文件的描述文件发生变更;
用于描述所述编译文件的描述文件发生变更。
7.根据权利要求5所述的处理方法,所述目标构建脚本文件和所述新的构建脚本文件通过可信树的方式存储。
8.根据权利要求3所述的处理方法,还包括:
清理所述目标编译结果文件;
响应于所述客户端发出所述第三请求,根据所述目标构建脚本文件重新生成所述目标编译结果文件。
9.根据权利要求1所述的处理方法,还包括:
检测自身空闲的第二事件是否发生;
在所述第二事件发生的情况下,重新根据所述依赖关系、其他运行平台和所述编译文件对所述目标资源文件进行编译,得到所述目标资源文件在所述其他运行平台上的其他编译结果文件;
根据所述依赖关系、所述其他运行平台和所述编译文件,得到与所述其他编译结果文件一一对应的构建脚本文件。
10.根据权利要求9所述的处理方法,所述第二事件包括以下至少一项:
内存使用率低于或等于预设的内存阈值;
进程使用率低于或等于预设的进程阈值;
CPU使用率低于或等于预设的CPU阈值。
11.根据权利要求1所述的处理方法,所述目标资源文件为目标游戏的资源文件,所述客户端为游戏开发引擎。
12.一种资源文件的处理方法,包括:
向服务器发送第一请求,其中,所述第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;
接收所述服务器返回的目标编译结果文件,其中,所述目标编译结果文件为根据所述目标资源文件的依赖关系、所述目标运行平台的类型、和用于描述如何编译所述目标资源文件的编译文件对所述目标资源文件进行编译得到。
13.根据权利要求12所述的处理方法,还包括:
获取所述服务器发送的第一哈希值,所述第一哈希值为对所述目标编译结果文件进行哈希运算所得到的所述目标编译结果文件的哈希值;
向服务器发送第二请求,其中,所述第二请求为获取与所述第一哈希值对应的编译结果文件的请求;
接收所述服务器响应于所述第二请求返回的所述目标编译结果文件。
14.根据权利要求12所述的处理方法,还包括:
获取所述服务器发送的目标构建脚本文件,其中,所述目标构建脚本文件为根据所述依赖关系、所述目标运行平台的类型和所述编译文件所生成的,且所述目标构建脚本与所述目标编译结果文件一一对应;
向所述服务器发送第三请求;其中,所述第三请求为根据所述目标构建脚本文件获取所述目标资源文件在所述目标运行平台上的编译结果文件的请求;
接收所述服务器响应于所述第三请求返回的所述目标编译结果文件。
15.一种资源文件的处理装置,包括:
获取模块,用于响应于客户端发出的第一请求,获取所述目标资源文件的依赖关系和用于描述如何编译所述目标资源文件的编译文件;其中,所述第一请求为获取目标资源文件在目标运行平台上的编译结果文件的第一请求;
编译模块,用于根据所述依赖关系、所述目标运行平台的类型和所述编译文件,对所述目标资源文件进行编译,得到目标编译结果文件;
提供模块,用于将所述目标编译结果文件提供至所述客户端。
16.一种资源文件的处理装置,包括:
发送模块,用于向服务器发送第一请求,其中,所述第一请求为获取目标资源文件在目标运行平台上的编译结果文件的请求;
接收模块,用于接收所述服务器返回的目标编译结果文件,其中,所述目标编译结果文件为根据所述目标资源文件的依赖关系、所述目标运行平台的类型、和用于描述如何编译所述目标资源文件的编译文件对所述目标资源文件进行编译得到。
17.一种服务器,其中,包括:
根据权利要求15所述的处理装置;或者,
第一处理器和第一存储器,所述第一存储器用于存储第一指令,所述第一指令用于控制所述第一处理器执行根据权利要求1至11中任一项所述的处理方法。
18.一种客户端,包括:
根据权利要求16所述的装置,或者,
第二处理器和第二存储器,所述第二存储器用于存储第二指令,所述第二指令用于控制所述第二处理器执行根据权利要求12至14中任一项所述的处理方法。
19.一种资源文件的处理系统,包括根据权利要求17所述的服务器和根据权利要求18所述的客户端。
20.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如权利要求1至14中任一项所述的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010285307.6A CN113296778B (zh) | 2020-04-13 | 2020-04-13 | 一种资源文件的处理方法、装置、服务器、客户端及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010285307.6A CN113296778B (zh) | 2020-04-13 | 2020-04-13 | 一种资源文件的处理方法、装置、服务器、客户端及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113296778A true CN113296778A (zh) | 2021-08-24 |
CN113296778B CN113296778B (zh) | 2024-06-25 |
Family
ID=77317885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010285307.6A Active CN113296778B (zh) | 2020-04-13 | 2020-04-13 | 一种资源文件的处理方法、装置、服务器、客户端及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113296778B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129323A (zh) * | 2022-06-30 | 2022-09-30 | 北京新唐思创教育科技有限公司 | 数据资源包的处理方法、装置、设备和存储介质 |
WO2023125083A1 (zh) * | 2021-12-29 | 2023-07-06 | 北京字跳网络技术有限公司 | 资源文件加载方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870310A (zh) * | 2014-02-18 | 2014-06-18 | 小米科技有限责任公司 | 程序编译方法及相关装置 |
CN104866369A (zh) * | 2015-05-22 | 2015-08-26 | 广州华多网络科技有限公司 | 一种数据处理的方法以及装置 |
US9229693B1 (en) * | 2014-05-28 | 2016-01-05 | Amazon Technologies, Inc. | Build service for software development projects |
CN105335137A (zh) * | 2014-07-23 | 2016-02-17 | 国际商业机器公司 | 用于处理源文件的方法和装置 |
CN107122219A (zh) * | 2017-03-31 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 安装文件的获取方法和装置 |
-
2020
- 2020-04-13 CN CN202010285307.6A patent/CN113296778B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870310A (zh) * | 2014-02-18 | 2014-06-18 | 小米科技有限责任公司 | 程序编译方法及相关装置 |
US9229693B1 (en) * | 2014-05-28 | 2016-01-05 | Amazon Technologies, Inc. | Build service for software development projects |
CN105335137A (zh) * | 2014-07-23 | 2016-02-17 | 国际商业机器公司 | 用于处理源文件的方法和装置 |
CN104866369A (zh) * | 2015-05-22 | 2015-08-26 | 广州华多网络科技有限公司 | 一种数据处理的方法以及装置 |
CN107122219A (zh) * | 2017-03-31 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 安装文件的获取方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023125083A1 (zh) * | 2021-12-29 | 2023-07-06 | 北京字跳网络技术有限公司 | 资源文件加载方法、装置、电子设备及存储介质 |
CN115129323A (zh) * | 2022-06-30 | 2022-09-30 | 北京新唐思创教育科技有限公司 | 数据资源包的处理方法、装置、设备和存储介质 |
CN115129323B (zh) * | 2022-06-30 | 2023-04-11 | 北京新唐思创教育科技有限公司 | 数据资源包的处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113296778B (zh) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124604B (zh) | 分配容器组pod IP地址的方法、装置、设备及存储介质 | |
US10601680B2 (en) | Application resiliency using APIs | |
US9830139B2 (en) | Application experience sharing system | |
CN111708557B (zh) | 更新配置文件的方法、设备及存储介质 | |
CN110262851B (zh) | 接口配置方法及装置 | |
CN111177618A (zh) | 网站搭建方法、装置、设备及计算机可读存储介质 | |
CN113296778B (zh) | 一种资源文件的处理方法、装置、服务器、客户端及系统 | |
CN111090423A (zh) | 一种webhook框架系统和实现主动调用、实现事件触发的方法 | |
CN111913738A (zh) | 访问请求的处理方法、装置、计算设备和介质 | |
CN110968331A (zh) | 应用程序运行的方法和装置 | |
US10320979B2 (en) | Data structure driven interactive voice response (IVR) framework | |
CN114547569A (zh) | 账户登录处理方法及装置 | |
US11526379B2 (en) | Application building in a distributed computing environment | |
CN110324432B (zh) | 应用于终端的数据处理方法、装置、介质和计算设备 | |
CN113296740A (zh) | 一种服务对象的处理方法、装置、设备和机器可读介质 | |
CN110231965B (zh) | 一种云端设备、应用程序处理方法及电子设备 | |
CN112114804A (zh) | 应用程序的生成方法、装置及系统 | |
US9374437B2 (en) | Schema validation proxy | |
CN106550002B (zh) | 一种paas云托管系统及方法 | |
CN107566519B (zh) | 一种代码操作方法、装置、服务器及服务器集群 | |
CN108289056B (zh) | 分享动态图表的方法、装置以及计算设备 | |
US10958445B1 (en) | Attribution of network events pursuant to configuring mobile communication devices | |
US11438398B2 (en) | 3rd generation partnership project (3gpp) framework for live uplink streaming (flus) sink capabilities determination | |
CN113342772A (zh) | 一种可本地化部署的云存储方法、设备及介质 | |
US10901698B2 (en) | Command tool development using a description file |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221019 Address after: China Hongkong Tongluowan 33 hysanavenue Lee Garden Phase 19 Building Room 1901 Applicant after: Lingxi Interactive Entertainment Holding Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Applicant before: ALIBABA GROUP HOLDING Ltd. |
|
GR01 | Patent grant |