
AGP 9.0 修改 APK 打包名称
AGP 9.0 把旧版本的 `applicationVariants` API 标记为弃用,本文给出新版本的写法。
161 次阅读
AGP 9.0 把旧版本的 applicationVariants API 标记为弃用,因此需要迁移到新的 Variant API。
旧方案(AGP 9.0 已弃用)
以前可以通过 applicationVariants 自定义输出的 APK 名称:
android {
applicationVariants.all {
outputs.all {
val currentDate = SimpleDateFormat("yyyy.MM.dd").format(Date())
val outputFileName =
"${applicationId}_${buildType.name}_v${versionName}_${currentDate}.apk"
(this as com.android.build.gradle.internal.api.BaseVariantOutputImpl).outputFileName =
outputFileName
}
}
}
新方案(androidComponents + onVariants)
官方建议使用新的 androidComponents API:
androidComponents {
onVariants { variant ->
variant.outputs.forEach { output ->
val currentDate = SimpleDateFormat("yyyy.MM.dd").format(Date())
val newName =
"${variant.applicationId.get()}-${variant.name}-${output.versionName.get()}-${currentDate}.apk"
output.outputFileName.set(newName)
}
}
}
注意事项
- 上面示例使用的是 Kotlin DSL(
build.gradle.kts)。 applicationVariants在 AGP 9.0 中被弃用,建议尽快迁移以避免未来升级报错。- 使用
SimpleDateFormat时需要在脚本顶部引入java.text.SimpleDateFormat和java.util.Date。