2014-01-24 74 views
31

我正在嘗試使用Gradle設置應用的名稱。請看看這個片斷的build.gradle的:使用Gradle設置Android應用版本

android { 
    ... 
    defaultConfig { 
     ... 
     versionCode getVersionCode() 
     versionName getVersionName() 
     ... 
    } 
    ... 
} 

... 

int getVersionCode() { 
    return 1 
} 

def getVersionName() { 
    return "1.0" 
} 

Android Studio中說

'versionCode' cannot be applied to 'java.lang.Integer' 
    'versionName' cannot be applied to 'java.lang.String' 

,當我在設備上安裝應用程序它沒有任何的versionCode和在的versionName所有。

問題很明顯,但我不知道如何解決。
請指教。

回答

24

EDITED

爲了動態定義您的應用程序版本,指定與高清的自定義方法,並調用它,因爲這樣的:

def computeVersionName() { 
    return "2.0" 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.0" 

    defaultConfig { 
     versionCode 12 
     versionName computeVersionName() 
     minSdkVersion 16 
     targetSdkVersion 16 
    } 
} 

更多見here

確保不要使用可能與給定範圍中的現有getter衝突的函數名稱。例如,defaultConfig { ... }調用getVersionName()將自動使用獲取者defaultConfig.getVersionName()而不是自定義方法。

+0

感謝您的回覆。我還需要在build.gradle的其他地方使用versionCode和versionName值。如果我像這樣硬編碼,我將無法做到這一點。因此我使用方法。 – Slava

+0

把'def'方法放在'android'方括號之前是否可以做任何事情? – keithmaxx

+0

不幸的是,它沒有。 – Slava

46

它不能解決您的問題,但它可能是一個不同的解決方案。

您可以使用gradle.properties根項目中並定義:

VERSION_NAME=1.2.1 
VERSION_CODE=26 

然後在你的build.gradle你可以使用:

versionName project.VERSION_NAME 
versionCode Integer.parseInt(project.VERSION_CODE) 
+8

注意:這很好,直到更新使用新的構建工具!後來我注意到,我的版本代碼未設置,並且Integer.parseInt在Android Studio中被標記爲未知。現在需要:** project.VERSION_CODE.toInteger()** – sunadorer

9

這裏是我一個的build.gradle使用基於想法從JakeWharton

apply plugin: 'com.android.application' 
def versionMajor = 1 
def versionMinor = 2 
def versionPatch = 0 

def gitVersion() { 
    def counter = 0 
    def process = "git rev-list master --first-parent --count".execute() 
    return process.text.toInteger() 
} 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion '19.1.0' 


    defaultConfig { 
     applicationId 'my.project.com' 
     minSdkVersion 14 
     targetSdkVersion 19 
     versionCode gitVersion() 
     versionName "${versionMajor}.${versionMinor}.${versionPatch}" 
    } 
    .... 
} 
+0

嗨Phileo99 http://stackoverflow.com/questions/25556005/git-rev-list-not-working-in-android-studio-build-gradle –

相關問題