как добавить дату сборки в versionNameSuffix на gradle



Я использую Android Studio, и мне нужно добавить суффикс к versionNameSuffix на моей сборке Android.файл gradle. У меня есть три разных типа сборки, и мне нужно только добавить datetime в мой" бета " релиз, мой фактический файл:



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


для тестирования и автоматического развертывания мне нужно получить окончательное имя версии, например:0.7.5-beta-build20131004,0.7.5-beta-build1380855996 или что-то подобное. Есть идеи?

652   6  

6 ответов:

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

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

сгущенное:

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

вы можете определить в вашей сборки.gradle пользовательские функции и переменные.

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

затем вы можете использовать:

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

или если вы хотите добавить его в вас versionNameSuffix

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

кроме того, не забудьте добавить импорт в качестве первой строки Gradle:

import java.text.SimpleDateFormat;
...

Я не знаком с Android Studio, но я предполагаю, что Gradle ведет себя так, как обычно. Добавление чего-то подобного в конфигурацию проекта сборки должно сделать трюк:

allProjects {
    gradle.taskGraph.whenReady { taskGraph ->
        versionNameSuffix += '-build' + // Java/Groovy code to produce the timestamp formatted the way you want
    }
}
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")
    }
}

Вы можете проверить

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

Run gradle: gradle timenow

посмотреть детали. Поместите его на верхнем уровне сборки

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
}

Comments

    Ничего не найдено.