首页 > 解决方案 > 在 Gradle 4.1 中为特定的 flavor-buildType 组合设置 applicationIdSuffix

问题描述

我的应用程序中有不同的构建类型和不同的风味维度。我只想为一种特定的构建类型向应用程序 ID 添加特定的风味后缀。

例如,对于stageApi风味和beta构建类型组合,我想添加后缀.stageapi.beta因此结果应用程序 ID 将是my.application.stageapi.beta,但是对于debug并且release我不想这样做(我想要有my.application.debugmy.application没有 api 后缀)。

我以前有过这段代码,它工作得很好:

    productFlavors {

        ... 

        beta {
            applicationIdSuffix ".beta"
        }
    }

    applicationVariants.all { variant ->
        def name = variant.getName()
        if (name.contains("StageApiBeta")) {
            def mergedFlavor = variant.mergedFlavor
            mergedFlavor.setApplicationIdSuffix(".stageapi")
        }
    }

但是升级到 Gradle 插件 4.1 后它停止工作。它不会抛出任何错误,但生成的应用程序 ID 是my.application.beta,没有.stageapi.

我尝试了不同的方法,但我现在不知道该怎么做。我似乎 4.2 也会有其他 API 更改,但我想让它也可以在 4.1 中工作。

标签: androidgradleandroid-gradle-plugin

解决方案


为您的变体使用flavorDimensions和设置不同的后缀。

flavorDimensions "dimen1" "dimen2"
productFlavors {
   beta {
     applicationIdSuffix ".beta"
     dimension "dimen1"
   }
   stageapi {
     applicationIdSuffix ".stageapi"
     dimension "dimen2"
   }
}

推荐阅读