import com.android.build.gradle.api.ApplicationVariant import com.android.build.gradle.api.BaseVariantOutput import com.android.build.gradle.internal.api.BaseVariantOutputImpl android { //... applicationVariants.all(ApplicationVariantAction()) } class ApplicationVariantAction : Action { override fun execute(variant: ApplicationVariant) { val fileName = createFileName(variant) variant.outputs.all(VariantOutputAction(fileName)) } private fun createFileName(variant: ApplicationVariant): String { return "YourAppName" + "_${variant.name}" + "_verCode${Android.versionCode}" + "_${getDateTimeFormat()}.apk" } private fun getDateTimeFormat(): String { val simpleDateFormat = SimpleDateFormat("yyMdHms", Locale.US) return simpleDateFormat.format(Date()) } class VariantOutputAction( private val fileName: String ) : Action { override fun execute(output: BaseVariantOutput) { if (output is BaseVariantOutputImpl) { output.outputFileName = fileName } } } }