2013-10-04 96 views
50

我正在使用Android Studio,並且需要將後綴追加到我的Android build.gradle文件的versionNameSuffix上。我有三個不同的buildTypes,我只需要到datetime追加到我的「測試版」的發佈,我的實際文件是:如何將附加日期生成到gradle上的versionNameSuffix

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

用於測試和自動部署,我需要得到一個最終的versionName,如:0.7.5-beta-build201310040.7.5-beta-build1380855996或類似的東西。有任何想法嗎?

回答

118
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() { 
    new Date().format('yyyyMMddHHmmss') 
} 
+0

如何生成APK的ConfigEd的的build.gradle後? – herbertD

1

我對Android Studio並不熟悉,但我會假設Gradle的行爲與平常一樣。添加像這樣到您的構建項目配置應該做的伎倆:

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

你可以在你的build.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()}"  
} 
+0

versionNameSuffix已損壞至少一年 – bluehallu

+0

'buildTime'帶下劃線:不支持內部方法。 – CoolMind

8

另外,不要忘記加上進口的搖籃第一行:

import java.text.SimpleDateFormat; 
... 
0

您可以測試

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

運行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 
} 
1
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") 
    } 
} 
相關問題