2013-11-01 38 views
18

變味版本的名字,我想爲應用口味改變版本的名字,但只有當它的調試版本。 (調試版本將有1.0.1 D(DEBUG)555或1.0.1 P(DEBUG)555等版本,但是我希望發佈版本只有版本1.0.1) 我該如何實現這個?Android的 - 基於構建類型

基本上我有這些建類型:

buildTypes { 


    debug { 
     versionNameSuffix " (DEBUG) " + mBuild 

    } 
    release { 
     runProguard true 
     proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), file('proguard-project.txt') 
     signingConfig signingConfigs.release 
    } 
} 

和這些味道(針對不同的API環境):

productFlavors { 
    dev { 
     versionName = android.defaultConfig.versionName + " D" 
    } 
    prod { 
     versionName = android.defaultConfig.versionName + " P" 
    } 
} 

有什麼辦法如何讓發佈的版本沒有產品口味版本名稱變更?

我試圖通過

buildTypes.each { buildType -> 
    if(buildType.name == 'debug') { 
     productFlavors.dev.versionName = android.defaultConfig.versionName + " D" 
    } 
} 

動態設置版本名稱,但這會導致

找不到財產「開發」上GroupableProductFlavorDsl容器。

+0

的版本名稱進行了發佈版本的所有更改接受你自己的答案,請小時。所以對社區來說很明顯,這個問題已經解決。 –

+0

「你明天可以接受你自己的答案」 – martinpelant

回答

29

後搜索我已經成功地刪除使用此代碼

applicationVariants.all { variant -> 
    if (variant.buildType.name == 'release') { 
     variant.mergedFlavor.versionName = android.defaultConfig.versionName; 
    } 
} 
+0

這個符號(android.defaultConfig.versionName)爲我工作,直到今天我從AndroidStudio 0.5.5升級到0.8.1的任何想法,現在應該改爲使用 – Gavriel

+2

我?得到'找不到項目屬性「applicationVariants」:...'錯誤 – Alf

+2

使用applicationVariants.each相反applicationVariants.all – San

3

Build Type應覆蓋Product Flavor。嘗試下一個。

buildTypes { 

    release { 
     versionName = android.defaultConfig.versionName 
    } 
} 
+5

我已經試過了。問題是構建類型沒有versionName屬性,只有versionNameSuffix。上面的代碼導致'按需創建屬性(也被稱爲動態屬性)'已經變爲 .0。請閱讀http://gradle.org/docs/current/dsl/org.gradle.api.plu 關於替代動態屬性。 棄用動態屬性「的versionName」上「BuildTypeDsl_Decorated」 – martinpelant