本发明涉及计算机技术领域,尤其涉及一种versioncode的生成方法、装置、电子设备及存储介质。
背景技术
versioncode,是应用程序的内部版本号,代表着应用程序代码的相对版本,也就是版本更新过多少次。此外,该versioncode可以设置为任何整数,不过,需要保证该应用程序的每个后续版本都使用一个较大的值,以使得后续版本的versioncode大于前一版本的versioncode。通常,在发布应用程序的第一个版本时,需要将versioncode设为1,之后为每个发布版本单调增大该versioncode,无论发布的是主版本还是次版本,这表示versioncode不一定与用户可见的应用发布版本非常相似。而且,应用和发布服务不应向用户显示此versioncode。
但是,在现有技术中,若对应用程序进行更新,则需要必须手动指定特定数字作为应用程序的versioncode,而这就会导致更新操作的工作量繁杂。
技术实现要素:
本发明的主要目的在于提出一一种versioncode的生成方法、装置、电子设备及存储介质,其克服了现有技术中需手动指定versioncode以及因此造成的更新操作繁杂问题。
根据本发明的第一个方面,提供了一种versioncode的生成方法,所述方法包括:设定基准年baseyear;基于所述baseyear及当前时间,通过第一预设算法生成当前版本的应用程序的versioncode,其中,所述当前时间包括:所述当前版本的应用程序的编译时间。
可选的,在生成所述versioncode之后,所述方法还包括:判断生成的所述versioncode是否小于等于预设阈值;若是,则判定生成的所述versioncode为所述当前版本的应用程序所需的versioncode。
可选的,所述方法还包括:在已知所述versioncode的情况下,基于所述versioncode及所述baseyear,通过第二预设算法确定所述当前时间。
可选的,所述基于baseyear及当前时间,通过第一预设算法生成当前版本的应用程序的versioncode,包括:对所述当前时间进行预处理,得到预设数据,所述预设数据包括:所述当前时间所处的年份year、在当前年份中所处的天数dayofyear、在当天中的小时数hourofday、在当前小时中所处的分钟数minute;基于所述baseyear及所述预设数据,通过第一预设算法生成当前版本的应用程序的versioncode;
其中,第一预设算法包括:versioncode=(year-baseyear)*10000000+dayofyear*10000+hourofday*100+minute;
所述第二算法包括:
minute=versioncode%100;
hourofday=(versioncode-minute)%10000/100;
dayofyear=(versioncode-minute-hourofday*100)%10000000/10000;
year=baseyear+(versioncode-minute-hourofday*100-dayofyear*10000)/10000000。
根据本发明的第二个方面,提供了一种versioncode的生成装置,所述装置包括:设定模块,用于设定基准年baseyear;生成模块,用于基于所述baseyear及当前时间,通过第一预设算法生成当前版本的应用程序的versioncode,其中,所述当前时间包括:所述当前版本的应用程序的编译时间。
可选的,所述装置还包括:判断模块,用于在生成所述versioncode之后,判断生成的所述versioncode是否小于等于预设阈值;判定模块,用于在生成的所述versioncode小于等于预设阈值的情况下,判定生成的所述versioncode为所述当前版本的应用程序所需的versioncode;
可选的,所述装置还包括:当前时间确定模块,用于在已知所述versioncode的情况下,基于所述versioncode及所述baseyear,通过第二预设算法确定所述当前时间。
可选的,所述生成模块具体用于:对所述当前时间进行预处理,得到预设数据,所述预设数据包括:所述当前时间所处的年份year、在当前年份中所处的天数dayofyear、在当天中的小时数hourofday、在当前小时中所处的分钟数minute;基于所述baseyear及所述预设数据,通过第一预设算法生成当前版本的应用程序的versioncode;
其中,第一预设算法包括:
versioncode=(year-baseyear)*10000000+dayofyear*10000+hourofday*100+minute;
所述第二算法包括:
minute=versioncode%100;
hourofday=(versioncode-minute)%10000/100;
dayofyear=(versioncode-minute-hourofday*100)%10000000/10000;
year=baseyear+(versioncode-minute-hourofday*100-dayofyear*10000)/10000000。
根据本发明的第三个方面,提供了一种计算机设备,包括处理器和存储器;
所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种versioncode的生成方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种versioncode的生成方法。
本发明有益效果如下:通过baseyear以及当前时间,即可自动生成当前版本的应用程序的versioncode,从而避免了在开发及更新应用程序时手动指定versioncode,简化了应用程序开发工作及更新工作的工作量。
附图说明
图1为本发明第一实施例一种versioncode的生成方法的流程框图;
图2为本发明第二实施例一种versioncode的生成方法的流程框图;
图3为本发明第三实施例一种versioncode的生成方法的流程框图;
图4为本发明第四实施例一种versioncode的生成方法的流程框图;
图5为本发明第五实施例中versioncode的格式示意图;
图6为本发明第五实施例中versioncode的结构示意图;
图7为本发明第六实施例中一种versioncode的生成装置的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
值得注意的是,versioncode仅用于确定同一个应用程序的一个版本是否比另一个版本更新,数字越大表示版本越新。而且,该versioncode不是显示给用户的版本号;而且,其他应用可以通过编程方式对versioncode进行评估,例如:检查升级或降级关系。而且,该versioncode可以设置为任何整数,不过,需要保证该应用程序的每个后续版本都使用一个较大的值,以使得后续版本的versioncode大于前一版本的versioncode,但是,通常会针对后续版本增大该versioncode。应用程序和发布服务不应向用户显示此版本值。
为了便于理解本发明实施例,下面通过几个具体实施例对本发明的实施过程进行详细的阐述。
本发明第一实施例提供了一种versioncode的生成方法,所述方法包括:设定基准年baseyear;基于所述baseyear及当前时间,通过第一预设算法生成当前版本的应用程序的versioncode,其中,所述当前时间包括:所述当前版本的应用程序的编译时间。
就此,应用程序的开发系统通过baseyear以及当前时间,即可自动生成当前版本的应用程序的versioncode,从而避免了在开发及更新应用程序时手动指定versioncode,简化了应用程序开发工作及更新工作的工作量。
具体的,图1为本发明第一实施例一种versioncode的生成方法的流程框图。根据图1所示,本发明第一实施例提供了一种versioncode的生成方法,所述方法包括:
s11:设定基准年baseyear;
应用程序的开发系统设置baseyear,如以1970年作为baseyear,则baseyear=1970。
s12:基于所述baseyear及当前时间,通过第一预设算法生成当前版本的应用程序的versioncode,其中,所述当前时间包括:所述当前版本的应用程序的编译时间。
其中,当前时间包括:当前版本的应用程序的编译时间。所以,在本另一实施例中,是在该应用程序被成功开发出第一个版本时或该应用程序被成功开发出新版本时,设定baseyear,而且,确定该应用程序被成功开发出第一个版本时的时间或该应用程序被成功开发出新版本时的时间。
在本实施例中,并不对该当前时间的具体格式进行限定,只需其满足本发明的要求即可,如:该当前时间为北京时间2018-6-1114:51:29。
在确定baseyear及当前时间后,基于该baseyear及当前时间,应用程序的开发系统通过第一预设算法生成当前版本的应用程序的versioncode。
在本实施例中,并不对该第一预设算法进行限定,只需其满足本实施例的要求即可。
就此,应用程序的开发系统通过baseyear以及当前时间,即可自动生成当前版本的应用程序的versioncode,从而避免了在开发及更新应用程序时手动指定versioncode,简化了应用程序开发工作及更新工作的工作量。
图2为本发明第二实施例一种versioncode的生成方法的流程框图。根据图2所示,本发明第二实施例提供了一种versioncode的生成方法,所述方法包括:
s21:设定基准年baseyear;
应用程序的开发系统设置baseyear,如以1970年作为baseyear,则baseyear=1970。
s22:基于所述baseyear及当前时间,通过第一预设算法生成当前版本的应用程序的versioncode,其中,所述当前时间包括:所述当前版本的应用程序的编译时间;
其中,当前时间包括:当前版本的应用程序的编译时间。所以,在另一实施例中,是在该应用程序被成功开发出第一个版本时或该应用程序被成功开发出新版本时,设定baseyear,而且,确定该应用程序被成功开发出第一个版本时的时间或该应用程序被成功开发出新版本时的时间。
在本实施例中,并不对该当前时间的具体格式进行限定,只需其满足本发明的要求即可,如:该当前时间为北京时间2018-6-1114:51:29。
在确定baseyear及当前时间后,基于该baseyear及当前时间,应用程序的开发系统通过第一预设算法生成当前版本的应用程序的versioncode。
在本实施例中,并不对该第一预设算法进行限定,只需其满足本实施例的要求即可。
s23:判断生成的所述versioncode是否小于等于预设阈值;若是,则步骤s24,否则,执行步骤s25;
s24:判定生成的所述versioncode为所述当前版本的应用程序所需的versioncode;
由于每个应用程序均要求其versioncode最大不能超过对应的预设阈值。故在本实施例中,还需通过对应的预设阈值对生成的versioncode进行校验,若校验通过,则确定该根据当前时间生成的versioncode为所需的versioncode,否则,随着当前时间的流逝,则需要根据新的当前时间生成versioncode。
以谷歌在线应用程序商店googleplay为例,googleplay要求其versioncode最大不能超过2100000000,即:该预设阈值为2100000000。若该生成的versioncode小于等于2100000000,则确定该生成的versioncode为googleplay所需的versioncode。
s25:报错。
就此,应用程序的开发系统通过baseyear以及当前时间,即可自动生成当前版本的应用程序的versioncode,从而避免了在开发及更新应用程序时手动指定versioncode,简化了应用程序开发工作及更新工作的工作量。
图3为本发明第三实施例一种versioncode的生成方法的流程框图。根据图3所示,本发明第三实施例提供了一种versioncode的生成方法,所述方法包括:
s31:设定基准年baseyear;
应用程序的开发系统设置baseyear,如以1970年作为baseyear,则baseyear=1970。
s32:基于所述baseyear及当前时间,通过第一预设算法生成当前版本的应用程序的versioncode,其中,所述当前时间包括:所述当前版本的应用程序的编译时间;
其中,当前时间包括:当前版本的应用程序的编译时间。所以,在另一实施例中,是在该应用程序被成功开发出第一个版本时或该应用程序被成功开发出新版本时,设定baseyear,而且,确定该应用程序被成功开发出第一个版本时的时间或该应用程序被成功开发出新版本时的时间。
在本实施例中,并不对该当前时间的具体格式进行限定,只需其满足本发明的要求即可,如:该当前时间为北京时间2018-6-1114:51:29。
在确定baseyear及当前时间后,基于该baseyear及当前时间,应用程序的开发系统通过第一预设算法生成当前版本的应用程序的versioncode。
在本实施例中,并不对该第一预设算法进行限定,只需其满足本实施例的要求即可。
s33:判断生成的所述versioncode是否小于等于预设阈值;若是,则执行步骤s34;否则,执行步骤s36;
s34:判定生成的所述versioncode为所述当前版本的应用程序所需的versioncode;
由于每个应用程序均要求其versioncode最大不能超过对应的预设阈值。故在本实施例中,还需通过对应的预设阈值对生成的versioncode进行校验,若校验通过,则确定该根据当前时间生成的versioncode为所需的versioncode,否则,随着当前时间的流逝,则需要根据新的当前时间生成versioncode。
以谷歌在线应用程序商店googleplay为例,googleplay要求其versioncode最大不能超过2100000000,即:该预设阈值为2100000000。若该生成的versioncode小于等于2100000000,则确定该生成的versioncode为googleplay所需的versioncode。
在已知应用程序所需的上述versioncode之后,还可通过以下步骤s35获知上述的当前时间:
s35:基于所述versioncode及所述baseyear,通过第二预设算法确定所述当前时间;
基于该versioncode及baseyear,检测系统通过第二预设算法确定所述当前时间。
其中,该当前时间包括:当前版本的应用程序的编译时间。即:基于该versioncode,可以获知该当前版本的应用程序的编译时间。所以,在本另一实施例中,通过该versioncode,可以获知该当前版本的应用程序被成功开发出时的时间,
s36:报错。
就此,应用程序的开发系统通过baseyear以及当前时间,即可自动生成当前版本的应用程序的versioncode,从而避免了在开发及更新应用程序时手动指定versioncode,简化了应用程序开发工作及更新工作的工作量。而且,基于该versioncode,还可获知该当前版本的应用程序的编译时间。
图4为本发明第四实施例一种versioncode的生成方法的流程框图。根据图4所示,本发明第四实施例提供了一种versioncode的生成方法,所述方法包括:
s41:设定基准年baseyear;
应用程序的开发系统设置baseyear,如以1970年作为baseyear,则baseyear=1970。
s42:对所述当前时间进行预处理,得到预设数据,所述预设数据包括:所述当前时间所处的年份year、在当前年份中所处的天数dayofyear、在当天中的小时数hourofday、在当前小时中所处的分钟数minute;
具体的,若当前时间为北京时间2018-6-1114:51:29,则year=2018,hourofday=14,minute=51;针对该dayofyear,应用程序的开发系统可以通过javaapi的calendar.get(calendar.day_of_year)进行获取,得到dayofyear=162。
其中,所述当前时间包括:所述当前版本的应用程序的编译时间。
而且,当前时间包括:当前版本的应用程序的编译时间。所以,在另一实施例中,是在该应用程序被成功开发出第一个版本时或该应用程序被成功开发出新版本时,设定baseyear,而且,确定该应用程序被成功开发出第一个版本时的时间或该应用程序被成功开发出新版本时的时间。
s43:基于所述baseyear及所述预设数据,通过第一预设算法生成当前版本的应用程序的versioncode;
在确定baseyear及预设数据后,基于该baseyear及预设数据,应用程序的开发系统通过第一预设算法生成当前版本的应用程序的versioncode。
可选的,基于以下公式生成versioncode:
versioncode=(year-baseyear)*10000000+dayofyear*10000+hourofday*100+minute。
s44:判断生成的所述versioncode是否小于等于预设阈值;若是,则执行步骤s45,否则,执行步骤s48;
s45:判定生成的所述versioncode为所述当前版本的应用程序所需的versioncode;
由于每个应用程序均要求其versioncode最大不能超过对应的预设阈值。故在本实施例中,还需通过对应的预设阈值对生成的versioncode进行校验,若校验通过,则确定该根据当前时间生成的versioncode为所需的versioncode,否则,随着当前时间的流逝,则需要根据新的当前时间生成versioncode。
以谷歌在线应用程序商店googleplay为例,googleplay要求其versioncode最大不能超过2100000000,即:该预设阈值为2100000000。若该生成的versioncode小于等于2100000000,则确定该生成的versioncode为googleplay所需的versioncode。
在已知应用程序所需的上述versioncode之后,还可通过以下步骤s46-47获知上述的当前时间:
s46:基于所述versioncode及baseyear,通过第二预设算法确定所述预设数据;
基于该versioncode及baseyear,检测系统通过第二预设算法确定预设数据。可选的,在已知应用程序所需的上述versioncode之后,基于以下公式生成获知上述的预设数据:
minute=versioncode%100;
hourofday=(versioncode-minute)%10000/100;
dayofyear=(versioncode-minute-hourofday*100)%10000000/10000;
year=baseyear+(versioncode-minute-hourofday*100-dayofyear*10000)/10000000。
s47:基于该预设数据,确定当前时间;
在本实施例中,并不对该基于该预设数据以确定当前时间的算法或方式进行限定,只需其满足本实施例的要求即可。
其中,该当前时间包括:当前版本的应用程序的编译时间。即:基于该versioncode,可以获知该当前版本的应用程序的编译时间。所以,在本另一实施例中,通过该versioncode,可以获知该当前版本的应用程序被成功开发出时的时间,
s48:报错。
就此,应用程序的开发系统通过baseyear以及当前时间,即可自动生成当前版本的应用程序的versioncode,从而避免了在开发及更新应用程序时手动指定versioncode,简化了应用程序开发工作及更新工作的工作量。基于该versioncode,还可获知该当前版本的应用程序的编译时间。
为了更好说明本实施例所述方法的实施过程,下面结合googleplay作为一个具体应用示例,对本实施例所述方法进行说明。
本发明第五实施例提供了一种versioncode的生成方法,该方法包括:
步骤一:设置基准年baseyear为1970;
步骤二:获取当前时间为北京时间2018-6-1114:51:29。其中,该北京时间为googleplay被成功开发出新版本时的时间。
步骤三:对北京时间2018-6-1114:51:29进行预处理,得到预设数据,该预设数据包括:该当前时间所处的年份year、在当前年份中所处的天数dayofyear、在当天中的小时数hourofday、在当前小时中所处的分钟数minute;
具体的,year=2018,hourofday=14,minute=51;针对该dayofyear,应用程序的开发系统可以通过javaapi的calendar.get(calendar.day_of_year)进行获取,得到dayofyear=162。
步骤四:依据以下公式生成该versioncode:
versioncode=(year-baseyear)*10000000+dayofyear*10000+hourofday*100+minute=(2018-1970)*10000000+162*10000+14*100+51=versioncode=481621451。
图5为本发明第五实施例中versioncode的格式示意图。根据图5所示,从低位开始,其1-2位对应于表示当前时间的分钟数minute;3-4位对应于当前时间的小时数hourofday(24小时制);5-7位对应于当前时间在当年中的第几天(在当前年份中所处的天数dayofyear);8-10位表示当前时间所处的年份year与baseyear的差值。
而且,图6为本发明第五实施例中versioncode的结构示意图。其中,该versioncode=481621451如图6所示。
步骤五:判断该versioncode是否小于等于2100000000,若是,则确定该生成的versioncode为所需的versioncode;否则,执行步骤六。
步骤六:报错。
此外,在已知上述versioncode之后,还可通过以下步骤七至八获取上述的当前时间。
具体的,步骤七:在确定versioncode=481621451的情况下,执行以下公式即可获知预设数据:
minute=versioncode%100;
hourofday=(versioncode-minute)%10000/100;
dayofyear=(versioncode-minute-hourofday*100)%10000000/10000;
year=baseyear+(versioncode-minute-hourofday*100-dayofyear*10000)/10000000。
步骤八:在得到minute、hourofday、dayofyear、及year后,结合baseyear,即可获知上述的当前时间。
就此,应用程序的开发系统通过baseyear以及当前时间,即可自动生成当前版本的应用程序的versioncode,从而避免了在开发及更新应用程序时手动指定versioncode,简化了应用程序开发工作及更新工作的工作量。基于该versioncode,还可获知该当前版本的应用程序的编译时间。
图7为本发明第六实施例一种versioncode的生成装置方法的结构示意图。根据图7所示,根据本发明的第六个方面,提供了一种versioncode的生成装置,所述装置包括:设定模块110,用于设定基准年baseyear;生成模块120,用于基于所述baseyear及当前时间,通过第一预设算法生成当前版本的应用程序的versioncode,其中,所述当前时间包括:所述当前版本的应用程序的编译时间。
可选的,所述装置还包括:判断模块130,用于在生成所述versioncode之后,判断生成的所述versioncode是否小于等于预设阈值;判定模块140,用于在生成的所述versioncode小于等于预设阈值的情况下,判定生成的所述versioncode为所述当前版本的应用程序所需的versioncode;
可选的,所述装置还包括:当前时间确定模块150,用于在已知所述versioncode的情况下,基于所述versioncode及所述baseyear,通过第二预设算法确定所述当前时间。
可选的,所述生成模块120具体用于:对所述当前时间进行预处理,得到预设数据,所述预设数据包括:所述当前时间所处的年份year、在当前年份中所处的天数dayofyear、在当天中的小时数hourofday、在当前小时中所处的分钟数minute;基于所述baseyear及所述预设数据,通过第一预设算法生成当前版本的应用程序的versioncode;
其中,第一预设算法包括:
versioncode=(year-baseyear)*10000000+dayofyear*10000+hourofday*100+minute;
所述第二算法包括:
minute=versioncode%100;
hourofday=(versioncode-minute)%10000/100;
dayofyear=(versioncode-minute-hourofday*100)%10000000/10000;
year=baseyear+(versioncode-minute-hourofday*100-dayofyear*10000)/10000000;
而且,baseyear表征为所述baseyear。
本发明第七实施例提供了一种电子设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种versioncode的生成装置方法。
本发明第七实施例中的一种电子设备所涉及的名词及实现原理具体可以参照本发明实施例中的第一至五实施例的一种versioncode的生成装置方法,在此不再赘述。
本发明第八实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个模块,所述一个或者多个模块可被一个或者多个处理器执行,以实现上述的一种versioncode的生成装置方法。
本发明第八实施例中的一种计算机可读存储介质所涉及的名词及实现原理具体可以参照本发明实施例中的第一至五实施例的一种versioncode的生成装置方法,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。