Android - 根据构建类型更改flavor版本名称

mar*_*ant 23 android gradle

我想更改应用程序风格的版本名称,但仅限于它是调试版本.

(例如,调试版本将具有类似1.0.1 D(DEBUG)555或1.0.1 P(DEBUG)555的版本,但是我希望版本构建仅具有1.0.1版本)我如何实现这一目标?

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

buildTypes {


    debug {
        versionNameSuffix " (DEBUG) " + mBuild

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

和这些口味(针对不同的api环境):

productFlavors {
    dev {
        versionName = android.defaultConfig.versionName + " D"
    }
    prod {
        versionName = android.defaultConfig.versionName + " P"
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法如何在没有产品风格版本名称更改的情况下进行发布版本?

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

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

但这会导致

无法在GroupableProductFlavorDsl容器上找到属性"dev".

mar*_*ant 32

经过几个小时的搜索后,我设法使用此代码删除了对发布版本的版本名称所做的所有更改

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

  • 我在项目中找到了"找不到属性'applicationVariants':...`错误. (2认同)
  • 使用applicationVariants.each而不是applicationVariants.all (2认同)