在module的build.gradle文件中,记录着当前app的 对于versionCode的值,每次release之前都要手动的自增修改,岂不是很low?下面介绍我了解的两种方式。 若项目使用git做版本管理,那么可以使用项目的commit值作为 闲话少说,开始吧 首先在build.gradle中定义如下变量 在android标签下的 注意 变量定义在android标签之外 在项目的根目录创建 然后在build.gradle文件中添加 修改完 一般不做修改的apk名称就是app-release.apk,仅仅是module名称+编译类型,一点都体现不出 我们可以通过修改build.gradle文件中android标签内的输出文件,来修改编译后apk文件名称。 fileName修改成想要的就ok了,比如添加编译时间,发行渠道应用市场等等 参考前言
versionCode和versionName两个参数,用来标示app的版本信息。
versionCode自动化方式
使用git commit
versionCode,一般来说commit值不会大到漫无边际,5位到6位已经是很大了。另外versionCode是int类型的值,2^31你懂的,一个app的versionCode也不会大到如此地步。😅def cmd ='git rev-list HEAD --count'
def getVersion = cmd.execute().text.trim().toInteger();
defaultConfig中替换versionCode为上面我们定义的getVersion变量即可。还是蛮简单的哈。
git命令rev-list HEAD记录的是当前分支的总commit数,因此在打包时分支应切换为与git仓库中对应的分支使用文件
version.properties文件,在文件中记录当前的版本数VERSION_CODE=1
def versionFile = file('version.properties')
if (versionFile.canRead()) {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionFile))
def code = versionProps['VERSION_CODE'].toInteger() + 1
versionProps['VERSION_CODE']=code.toString()
versionProps.store(versionPropsFile.newWriter(), null)
}
else {
throw new GradleException("Could not read version.properties!")
}
修改编译后apk名称
versionCode之后,就想设置一下编译后文件名称,方便测试和运维使用。versionName以及versionCode信息。 android.applicationVariants.all{ variant ->
variant.outputs.each{ output->
def outputFile = output.outputFile
if(outputFile != null && outputFile.name.endsWith('.apk')){
def fileName = "APP-${defaultConfig.versionName}_${defaultConfig.versionCode}}.apk"
output.outputFile = new File(outputFile.parent,fileName)
}
}
}
def getReleaseTime(){
return new Date().format("yyyy-MM-dd",TimeZone.getTimeZone("UTC"));
}
支付宝扫码打赏
微信打赏