wie das Datum bei Gradle an versionNameSuffix angehängt wird

Lesezeit: 3 Minuten

Benutzer-Avatar
Rodrigo Amaro Reveco

Ich verwende Android Studio und muss ein Suffix an die anhängen versionNameSuffix auf meinem Android build.gradle Datei. Ich habe drei verschiedene Build-Typen und muss nur die Datumszeit an meine “Beta” -Version anhängen. Meine eigentliche Datei ist:

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

Zum Testen und automatischen Bereitstellen benötige ich einen endgültigen Versionsnamen wie: 0.7.5-beta-build20131004, 0.7.5-beta-build1380855996 oder sowas ähnliches. Irgendwelche Ideen?

Benutzer-Avatar
Rodrigo Amaro Reveco

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?

    – herbertD

    29. Mai 2014 um 8:26 Uhr

  • wie allgemein el apk despues?

    – Bruno Sosa Fast-Tag

    9. April 2019 um 14:19 Uhr

Benutzer-Avatar
Gabriele Marotti

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 defekt

    – blau hallu

    27. Oktober 2015 um 13:28 Uhr

  • buildTime ist unterstrichen: Innere Methoden werden nicht unterstützt.

    – CoolMind

    21. Dezember 2016 um 17:29 Uhr

  • Wie bekommt man Date() importiert?

    – einfacher Benutzer

    7. Mai 2021 um 6:00 Uhr

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

import java.text.SimpleDateFormat;
...

  • oder vermeiden Sie die Trauer und verwenden Sie Date().format(“yyyyMMdd’T’HHmmssZ”)

    – kbro

    22. August 2018 um 14:36 ​​Uhr

Benutzer-Avatar
Yogajunge

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

Benutzer-Avatar
Jamie Bisotti

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 Zweck erfüllen:

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

Benutzer-Avatar
Tuan Nguyen

Sie können testen

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

Gradle ausführen: Gradle timenow

Siehe Einzelheiten. Platzieren Sie es auf dem Build der obersten Ebene

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
}

Das ist für Kotlin-DSL (build.gradle.kts):

// At the top of the file
import java.time.LocalDate
import java.time.format.DateTimeFormatter.*

// ...

android {
    buildTypes {
        getByName("debug") { // OR simply  debug {  in newer versions of Android Gradle Plugin (AGP)
            val date = LocalDate.now().toString()
            // OR val date = LocalDate.now().format(ISO_LOCAL_DATE)
            // OR val date = LocalDate.now().format(ofPattern("yyyy-MM-dd"))
            versionNameSuffix = date
        }
    }
}

Sie könnten die Datumserstellung auch in eine Funktion extrahieren:

android {
    buildTypes {
        getByName("debug") {
            versionNameSuffix = generateDate()
        }
    }
}

fun generateDate() = LocalDate.now().toString()
// OR fun generateDate() = LocalDate.now().format(ISO_LOCAL_DATE)
// OR fun generateDate() = LocalDate.now().format(ofPattern("yyyy-MM-dd"))

1300310cookie-checkwie das Datum bei Gradle an versionNameSuffix angehängt wird

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy