一种客户端热更新方法及装置与流程

文档序号:17761505发布日期:2019-05-24 21:43阅读:444来源:国知局
一种客户端热更新方法及装置与流程

本发明涉及一种客户端热更新方法及装置,属于计算机技术领域。



背景技术:

由于现在的游戏更新越来越频繁,一般游戏公司都需要每周1次或者2次的客户端更新,有时遇到紧急的活动或者bug,更有可能一天内更新多次。传统的更新的方式,都是周版本时,制作好代码和资源的热更patch,登陆游戏前,先更新代码和资源patch。如果遇到,非周版本的更新期间,需要更新资源时,那会变得非常麻烦,需要发公告,安排紧急的停服维护,再发布新的patch,由于停服,打断了玩家的游戏节奏,影响引起流失。另外,由于周版本的更新时间,在一周的固定一天,当遇到下面2种情况时,处理起来便很麻烦:1)如果不是周版本时,需要发布一个资源的patch时。这种情况,需要从游戏主干,临时做一个patch外放,同时,还需要安排一次停服更新。2)如果周版本的内容,已经合并到游戏主干,并测试完成了,但还没有外放,这时需要再发布一个资源的patch时,会把周版本的patch覆盖。如果涉及到覆盖,那么周版本的patch也需要重新制作和重新测试。虽然一般停服更新都在凌晨,但是也有部分玩家凌晨也处于游戏状态,如果停服更新,可能造成用户流失。



技术实现要素:

本发明提供一种客户端热更新方法及装置,在现有的客户端架构基础上,设计一套系统,以达到更新代码和资源时,不需要停服,不需要在登陆前更新patch,同时,处理好patch覆盖的问题。

本发明的技术方案第一方面为一种客户端热更新方法,该方法包括如下步骤:

服务器生成热更补丁集并向客户端发送相关的推送信息,所述热更补丁集包括热更代码和/或热更资源,所述推送信息包括热更版本要求及热更补丁集的下载地址;

客户端接收推送信息,查找与之版本对应的热更补丁集,将热更补丁集与当前客户端数据进行差异比对;

客户端根据比对结果下载相应的热更文件进行热更处理,当对代码进行热更新时,客户端使用热更代码替换待更新代码并解释执行所述热更代码;当对资源进行热更新时,客户端增加热更资源或使用热更资源替换待更新资源。

作为本发明技术方案的进一步改进,所述服务器生成热更补丁集,包括:对所述热更资源进行分离打包:客户端启动运行的必要资源打包至patch格式的基础数据包,客户端可根据需要加载运行的资源压缩存储为zip文件;将所述基础数据包与zip文件添加至热更补丁集并增加资源版本号标记。

作为本发明技术方案的进一步改进,所述热更补丁集存储在服务器的热更区,所述热更区为基于winhttp或crul库编写的可实现动态下载的数据存储区。

作为本发明技术方案的进一步改进,所述客户端使用热更代码替换待更新代码并解释执行所述热更代码,还包括:检测所述热更代码是否为保证客户端正常运行的核心代码,若热更代码为核心代码,则客户端请求重启更新,否则直接在后台进行替换并解释执行。

作为本发明技术方案的进一步改进,所述客户端增加热更资源或使用热更资源替换待更新资源,包括:读取热更资源信息及其路径信息;遍历当前客户端数据,将客户端对应路径的热更资源进行替换更新,若热更资源包括客户端不存在的新路径,则在客户端新建对应路径以新增热更资源。

本发明的技术方案第二方面为一种客户端热更新装置,包括服务器端和客户端,所述服务器端包括:

热更补丁集发布模块,用于生成热更补丁集并向客户端发送相关的推送信息,所述热更补丁集包括热更代码和/或热更资源,所述推送信息包括热更版本要求及热更补丁集的下载地址;

所述客户端包括:

更新对比模块,用于接收推送信息,查找与之版本对应的热更补丁集,将热更补丁集与当前客户端数据进行差异比对;

热更处理模块,用于根据比对结果下载相应的热更文件进行热更处理;所述热更处理模块包括:代码热更模块,用于对代码进行热更新时,使用热更代码替换待更新代码并解释执行所述热更代码;资源热更模块,用于对资源进行热更新时,客户端增加热更资源或使用热更资源替换待更新资源。

作为本发明技术方案的进一步改进,所述热更补丁集发布模块包括:分离打包模块,用于对所述热更资源进行分离打包:客户端启动运行的必要资源打包至patch格式的基础数据包,客户端可根据需要加载运行的资源压缩存储为zip文件;生成模块,用于将所述基础数据包与zip文件添加至热更补丁集并增加资源版本号标记。

作为本发明技术方案的进一步改进,所述服务器端还包括:热更补丁集存储模块,用于在服务器创建热更区并将热更补丁集存储至所述热更区,所述热更区为基于winhttp或crul库编写的可实现动态下载的数据存储区。

作为本发明技术方案的进一步改进,所述代码热更模块包括:代码检测模块,用于检测所述热更代码是否为保证客户端正常运行的核心代码;核心代码热更模块,用于请求客户端重启更新以完成对核心代码的热更新;非核心代码热更模块,用于直接在客户端后台进行代码替换并解释执行。

作为本发明技术方案的进一步改进,所述资源热更模块包括:热更资源读取模块,用于读取热更资源信息及其路径信息;资源替换模块,用于遍历当前客户端数据,将客户端对应路径的热更资源进行替换更新;资源新增模块,用于当客户端未检测到相关热更资源路径时,新建对应路径以新增热更资源。

本发明的有益效果为:

本发明所公开的一种客户端热更新方法及装置,不需要停服更新,基本不用中断用户运行而完成更新,防止用户流失;通过热更版本标记能够防止更新覆盖等问题。

附图说明

图1所示为根据本发明技术方案的客户端热更新方法流程图;

图2所示为根据本发明一种实施例的热更新方法流程图;

图3所示为根据本发明一种实施例的周版本更新与热更新机制并存的示意图;

图4所示为根据本发明一种实施例的周版本更新防止重复资源更新的方法流程图;

图5所示为根据本发明一种实施例的装置结构示意图。

具体实施方式

以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。

需要说明的是,在本公开中所使用的单数形式的“一种”、“所述”和“该”旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

参考图1-图4,本发明一种实施例公开了一种客户端热更新方法,可在周版本更新之间进行一些紧急更新,例如修复一些小bug,该方法包括如下步骤:

服务器生成热更补丁集并向客户端发送相关的推送信息,所述热更补丁集包括热更代码和/或热更资源,所述推送信息包括热更版本要求及热更补丁集的下载地址;

客户端接收推送信息,查找与之版本对应的热更补丁集,将热更补丁集与当前客户端数据进行差异比对;

客户端根据比对结果下载相应的热更文件进行热更处理,当对代码进行热更新时,客户端使用热更代码替换待更新代码并解释执行所述热更代码;当对资源进行热更新时,客户端增加热更资源或使用热更资源替换待更新资源。

要实现动态下载,首先需要对热更补丁集分离打包,这里可以通过黑白名单机制实现分离打包,将客户端启动运行的必要资源加入白名单,将可根据需要加载运行或非当前运行所必需的资源加入黑名单,然后将白名单的所有资源打包至patch格式的基础数据包,将黑名单的所有资源保持原有路径进行存放(例如将a.bytes的音频文件保存到res/sound/a.bytes;将1.tga的美术资源文件保存到res/ui/1.tga),并压缩存储为zip文件;将所述基础数据包与zip文件添加至热更补丁集并增加资源版本号标记;这里的资源版本号可以通过资源名进行标记,也可以通过在资源文件尾部留出8位空间存放版本号,资源版本号可以用来判定热更补丁集先后生成顺序,避免旧版本将新版本覆盖。

为了实现对热更补丁集中的部分文件下载,所述热更补丁集存储在服务器的热更区,所述热更区为基于winhttp或crul库编写的可实现动态下载的数据存储区;客户端根据需求可以到指定路径下载所需文件,无需将整个热更补丁集全部下载,这里服务器可以选择访问速度较快的服务器,例如腾讯的cdn服务器或者阿里的cdn服务器。

因为要进行热更新,有时需要对一些效率较低或有逻辑问题的代码进行优化更新,但是有的代码所涉及逻辑关系较复杂或者是客户端运行必须代码,更改这类代码可能导致整个程序崩溃,为了防止这种情况发生,要对代码进行热更新前,先查看该代码的引用关系、逻辑关系等是否涉及大量代码的变动,这类代码被视为核心代码,为了能够顺利完成更新,请求用户重启客户端进行更新,更新完成后用户可继续运行客户端;若需要更新的代码不是客户端运行所必须的,也不是正在被执行的代码,客户端可以直接在后台进行替换并解释执行,当后续使用到这些代码时,直接执行新的代码。

当有时候出现声音、画面等资源加载出现问题,想要修复这些资源,首先查看这些资源的名称及其路径,然后到服务器的热更补丁集中找到对应路径的对应资源,下载完成替换;当需要新增一些资源文件时,先读取热更补丁集中所要增加的资源文件的路径信息,查看客户端数据包中是否有该路径,若不存在,则新建对应路径并下载新增的资源到该路径下实现新增热更资源。

若在某次热更新后进行了比较大的周版本更新,为了保证更新的完整性,周版本更新包中有可能包含了热更新的一些资源,在进行周版本更新时,客户端先进行一次更新资源遍历,并与当前客户端数据进行差异对比,若检测到有重复资源(更新的资源都包含有版本号标记,若资源信息、资源路径及其版本号标记都相同,则表明为重复资源),则在周版本更新时,不再对这些重复资源进行更新。

参考图5,本发明的另一种实施例公开了本发明的技术方案第二方面为一种客户端热更新装置,包括服务器端和客户端,所述服务器端包括:

热更补丁集发布模块,用于生成热更补丁集并向客户端发送相关的推送信息,所述热更补丁集包括热更代码和/或热更资源,所述推送信息包括热更版本要求及热更补丁集的下载地址;

所述客户端包括:

更新对比模块,用于接收推送信息,查找与之版本对应的热更补丁集,将热更补丁集与当前客户端数据进行差异比对;

热更处理模块,用于根据比对结果下载相应的热更文件进行热更处理;所述热更处理模块包括:代码热更模块,用于对代码进行热更新时,使用热更代码替换待更新代码并解释执行所述热更代码;资源热更模块,用于对资源进行热更新时,客户端增加热更资源或使用热更资源替换待更新资源。

作为本发明技术方案的进一步改进,所述热更补丁集发布模块包括:分离打包模块,用于对所述热更资源进行分离打包:客户端启动运行的必要资源打包至patch格式的基础数据包,客户端可根据需要加载运行的资源压缩存储为zip文件;生成模块,用于将所述基础数据包与zip文件添加至热更补丁集并增加资源版本号标记。

作为本发明技术方案的进一步改进,所述服务器端还包括:热更补丁集存储模块,用于在服务器创建热更区并将热更补丁集存储至所述热更区,所述热更区为基于winhttp或crul库编写的可实现动态下载的数据存储区。

作为本发明技术方案的进一步改进,所述代码热更模块包括:代码检测模块,用于检测所述热更代码是否为保证客户端正常运行的核心代码;核心代码热更模块,用于请求客户端重启更新以完成对核心代码的热更新;非核心代码热更模块,用于直接在客户端后台进行代码替换并解释执行。

作为本发明技术方案的进一步改进,所述资源热更模块包括:热更资源读取模块,用于读取热更资源信息及其路径信息;资源替换模块,用于遍历当前客户端数据,将客户端对应路径的热更资源进行替换更新;资源新增模块,用于当客户端未检测到相关热更资源路径时,新建对应路径以新增热更资源。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的资产唯一标识码生成方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1