2015-11-18 22 views
11

Chciałbym zmienić nazwę pliku "app-release.apk", tak jak podczas budowania aplikacji przy użyciu gradle.Jak zmienić nazwę apk przy użyciu gradle like this format?

 
[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". 

Jeśli wygeneruję plik APK w wersji, wynikiem jest: myApp_V223_151118_R.apk.

Jak utworzyć taką nazwę pliku w gradle?

Odpowiedz

28

Aktualizacja: proszę sprawdzić poniżej: Anrimian's answer, który jest znacznie prostszy i krótszy.

Spróbuj tego:

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

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

+0

Kiedy to zrobię, otrzymuję: app-development-release.apk, app-live-release.apk. Dlaczego mówi "aplikacja", a nie nazwę mojej aplikacji? – Subby

+1

@Subby upewnij się, że ustawiłeś applicationName w gradle.properties. – Krishnaraj

+4

applicationVariants.all nie powinny być zagnieżdżone w każdym z wariantów: debug {} zwalniający {} { applicationVariants.all wariant -> renameAPK (wariant, defaultConfig, variant.name) } – wolfprogrammer

30

To może być najkrótsza droga:

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

buildType: jak tak

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

Pamiętaj, Android Studio dodaje versionNameSuffix wg nazwy typu build domyślnie, więc nie może potrzebuję tego.

+0

To powinna być zaakceptowana odpowiedź – ElliotM

+0

To jest najlepsza odpowiedź z nich wszystkich –

Powiązane problemy