Android的 - 基于构建类型变化的味道版本名称味道、名称、类型、版本

2023-09-04 23:54:12 作者:泪要自己尝 梦要自己扛

我想更改版本的名称为应用程序的口味,但只有当它的调试版本。

(如调试版本将会有像1.0.1 D(调试)555或1.0.1 P(调试)555版本,但我只想要发布版本有类似的版本1.0.1) 我怎样才能做到这一点?

基本上,我有这些建类型:

  buildTypes {


    调试{
        versionNameSuffix(调试)+ mBuild

    }
    推出 {
        runProguard真
        proguardFiles getDefaultProguardFile('ProGuard的-的Andr​​oid optimize.txt),文件(ProGuard的-project.txt)
        signingConfig signingConfigs.release
    }
}
 

和这些味道(对于不同的API环境下):

  productFlavors {
    开发{
        VERSIONNAME = android.defaultConfig.versionName +D
    }
    督促{
        VERSIONNAME = android.defaultConfig.versionName +P
    }
}
 

有什么办法如何让发布版本没有产品口味版本名称的变化?

我试图动态设置版本名称通过

  buildTypes.each {buildType  - >
    如果(buildType.name =='调试'){
        productFlavors.dev.versionName = android.defaultConfig.versionName +D
    }
}
 
手游时长市场依旧错综复杂,让氪金玩家主动为你打call

但这会导致

  

找不到物业开发的GroupableProductFlavorDsl容器。

解决方案

在寻找我已经成功地删除使用该code到版本名称为制作发布版本所有的变化小时

  applicationVariants.all {变种 - >
    如果(variant.buildType.name =='释放'){
        variant.mergedFlavor.versionName = android.defaultConfig.versionName;
    }
}
 

I want to change version name for app flavors but only if it's a debug build.

(e.g. debug builds will have versions like 1.0.1 D (DEBUG) 555 or 1.0.1 P (DEBUG) 555, however I want the release builds only to have version like 1.0.1) How can I achieve this?

Basically I have these build types:

buildTypes {


    debug {
        versionNameSuffix " (DEBUG) " + mBuild

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

and these flavors (for different api environment):

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

Is there any way how to make release builds without product flavors version name change?

I've tried to set the version name dynamically via

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

but this results in

Could not find property 'dev' on GroupableProductFlavorDsl container.

解决方案

After hours of searching I've managed to remove all the changes made to the version name for the release build using this code

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