android 打包版本号自增
2023-09-26 本文已影响0人
风___________
- 在根目录创建文件
version.properties
# 文件中添加下面,用于记录版本号
VERSION_CODE=1
- 添加下面代码
build.gradle(:app)
// 下面是版本号自增逻辑(目的是生成这俩资源`verCode`和`verName`)
def verCode = 1
def verName = "1.0.0"
def versionPropsFile = file('../version.properties')
if (versionPropsFile.canRead()) {
Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
//从version.properties根据关键字"VERSION_CODE"取Integer
verCode = versionProps['VERSION_CODE'].toInteger()
// 判断build模式,如果是特定模式 则自增版本号,并且写回version.properties文件中
def runTasks = gradle.startParameter.taskNames
println runTasks
// 根据实际换成自己的`ReleaseTest`
if (runTasks.toString().contains("ReleaseTest")) {
println "run2"
//版本号自增
verCode++
verName = "1.0.$verCode"
// 写入版本控制文件
versionProps['VERSION_CODE'] = verCode.toString()
versionProps.store(versionPropsFile.newWriter(), null)
}
println "run3"
} else {
throw new GradleException("Could not find version.properties!")
}
/** 获取当前时间 */
import java.text.SimpleDateFormat
def getCurrentTime() {
def dateFormat = new SimpleDateFormat("HH_mm")
dateFormat.timeZone = TimeZone.getTimeZone("GMT+8")
return dateFormat.format(new Date())
}
// 下面是 项目配置
android {
compileSdk 33
// 这里是关键,使用上面生成的`verCode`和`verName`
defaultConfig {
versionCode verCode
versionName verName
....
}
buildTypes {
releaseTest {...}
...
// 重命名生成apk --- 这里是我重新设置了生成的apk的文件名!
applicationVariants.all { variant ->
variant.outputs.each { output ->
def oldFile = output.outputFile
if (oldFile != null && oldFile.name.endsWith('.apk')) {
//重命名apk文件名: 项目名_v版本名_构建类型_打包时间.apk
def fileName = "xxx_v${defaultConfig.versionName}_${variant.buildType.name}_${getCurrentTime()}.apk"
// 执行重命名操作
output.outputFileName = fileName
println "Renamed APK to: $fileName"
}
}
}
}
}