半亩方塘
AGP 9.0 修改 APK 打包名称

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.SimpleDateFormatjava.util.Date