How to change apk name by using gradle like this format?

Update: Please check Anrimian's answer below which is much simpler and shorter.

Try this:

gradle.properties

applicationName = MyApp

build.gradle

android {
  ...
  defaultConfig {
     versionCode 111
     ...
  }
  buildTypes {
     release {
         ...
         applicationVariants.all { variant ->
             renameAPK(variant, defaultConfig, 'R')
         }
     }
     debug {
         ...
         applicationVariants.all { variant ->
             renameAPK(variant, defaultConfig, 'T')
         }
     }
  }
}
def renameAPK(variant, defaultConfig, buildType) {
 variant.outputs.each { output ->
     def formattedDate = new Date().format('yyMMdd')

     def file = output.packageApplication.outputFile
     def fileName = applicationName + "_V" + defaultConfig.versionCode + "_" + formattedDate + "_" + buildType + ".apk"
     output.packageApplication.outputFile = new File(file.parent, fileName)
 }
}

Reference: https://stackoverflow.com/a/30332234/206292 https://stackoverflow.com/a/27104634/206292


This may be the shortest way:

defaultConfig {
    ...
    applicationId "com.blahblah.example"
    versionCode 1
    versionName "1.0"
    setProperty("archivesBaseName", applicationId + "-v" + versionCode + "(" + versionName + ")")
}

buildType: like so

buildTypes {
    debug {
        ...
        versionNameSuffix "-T"
    }
    release {
        ...
        versionNameSuffix "-R"
    }
}

Keep in mind, Android Studio adds versionNameSuffix by build type name by default, so you may not need this.

Upd. In new versions of Android Studio you can it write little shorter(thanks for szx comment):

defaultConfig {
    ...
    archivesBaseName = "$applicationId-v$versionCode($versionName)"
}

Tags:

Android

Gradle