在 Android gradle 中组装时仅指定一个维度和两个风味维度中的构建类型

Cod*_*oza 9 android build gradle build.gradle android-gradle-plugin

我正在开发一个多模块 Gradle Android 项目,它有两个风格维度和一个构建类型。我想要实现的是通过仅指定一个风味维度和构建类型来构建多个构建变体。我将向您展示我的 build.gradle 中的风味维度设置部分。

构建.gradle

...
android {
    buildTypes {
        release {
            debuggable false
            minifyEnabled false
        }

        debug {
            debuggable true
            minifyEnabled false
        }
    }
    flavorDimensions 'adid', 'phase'

    productFlavors {
        full {
            dimension 'adid'
        }
        lite {
            dimension 'adid'
        }

        alpha {
            dimension 'phase'
            versionNameSuffix '-SNAPSHOT'
        }

        sandbox {
            dimension 'phase'
            versionNameSuffix '-SNAPSHOT'
        }

        beta {
            dimension 'phase'
            versionNameSuffix '-SNAPSHOT'
        }

        real {
            dimension 'phase'
        }
    }
}
...
Run Code Online (Sandbox Code Playgroud)

如您所见,有两个风味维度 adid(2 种风味)和阶段(4 种风味),以及一种构建类型(2 种类型),共 16 种构建变体。

  1. 汇编LiteAlpha调试
  2. 组装LiteAlphaRelease
  3. assembleFullAlphaDebug
  4. 组装FullAlphaRelease
  5. assembleLiteSandboxDebug
  6. assembleLiteSandboxRelease
  7. assembleFullAlphaDebug
  8. 组装FullAlphaRelease

由于我们的 CI 一次为特定的服务器阶段构建,因此我想要做的是在我的 gradle 命令中仅指定一种风格和构建类型。

./gradlew assembleAlphaRelease // build for alpha phase
./gradlew assembleSandboxRelease // build for sandbox phase
./gradlew assembleBetaRelease // build for beta phase
./gradlew assembleRealRelease // build for real phase
Run Code Online (Sandbox Code Playgroud)

我希望 assembleAlphaRelease 运行两者:

  1. 组装LiteAlphaRelease
  2. assembleFullAlphaRelease

但是,gradle 不允许我这样做。我可以使用任意组合,例如一维、二维、一种构建类型二维和一种构建类型,如下所示:

./gradlew assembleAlpha
./gradlew assembleFull
./gradlew assembleDebug
./gradlew assembleRelease
./gradlew assembeFullAlphaRelease
Run Code Online (Sandbox Code Playgroud)

但是每当我结合一种风格和构建类型时,gradle 都会给我以下错误。

Task 'assembleAlphaRelease' not found in project ':app'.
Run Code Online (Sandbox Code Playgroud)

我不确定这是 Gradle 插件的意图还是错误,但很好奇是否有人能给我解释为什么这是不可行的。:)