2015-11-18 2 views
11

Mi piacerebbe cambiare il nome del file "app-release.apk" in modo che segua quando costruisco un'applicazione utilizzando gradle.Come cambiare il nome di apk usando gradle come questo formato?

 
[format] 
(appname of package name)_V(version code)_(yyMMdd)_(R|T) 

[explain] 
(appname of package name) : example) com.example.myApp -> myApp 
(version code) : build version code 2.2.3 -> 223 
(yyMMdd) : build date 2015.11.18 -> 151118 
(R|T) : if app is release, "R" but debug is "T". 

Se io generare un file APK nel rilascio, risultato è: myApp_V223_151118_R.apk.

Come fare un nome di file come questo in gradle?

risposta

28

Aggiornamento: Si prega di controllare Anrimian's answer sotto il quale è molto più semplice e più breve.

Prova questo:

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) 
} 
} 

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

+0

Quando faccio quanto sopra, ottengo: app-development-release.apk, app-live-release.apk. Perché sta dicendo "app" e non il nome della mia app? – Subby

+1

@Subby assicurati di aver impostato applicationName in gradle.properties. – Krishnaraj

+4

applicationVariants.all non deve essere nidificato in ogni variante: di debug {} rilascio {} { applicationVariants.all variante -> renameAPK (variante, defaultconfig, variant.name) } – wolfprogrammer

30

Questa potrebbe essere la via più breve:

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

buildtype: in questo modo

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

Tenete a mente, Android Studio aggiunge versionNameSuffix per nome tipo di generazione di default, quindi non si può serve questo.

+0

Questa dovrebbe essere la risposta accettata – ElliotM

+0

Questa è la migliore risposta di tutti –