2013-11-01 39 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