Gradle构建APK:如何自动将buildNumber、versionNumber加入文件名
实现APK文件名自动包含versionNumber和buildNumber的方案
当然可以做到!你只需要在模块级的build.gradle(注意是app目录下的那个,不是项目根目录的build.gradle)里做一点配置,就能让Gradle自动把versionNumber(对应Gradle里的versionName)和buildNumber(对应versionCode)追加到APK文件名中。下面是具体步骤:
1. 先确认版本信息已定义
首先确保你已经在defaultConfig块里配置了versionCode和versionName,这两个就是你说的buildNumber和versionNumber:
android { defaultConfig { versionCode 123 // 这里填你的buildNumber versionName "2.4.1" // 这里填你的versionNumber // 其他默认配置(比如applicationId等)... } // 其他Android配置... }
2. 配置变体输出文件名
在同一个android块中,添加applicationVariants的处理逻辑,修改APK的输出文件名:
适配Android Gradle Plugin 7.0+(推荐写法)
如果你的AGP版本是7.0及以上,直接用outputFileName来设置更简洁:
android { // 上面的defaultConfig和其他配置... applicationVariants.all { variant -> variant.outputs.each { output -> // 自定义文件名格式,可根据需求调整 output.outputFileName = "app-${variant.name}-v${variant.versionName}-build${variant.versionCode}.apk" } } }
执行./gradlew assembleProductionRelease后,你会得到类似app-productionRelease-v2.4.1-build123.apk的文件名。
适配旧版AGP(7.0以下)
如果你的AGP版本较低,需要用outputFile来修改:
android { // 上面的defaultConfig和其他配置... applicationVariants.all { variant -> variant.outputs.each { output -> if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) { def fileName = "app-${variant.name}-v${variant.versionName}-build${variant.versionCode}.apk" output.outputFile = new File(output.outputFile.parent, fileName) } } } }
3. 自定义文件名格式
如果你想调整文件名的格式,比如简化变体名称、修改分隔符,直接修改fileName的字符串即可。举几个例子:
- 简化变体名称:
"app-production-release-v${variant.versionName}-${variant.versionCode}.apk" - 更灵活的变体拼接:
"app-${variant.flavorName}-${variant.buildType.name}-v${variant.versionName}-build${variant.versionCode}.apk" - 去掉“build”前缀:
"app-${variant.name}-v${variant.versionName}-${variant.versionCode}.apk"
4. 验证效果
配置完成后,重新执行你的构建命令:
./gradlew assembleProductionRelease
构建完成后,在app/build/outputs/apk/production/release/目录下就能看到带有版本号和构建号的APK文件了。
内容的提问来源于stack exchange,提问作者Ruslan
相关产品推荐
相关产品推荐

