本发明属于程序版本发布技术领域,具体涉及一种应用程序版本的自动化发布及更新的方法和系统。
背景技术:
随着计算机技术的迅速发展,大量应用软件被不断开发出来,并且,对于每类应用软件,基本都存在软件更新的问题,其中,软件更新升级,是指软件开发者在编写软件的时候,由于初始时,设计人员考虑不全面或程序功能不完善,因此,在软件发行后,需要对程序进行修改或加入新功能,再将更新资源以补丁的形式发布,从而实现软件的升级。
现有技术中,应用软件由数量众多的资源文件构成,并且,资源文件之间常常存在相同资源,由此导致应用软件的体积较大;另外,当对软件进行升级时,需要将不同资源文件中的相同资源进行同步升级,导致应用软件升级过程繁杂,且耗费了大量时间,降低了应用软件升级效率。
技术实现要素:
针对现有技术存在的缺陷,本发明提供一种应用程序版本的自动化发布及更新的方法和系统,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种应用程序版本的自动化发布及更新方法,包括以下步骤:
S1,开发得到应用程序版本文件;对所述应用程序版本文件中的各个文件进行分类,划分为依赖文件和非依赖文件;
S2,从所述应用程序版本文件中提取出所有的所述依赖文件;
S3,获得各个所述依赖文件之间的层次关系和依赖关系,生成树形结构;其中,所述树形结构中的任意一个非叶节点记为非叶节点A,设非叶节点A共有m个儿子节点,将m个儿子节点依次记为B1、B2…Bm;则:非叶节点A和m个儿子节点之间的依赖关系具体指:非叶节点A的资源依赖m个儿子节点的资源,即:非叶节点A包含m个儿子节点的所有资源;
S4,对于所述树形结构,按自下而上方向,依次将父节点文件中包含的所有儿子节点文件的资源删除,同时记录父节点文件与其所有的儿子节点文件之间的依赖关系,打包压缩生成新的父节点文件;对于叶节点文件,其包含的资源保持不变,由此生成新的树形结构;
S5,对于所述新的树形结构中的每个节点文件,计算每个节点文件的MD值;另外,对于S1中的所述非依赖文件,分别计算每个所述非依赖文件的MD值;
S6,如果所述应用程序版本文件为首次发布版本文件,则将所述新的树形结构中的所有节点文件、以及所述非依赖文件进行打包压缩,生成具有版本号的安装资源包,并将所述安装资源包发布到各个平台;
如果所述应用程序版本文件为非首次发布版本文件,则将S5得到的每个节点文件的MD值以及每个所述非依赖文件的MD值分别与上一个版本对应文件的MD值进行比较,得到与上一个版本MD值不相同的文件,该文件即为本次被更新的文件;然后,从所述新应用程序版本文件中提取到本次被更新的所有文件;
S7,将提取到的本次被更新的所有文件进行打包压缩,生成具有新版本号的更新资源包;
S8,将所述更新资源包发布到各个平台。
优选的,S2之前,还包括:
对于开发得到的所述应用程序版本文件,首先对所述应用程序版本文件进行预处理操作,过滤不需要使用的临时文件,再执行后续步骤S2。
优选的,所述依赖文件包括具有依赖属性的二进制文件和具有依赖属性的文本文件;所述非依赖文件包括具有非依赖属性的二进制文件、具有非依赖属性的文本文件和代码文件。
优选的,所述具有依赖属性的二进制文件为预设材质文件;所述具有非依赖属性的二进制文件为声音和流文件。
优选的,S3中,利用Unity3D的API方法获得各个所述依赖文件之间的层次关系和依赖关系。
优选的,S4具体为:采用压入栈依赖打包压缩的方式,将所述父节点文件打包压缩生成新的父节点文件。
优选的,S6中,将所述安装资源包发布到各个平台,具体为:
向所述安装资源包接入各个平台的软件开发工具包,利用Unity3D的API进行编译,生成对应的应用程序,并更新原应用程序的版本号;
S8中,将所述更新资源包发布到各个平台,具体为:
向所述更新资源包接入各个平台的软件开发工具包,并用所述更新资源包更新原应用程序的对应文件,利用Unity3D的API进行编译,生成对应的新应用程序,并更新原应用程序的版本号。
本发明还提供一种应用程序版本的自动化发布及更新系统,包括可视化的自动化版本编辑器和自动化版本处理器;
所述自动化版本编辑器包括版本发布模块和变量设置模块;
所述版本发布模块是在Unity中实现可视化的界面编辑功能,包括版本号配置单元、发布平台选择单元、运营商选择单元、资源打包方式选择单元、编译方式配置单元和发布安装包配置单元;
所述变量设置模块用于配置版本发布过程的相关变量,包括:网络库路径选择单元、版本库路径选择单元、运营商包路径选择单元和工程文件名称设置单元;
所述自动化版本处理器用于接收所述版本发布模块和所述变量设置模块所配置的版本发布参数,并根据所述版本发布参数,将应用程序版本文件发布或更新到对应的平台,实现应用程序版本的自动化发布或更新过程。
优选的,所述版本号配置单元用于配置旧版本号以及需要升级到的新版本号;
所述发布平台选择单元用于选择应用程序需要发布到的平台,包括:安卓平台、IOS平台、windows平台、Linux平台或Unix平台;
所述运营商选择单元用于配置应用程序需要发布到的运营商;
所述资源打包方式选择单元用于配置资源打包方式,包括:打包所有资源、只打包配置文件、只打包作色器文件;
所述编译方式配置单元用于配置文件编译方式,包括是否编译动态库的选择项;
所述发布安装包配置单元用于配置是否发布安装包,包括安装包发布的确定按钮;当该确定按钮被点击后,即向所述自动化版本处理器发送版本发布的指令。
本发明提供的应用程序版本的自动化发布及更新的方法和系统具有以下优点:
(1)将应用软件中各资源文件之间的相同资源合并,并通过记录各资源文件之间的依赖关系,保证实现原应用软件的相关功能,减少了应用软件的体积;
(2)当进行应用软件升级时,当具有依赖关系的资源文件进行升级时,只需要升级一份资源文件即可,从而降低了应用软件升级繁琐度,提高了应用软件升级效率。
(3)提供了可视化的自动化版本编辑器,方便操作选择各种应用程序发布或更新的配置,自动化版本编辑器根据该配置而进行相应的应用程序发布过程,具有应用程序发布或更新参数编辑方便易用和易于扩展等优点。
附图说明
图1为本发明提供的用程序版本的自动化发布及更新方法的流程示意图;
图2为5个依赖文件之间资源引用关系的示意图;
图3为根据图2中的5个依赖文件所建立的树形结构示意图。
具体实施方式
以下结合附图对本发明进行详细说明:
本发明提供一种应用程序版本的自动化发布及更新方法,包括以下步骤:
S1,开发得到应用程序版本文件;对所述应用程序版本文件中的各个文件进行分类,划分为依赖文件和非依赖文件;
本发明中,依赖文件指具有依赖属性的文件,具体指:该文件包含有与其他文件相同的资源,或者,该文件的文件资源被其他文件所包含;对于非依赖文件,指完全独立的文件,与应用程序版本文件中其他所有文件的资源均不存在重合的文件。
对应用程序版本文件进行上述分类划分,对于非依赖文件,由于其与其他文件不存在依赖关系,因此,不需要获得其依赖关系,直接执行到后续的S5, 从而可减少计算机对各文件处理次数。
具体的,依赖文件包括具有依赖属性的二进制文件和具有依赖属性的文本文件;所述非依赖文件包括具有非依赖属性的二进制文件、具有非依赖属性的文本文件和代码文件,代码文件为可编译为动态库的文件。例如,具有依赖属性的二进制文件为预设材质文件;所述具有非依赖属性的二进制文件为声音和流文件。
当然,对于开发得到的所述应用程序版本文件,首先对所述应用程序版本文件进行预处理操作,过滤不需要使用的临时文件,再执行后续步骤S2。
S2,从所述应用程序版本文件中提取出所有的所述依赖文件;
S3,获得各个所述依赖文件之间的层次关系和依赖关系,生成树形结构;其中,所述树形结构中的任意一个非叶节点记为非叶节点A,设非叶节点A共有m个儿子节点,将m个儿子节点依次记为B1、B2…Bm;则:非叶节点A和m个儿子节点之间的依赖关系具体指:非叶节点A的资源依赖m个儿子节点的资源,即:非叶节点A包含m个儿子节点的所有资源;
实际应用中,利用Unity3D的API方法获得各个所述依赖文件之间的层次关系和依赖关系。
建立树形结构的主要目的为:提取各个依赖文件之间的公共资源,避免资源重复。
以共存在5个依赖文件为例,如图2所示,为5个依赖文件之间资源引用关系的示意图;从图2可以看出,文件C中包含有文件D和文件E的所有资源,即:文件C依赖文件D和文件E;文件D中包含有文件F和文件G的所有资源,即:文件D依赖文件F和文件G;
如图3所示,为根据图2中的5个依赖文件所建立的树形结构示意图。
S4,对于所述树形结构,按自下而上方向,依次将父节点文件中包含的所有儿子节点文件的资源删除,同时记录父节点文件与其所有的儿子节点文件之间的依赖关系,打包压缩生成新的父节点文件;对于叶节点文件,其包含的资源保持不变,由此生成新的树形结构;
例如,对于图3所示的树形结构,对于叶节点文件,即文件F和文件G,其包 含的资源保持不变;对于D文件,将D文件中所包含的文件F资源和文件G资源删除,同时记录以下信息:对文件F和文件G具有依赖关系,由于生成D’文件;也就是说,D’文件不再包含有文件F资源和文件G资源,但记录有与文件F和文件G具有依赖关系的记录;同样的,对于C文件,将C文件中所包含的文件D资源和文件E资源删除,同时记录以下信息:对文件D和文件E具有依赖关系,由于生成C’文件。
实际应用中,可以采用压入栈依赖打包压缩的方式,将所述父节点文件打包压缩生成新的父节点文件。
采用上述方法,主要目的为合并相同资源,减少应用程序占用空间。
S5,对于所述新的树形结构中的每个节点文件,计算每个节点文件的MD值;另外,对于S1中的所述非依赖文件,分别计算每个所述非依赖文件的MD值;
S6,如果所述应用程序版本文件为首次发布版本文件,则将所述新的树形结构中的所有节点文件、以及所述非依赖文件进行打包压缩,生成具有版本号的安装资源包,并将所述安装资源包发布到各个平台;具体发布方法为:向所述安装资源包接入各个平台的软件开发工具包,利用Unity3D的API进行编译,生成对应的应用程序,并更新原应用程序的版本号;
如果所述应用程序版本文件为非首次发布版本文件,则将S5得到的每个节点文件的MD值以及每个所述非依赖文件的MD值分别与上一个版本对应文件的MD值进行比较,得到与上一个版本MD值不相同的文件,该文件即为本次被更新的文件;然后,从所述新应用程序版本文件中提取到本次被更新的所有文件;
S7,将提取到的本次被更新的所有文件进行打包压缩,生成具有新版本号的更新资源包;
S8,将所述更新资源包发布到各个平台。具体发布方法为:向所述更新资源包接入各个平台的软件开发工具包,并用所述更新资源包更新原应用程序的对应文件,利用Unity3D的API进行编译,生成对应的新应用程序,并更新原应用程序的版本号。
此外,在生成应用程序后,也可以利用反编工具,对应用程序进行进一步的压缩,再次生成程序文件。从而可减少部分程序的大小。
本发明还提供一种应用程序版本的自动化发布及更新系统,包括可视化的自动化版本编辑器和自动化版本处理器;
(一)自动化版本编辑器
所述自动化版本编辑器包括版本发布模块和变量设置模块;
(1)版本发布模块
所述版本发布模块是在Unity中实现可视化的界面编辑功能,包括版本号配置单元、发布平台选择单元、运营商选择单元、资源打包方式选择单元、编译方式配置单元和发布安装包配置单元;
其中,所述版本号配置单元用于配置旧版本号以及需要升级到的新版本号;
所述发布平台选择单元用于选择应用程序需要发布到的平台,包括:安卓平台、IOS平台、windows平台、Linux平台或Unix平台;
所述运营商选择单元用于配置应用程序需要发布到的运营商;
所述资源打包方式选择单元用于配置资源打包方式,包括:打包所有资源、只打包配置文件、只打包作色器文件;
所述编译方式配置单元用于配置文件编译方式,包括是否编译动态库的选择项;
所述发布安装包配置单元用于配置是否发布安装包,包括安装包发布的确定按钮;当该确定按钮被点击后,即向所述自动化版本处理器发送版本发布的指令。
(2)变量设置模块
所述变量设置模块用于配置版本发布过程的相关变量,包括:网络库路径选择单元、版本库路径选择单元、运营商包路径选择单元和工程文件名称设置单元;
(二)自动化版本处理器
所述自动化版本处理器用于接收所述版本发布模块和所述变量设置模块所配置的版本发布参数,并根据所述版本发布参数,将应用程序版本文件发布或更新到对应的平台,实现应用程序版本的自动化发布或更新过程。自动化版本处理器进行应用程序版本的自动化发布或更新过程,与本申请上述介绍的应用 程序版本的自动化发布及更新方法的过程和原理完全相同,在此不再赘述。
由此可见,通过本发明提供的应用程序版本的自动化发布及更新系统,只需程序开发者进行几步简单的初始参数配置,即可自动完成应用程序版本发布或更新过程,具有简单易用、操作简单、发布准确率高等优点。
本发明提供的应用程序版本的自动化发布及更新的方法和系统具有以下优点:
(1)将应用软件中各资源文件之间的相同资源合并,并通过记录各资源文件之间的依赖关系,保证实现原应用软件的相关功能,减少了应用软件的体积;
(2)当进行应用软件升级时,当具有依赖关系的资源文件进行升级时,只需要升级一份资源文件即可,从而降低了应用软件升级繁琐度,提高了应用软件升级效率。
(3)提供了可视化的自动化版本编辑器,方便操作选择各种应用程序发布或更新的配置,自动化版本编辑器根据该配置而进行相应的应用程序发布过程,具有应用程序发布或更新参数编辑方便易用和易于扩展等优点。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。