一种更新Lua文件的方法及装置与流程

文档序号:11949630阅读:398来源:国知局
一种更新Lua文件的方法及装置与流程

本发明涉及一种更新Lua文件的方法及装置。



背景技术:

随着移动互联网的高速发展,用户对软件的需求日益强烈。Lua文件是一种小巧的脚本语言,是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo所组成并于1993年开发。由于Lua脚本语言可以嵌入应用程序中,为应用程序提供灵活的扩展和定制功能,常被用来实现动态修改功能和业务逻辑。

由于Lua脚本可以动态加载嵌入应用程序中,不需要预先编译,这样用户只需要下载一次安装包,后续都可以通过更新Lua脚本来达到更新功能的目的,从而使得新的功能能够尽快发布到用户的客户端,具有较高的迭代率,从而大大增强了产品的生命力和竞争力。基于客户端的行为千差万别,之前发布过的历史版本都可能出现在用户的客户端里,导致难以保证所有用户更新后的文件包都具备完整性。

现有技术中,Lua脚本的更新方式主要包括以下两种:

方式一:把所有的Lua文件打包在一起,每次更新都下载所有的Lua文件。由于所有文件是打包在同一个文件包里下载的,虽然能够保证版本的一致性,但由于每次更新都需要下载所有的Lua文件,使得包体过大,下载时间较长,不仅浪费客户端流量,而且下载失败率也较高。

方式二:单独计算每个Lua文件的特征码,汇总后与服务端进行通讯,服务端根据客户端文件的特征码,判断是否最新的文件,不是则给予更新。该方式虽然能保证只下载更新的文件,流量消耗较少,但由于要上传所有文件的特征码,上传的数据量很大,导致花费时间较长。并且,由于每个文件的下载是孤立的,移动设备上网络环境又比较复杂,经常出现断断续续的情况,使得保证版本一致性的复杂度很高。容易出现同时存在新旧版本文件,造成客户端出现一些不可预知的问题,例如,接口找不到,功能异常等,并且由于文件数量繁多,下载耗时也较长,用户体验较差。



技术实现要素:

本发明实施例提供了一种更新Lua文件的方法及装置,通过更新包即可实现Lua文件更新,下载的文件包较小,下载耗时短,节省流量,用户体验好。

本发明实施例提供的技术方案如下:

一方面,提供了一种更新Lua文件的方法,包括:

检测客户端当前所安装的Lua文件的版本号;

根据所述版本号,判断所述客户端当前所安装的Lua文件是否需要更新;

如果是,则确定所述客户端当前所安装的Lua文件更新至最新版本的Lua文件所需要的更新包;

获取所述更新包,将所述客户端当前所安装的Lua文件更新至最新版本的Lua文件。

优选地,获取所述更新包之前,所述方法还包括:

根据最新版本的Lua文件与上一版本的Lua文件之间的差别,生成差异文件;

生成所述最新版本的Lua文件的配置文件,所述配置文件至少包括:所述最新版本Lua文件的版本号,所述最新版本Lua文件的所有文件列表,所述文件列表中每个文件对应的特征码;

获取历史发布的每个版本的Lua文件;

根据所述差异文件、所述配置文件和所述每个版本的Lua文件,生成所述每个版本的Lua文件更新到所述最新版本的Lua文件所需要的更新包。

优选地,在判断所述客户端当前所安装的Lua文件需要更新后,所述方法还包括:

向客户端发送更新提醒信息,所述更新提醒信息中包括:所需要的更新包的下载地址,更新包的大小,更新包的验证码以及最新版本的Lua文件的版本号。

优选地,所述获取所述更新包,包括:

根据所述更新提醒信息,采用HTTP协议下载更新包;

在更新包下载完成后,对比下载的更新包的大小、下载的更新包的验证码是否与所述更新提醒信息中的更新包的大小、更新包的验证码相同;

如果是,则确定所述更新包下载完成,完成所述更新包的获取。

优选地,所述将所述客户端当前所安装的Lua文件更新至最新版本的Lua文件包括:

解压下载的所述更新包,将所述更新包覆盖到客户端的升级目录;

根据所述更新包和所述客户端当前所安装Lua文件生成最新版本的Lua文件。

另一方面,提供了一种更新Lua文件的装置,包括:

检测模块,用于检测客户端当前所安装的Lua文件的版本号;

判断模块,用于根据所述版本号,判断所述客户端当前所安装的Lua文件是否需要更新;

确定模块,用于在所述判断模块判断所述客户端当前所安装的Lua文件需要更新后,确定所述客户端当前所安装的Lua文件更新至最新版本的Lua文件所需要的更新包;

第一获取模块,用于获取所述更新包;

更新模块,用于将所述客户端当前所安装的Lua文件更新至最新版本的Lua文件。

优选地,所述装置还包括:

第一生成模块,用于根据最新版本的Lua文件与上一版本的Lua文件之间的差别,生成差异文件;

第二生成模块,用于生成所述最新版本的Lua文件的配置文件,所述配置文件至少包括:所述最新版本Lua文件的版本号,所述最新版本Lua文件的所有文件列表,所述文件列表中每个文件对应的特征码;

第二获取模块,用于获取历史发布的每个版本的Lua文件;

第三生成模块,用于根据所述差异文件、所述配置文件和所述每个版本的Lua文件,生成所述每个版本的Lua文件更新到所述最新版本的Lua文件所需要的更新包。

优选地,所述装置还包括:

发送模块,用于在判断所述客户端当前所安装的Lua文件需要更新后,向客户端发送更新提醒信息,所述更新提醒信息中包括:所需要的更新包的下载地址,更新包的大小,更新包的验证码以及最新版本的Lua文件的版本号。

优选地,所述第一获取模块包括:

下载单元,用于根据所述更新提醒信息,采用HTTP协议下载更新包;

对比单元,用于在更新包下载完成后,对比下载的更新包的大小、下载的更新包的验证码是否与所述更新提醒信息中的更新包的大小、更新包的验证码相同;

确定单元,用于在所述对比单元对比相同后,确定所述更新包下载完成,完成所述更新包的获取。

优选地,所述更新模块,包括:

解压单元,用于解压下载的所述更新包;

覆盖单元,用于将所述更新包覆盖到客户端的升级目录;

生成单元,用于根据所述更新包和所述客户端当前所安装Lua文件生成最新版本的Lua文件。

本发明实施例提供的更新Lua文件的方法及装置,通过检测客户端当前所安装的Lua文件的版本号,来判断客户端当前所安装的Lua文件是否需要更新,在判断需要更新后,确定客户端当前所安装的Lua文件更新至最新版本的Lua文件所需要的更新包,然后获取更新包,将客户端当前所安装的Lua文件更新至最新版本的Lua文件。该更新Lua文件的方法及装置,通过更新包即可实现Lua文件更新,下载的文件包较小,下载耗时短,节省流量,用户体验好。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种更新Lua文件的方法的流程图;

图2是本发明实施例提供的另外一种更新Lua文件的方法的流程图;

图3是本发明实施例提供的一种更新Lua文件的装置的框图;

图4是本发明实施例提供的另外一种更新Lua文件的装置的框图。

具体实施方式

为了使本领域技术人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。

本专利申请中所涉及的相关术语,释义如下:

Lua文件:是一种脚本语言,可以嵌入应用程序中动态加载,不需要预先编译,能够为应用程序提供灵活的扩展和定制功能,实现动态修改功能和业务逻辑。

版本一致性:指客户端所使用的Lua文件应当为同一版本,否则会导致功能不完整,接口错误等问题。

升级链:把每次更新作为一个节点,从最初始的版本串到最新的版本,根据升级链可以找出两个版本之间的差别。

如图1所示,为本发明实施例提供的一种更新Lua文件的方法,包括以下步骤S101-104:

步骤S101:检测客户端当前所安装的Lua文件的版本号。

为了区分不同版本的Lua文件,每次Lua文件发布时,都会通过版本号进行区分,通过检测客户端当前所安装的Lua文件的版本号,能够知道客户端所安装的Lua文件的相关信息。

步骤S102:根据版本号,判断客户端当前所安装的Lua文件是否需要更新。

通过检测出的客户端所安装的Lua文件的版本号,与最新版本的Lua文件的版本号是否一致,来判断当前安装的Lua文件是否需要更新,例如,当前所安装的Lua文件为V2.0,而最新版本的Lua文件的版本号为V3.0,即两者不一致,则认为需要对Lua文件进行更新。否则等待或结束。

步骤S103:在判断客户端当前所安装的Lua文件需要更新后,确定客户端当前所安装的Lua文件更新至最新版本的Lua文件所需要的更新包。

由于客户端当前所安装的Lua文件版本可能不同,例如,可能为V1.0,也可能为V2.0,那么将当前所安装的不同版本的Lua文件更新至最新版本的Lua文件所需要的更新包可能不同,例如,从V1.0更新至V3.0,与从V2.0更新至V3.0所需要的更新包就不同。对于Lua文件更新非常重要的一点是,确定本次更新所需要的更新包,从而获取正确的更新包进行文件更新。

步骤S104:获取更新包,将客户端当前所安装的Lua文件更新至最新版本的Lua文件。

在步骤S103中确定需要的更新包后,可以从云端、服务器等存储有更新包的地方,下载更新包,并采用该更新包将客户端当前所安装的Lua文件更新至最新版本。

本发明实施例提供的更新Lua文件的方法,通过检测客户端当前所安装的Lua文件的版本号,来判断客户端当前所安装的Lua文件是否需要更新,在判断需要更新后,确定客户端当前所安装的Lua文件更新至最新版本的Lua文件所需要的更新包,然后获取更新包,将客户端当前所安装的Lua文件更新至最新版本的Lua文件。该更新Lua文件的方法,通过更新包即可实现Lua文件更新,下载的文件包较小,下载耗时短,节省流量,用户体验好。

在另外一个实施例中,如图2所示,更新Lua文件的方法,还包括以下步骤S201-S204:

步骤S201:根据最新版本的Lua文件与上一版本的Lua文件之间的差别,生成差异文件。

对于Lua文件开发,可以通过在版本管理工具上建立相应的项目,对开发过程中的文件进行管理,每次开发完成后,会将更改后的新版Lua文件提交到版本管理工具,通过版本管理对Lua文件的版本号进行管理,并且找出最新版本的Lua文件与上一版本的Lua文件之间的差别,生成差异文件,并且按照目录结构提取出来。其中,版本管理工具可以采用GIT或SVN等任意版本管理工具,本发明实施例不做具体限定。

步骤S202:生成最新版本的Lua文件的配置文件,其中,配置文件至少包括:最新版本Lua文件的版本号,最新版本Lua文件的所有文件列表,文件列表中每个文件对应的特征码。

在一个实施例中,可以将配置文件的文件名设置为:ArchInfo.lua。

步骤S203:获取历史发布的每个版本的Lua文件。

步骤S204:根据差异文件、配置文件和每个版本的Lua文件,生成每个版本的Lua文件更新到最新版本的Lua文件所需要的更新包。

具体而言,可以将步骤S201得到的差异文件、步骤S202生成的配置文件上传至服务器,服务端收到最新的更新包后,和之前的历史信息做合并,生成每个历史版本到最新版本的更新包。

例如,从第三个版本到当前最新版本的更新包,具体生成方法:解压第三个版本到最后一次发布版本的更新包到Tmp目录,再解压S204上传的更新包,并覆盖到Tmp目录,这样就能把相同的差异文件合并到一起,然后检查ArchInfo.lua文件中的文件列表,对比Tmp目录下的文件列表,删除掉ArchInfo.lua中已经不包含的文件。最后将Tmp目录打包保存,就可以得到第三个版本到当前最新版本的更新包。对每个历史版本做同样的操作,就可以得到每个历史版本到当前最新版本的更新包。

在另外一个实施例中,在判断客户端当前所安装的Lua文件需要更新后,上述方法进一步还可以包括步骤S1:

步骤S1:向客户端发送更新提醒信息,其中,更新提醒信息中包括:所需要的更新包的下载地址,更新包的大小,更新包的验证码以及最新版本的Lua文件的版本号。

在本发明的一个实施例中,上述步骤S104中的获取更新包,包括以下步骤S2-S3:

步骤S2:根据更新提醒信息,采用HTTP协议下载更新包;

步骤S3:在更新包下载完成后,对比下载的更新包的大小、下载的更新包的验证码是否与更新提醒信息中的更新包的大小、更新包的验证码相同;

步骤S4:如果相同,则确定更新包下载完成,完成更新包的获取。

在本发明的另外一个实施例中,上述步骤S104中的将客户端当前所安装的Lua文件更新至最新版本的Lua文件包括以下步骤S11-S12:

步骤S11:解压下载的更新包,将更新包覆盖到客户端的升级目录;

步骤S12:根据更新包和客户端当前所安装Lua文件生成最新版本的Lua文件。

本发明实施例借助于版本管理工具,比较出本次迭代即将发布的最新版本的Lua文件和上一版本的Lua文件之间的差别文件,压缩打包后上传到服务器。由服务器根据之前升级链的历史信息和最新上传的打包文件,生成各个版本到最新版本的更新包。每个更新包包含了某个版本到最新版本之间的所有差别文件。即不管哪个版本的客户端,连接上服务器请求升级时,只需要下载一个压缩包,就能达到更新到最新版本的目的,由于仅包含需要更新的文件,包体较小,下载消耗的流量小,下载速度快,用户体验好。

以下对更新过程进行详细说明:

步骤S21:启动客户端。

步骤S22:客户端读取本地版本号,并上传请求更新的消息到服务端,等待服务端的回复。

步骤S23:服务端收到客户端的请求以后,提取客户端上传的版本号,和服务端最新的版本号做比较,根据比较结果回复给客户端。如果需要更新,则回复内容中包含更新包的下载地址,更新包大小,更新包验证码,最新版本号;如果不需要更新,则不包含这些信息。

步骤S24:客户端收到回复以后,根据是否包含更新信息来判断是否需要下载更新包。如果需要更新,则进入步骤S25,否则进入步骤S28

步骤S25:如果步骤S24中有更新信息,客户端按照更新信息,用HTTP协议开始下载更新包。

步骤S26:下载结束以后,根据S24中的更新信息,对比下载的更新包大小、验证码,判断是否下载成功。如果下载成功,则进入步骤S27,否则进入步骤S25。

步骤S27:解压S26下载的更新包,覆盖到客户端的升级目录,替换之前已更新的Lua脚本文件。

步骤S28:更新过程结束,客户端可以继续后续操作了

相应地,本发明实施例还提供一种更新Lua文件的装置,如图3所示,包括

检测模块301,用于检测客户端当前所安装的Lua文件的版本号;

判断模块302,用于根据版本号,判断客户端当前所安装的Lua文件是否需要更新;

确定模块303,用于在判断模块302判断客户端当前所安装的Lua文件需要更新后,确定客户端当前所安装的Lua文件更新至最新版本的Lua文件所需要的更新包;

第一获取模块304,用于获取更新包;

更新模块305,用于将客户端当前所安装的Lua文件更新至最新版本的Lua文件。

本发明实施例提供的更新Lua文件的装置,通过检测模块检测客户端当前所安装的Lua文件的版本号,通过判断模块判断客户端当前所安装的Lua文件是否需要更新,在判断需要更新后,通过确定模块确定客户端当前所安装的Lua文件更新至最新版本的Lua文件所需要的更新包,然后通过第一获取模块获取更新包,再通过更新模块将客户端当前所安装的Lua文件更新至最新版本的Lua文件。该更新Lua文件的装置,通过更新包即可实现Lua文件更新,下载的文件包较小,下载耗时短,节省流量,用户体验好。

在另外一个实施例中,如图4所示,上述更新Lua文件的装置,还包括:

第一生成模块401,用于根据最新版本的Lua文件与上一版本的Lua文件之间的差别,生成差异文件;

第二生成模块402,用于生成最新版本的Lua文件的配置文件,配置文件至少包括:最新版本Lua文件的版本号,最新版本Lua文件的所有文件列表,文件列表中每个文件对应的特征码;

第二获取模块403,用于获取历史发布的每个版本的Lua文件;

第三生成模块404,用于根据差异文件、配置文件和每个版本的Lua文件,生成每个版本的Lua文件更新到最新版本的Lua文件所需要的更新包。

在另外一个实施例中,上述更新Lua文件的装置,还包括:

发送模块,用于在判断客户端当前所安装的Lua文件需要更新后,向客户端发送更新提醒信息,更新提醒信息中包括:所需要的更新包的下载地址,更新包的大小,更新包的验证码以及最新版本的Lua文件的版本号。

在一个实施例中,第一获取模块包括:

下载单元,用于根据更新提醒信息,采用HTTP协议下载更新包;

对比单元,用于在更新包下载完成后,对比下载的更新包的大小、下载的更新包的验证码是否与更新提醒信息中的更新包的大小、更新包的验证码相同;

确定单元,用于在对比单元对比相同后,确定更新包下载完成,完成更新包的获取。

在另外一个实施例中,上述更新Lua文件的装置中的更新模块,包括:

解压单元,用于解压下载的更新包;

覆盖单元,用于将更新包覆盖到客户端的升级目录;

生成单元,用于根据更新包和客户端当前所安装Lua文件生成最新版本的Lua文件。

上述实施例提供的方法和装置属于同一发明构思,装置中各模块、单元的功能及实现过程可参照方法实施例中的描述,这里不再赘述。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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