Skip to content

自动版本管理脚本

在 CI/CD 或日常发布中,手动修改 versionCodeversionName 很容易遗漏。

1. 基于 Git 提交次数生成 VersionCode

这能保证每个提交的版本号都是唯一的。

kotlin
fun getGitCommitCount(): Int {
    return try {
        val stdout = ByteArrayOutputStream()
        exec {
            commandLine("git", "rev-list", "--count", "HEAD")
            standardOutput = stdout
        }
        stdout.toString().trim().toInt()
    } catch (e: Exception) {
        1 // 默认值
    }
}

android {
    defaultConfig {
        versionCode = getGitCommitCount()
    }
}

2. 自动格式化产物名称

生成类似 AppName_v1.0.2_debug_20240225.apk 的文件名。

kotlin
android.applicationVariants.all {
    outputs.all {
        val output = this as com.android.build.gradle.internal.api.BaseVariantOutputImpl
        val date = java.text.SimpleDateFormat("yyyyMMdd").format(java.util.Date())
        val name = "MyApp_v\${versionName}_\${name}_\${date}.apk"
        output.outputFileName = name
    }
}