Wie wird das Erstellungsdatum an versionNameSuffix auf gradle angehängt?


74

Ich verwende Android Studio und muss ein Suffix an das versionNameSuffix in meiner Android build.gradle-Datei anhängen. Ich habe drei verschiedene buildTypes und muss nur die datetime an meine "Beta" -Version anhängen. Meine eigentliche Datei lautet:

defaultConfig {
    versionCode 14
    versionName "0.7.5"
    minSdkVersion 9
    targetSdkVersion 18
}
buildTypes {
    beta {
        packageNameSuffix ".beta"
        versionNameSuffix "-beta"
        signingConfig signingConfigs.debug
    }
    ....
}

für die Prüfung und automatisches deploy, ich brauche wie eine endgültige version zu bekommen: 0.7.5-beta-build20131004, 0.7.5-beta-build1380855996oder so ähnlich. Irgendwelche Ideen?

Antworten:


166
beta {
    packageNameSuffix ".beta"
    versionNameSuffix "-beta" + "-build" + getDate()
    signingConfig signingConfigs.debug
}

def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMddHHmmss')
    return formattedDate
}

Kondensiert:

def getDate() {
    return new Date().format('yyyyMMddHHmmss')
}

Wie erstelle ich apk nach der Konfiguration von build.gradle?
Herbert

como generar el apk verzweifelt?
Bruno Sosa Fast Tag

36

Sie können in Ihrem build.gradle benutzerdefinierte Funktionen und Variablen definieren.

def versionMajor = 3

def buildTime() {
    def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'") // you can change it
    df.setTimeZone(TimeZone.getTimeZone("UTC"))
    return df.format(new Date())
}

Dann können Sie es verwenden:

android {
    defaultConfig {
       versionName "${versionMajor}-beta-build-${buildTime()}"
    }
}

oder wenn Sie es in Ihrem versionNameSuffix hinzufügen möchten

beta {
    versionNameSuffix "-beta-build-${buildTime()}"      
}

versionNameSuffix ist seit mindestens einem Jahr
kaputt

buildTimewird unterstrichen: Innere Methoden werden nicht unterstützt.
CoolMind

9

Vergessen Sie auch nicht, den Import als erste Zeile von Gradle hinzuzufügen:

import java.text.SimpleDateFormat;
...

1
oder vermeiden Sie die Trauer und verwenden Sie das Format Date (). ("yyyyMMdd'T'HHmmssZ")
kbro

3
for simple one row solution define this property above android section 

final BUILD_DATE = new Date().format('yyyy_MM_dd_HHmm')

and then 

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId APPLICATION_ID
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.compileSdkVersion
        versionName GIT_TAG_NAME
        versionCode GIT_COMMIT_COUNT
        setProperty("archivesBaseName",`enter code here` "com-appname-$BUILD_DATE-$versionName")
    }
}

1

Ich bin mit Android Studio nicht vertraut, aber ich gehe davon aus, dass sich Gradle wie gewohnt verhält. Das Hinzufügen von so etwas zu Ihrer Build-Projektkonfiguration sollte den Trick tun:

allProjects {
    gradle.taskGraph.whenReady { taskGraph ->
        versionNameSuffix += '-build' + // Java/Groovy code to produce the timestamp formatted the way you want
    }
}

0

Sie können testen

task timenow {
    println(new Date().getTime())
}

Gradle ausführen: Gradle Timenow

Siehe Einzelheiten. Platziere es auf dem obersten Build

ext {
    configuration = [
            appName          : "vBulletin",
            applicationId    : "com.vbulletin",
            minSdkVersion    : 14,
            targetSdkVersion : 19,
            compileSdkVersion: 19,
            versionCode      : 6,
            versionName      : "1.3.6",
            buildToolsVersion: "25.0.0",
    ]

}

task createBrand {
    appConfig.applicationId = appConfig.applicationId + ".${brand}"
    appConfig.versionCode = new Date().getTime()
    appConfig.versionName = version
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.