2013-10-04 2 views
50

私はAndroid Studioを使用しています。私はAndroid build.gradleファイルのversionNameSuffixに接尾辞を追加する必要があります。私は、3つの異なるbuildTypesを持っていると私は私の「ベータ版」のリリースに日時を追加する必要があり、私の実際のファイルは以下のとおりです。テストと自動配備のためのどのようにappend dateビルドを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-build20131004を、0.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

の上に置きますか? – herbertD

1

私はAndroidスタジオに慣れていませんが、Gradleは通常どおり動作します。ビルドプロジェクトの設定にこのような何かを追加するトリックを行う必要があります。

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

あなたのbuild.gradleのカスタム関数や変数で定義することができます。

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

をしたり、

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

versionNameSuffixが少なくとも1年間壊れていた – bluehallu

+0

'buildTime'に下線が引かれています:内部メソッドはサポートされていません。 – CoolMind

8

また、あなたにversionNameSuffixを、それを追加したい場合は、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()) 
} 

その後、あなたはそれを使用することができます。

import java.text.SimpleDateFormat; 
... 
0

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

ランのGradle:

詳細を参照してくださいGradleのtimenow。トップレベルのビルドbuild.gradleをconfiged後APKを生成する方法

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") 
    } 
} 
関連する問題