android - 在 gradle 中设置 applicationId 以实现组合产品 flavor

标签 android gradle build android-productflavors

我有一个具有两个 productFlavors 的应用:

flavorDimensions "type", "country"

productFlavors {
    free {
        dimension "type"
    }
    premium {
        dimension "type"
    }
    us {
        dimension "country"
    }
    de {
        dimension "country"
    }
}

这会产生四个buildVariants(忽略构建类型)。

现在我的挑战是为这四个变体设置不同的 applicationId ,但我不知道如何做到这一点。 我发现实际更改 applicationId 的唯一方法是在 productFlavors 定义中,如下所示:

productFlavors {
    free {
        applicationId "some.application.id"
        dimension "type"
    }

但问题是,例如,flavor 实际上是 freeDe,我想为该组合设置 applicationId

我尝试过:

productFlavors {
    freeDe {
        applicationId "some.random.id"
    }

productFlavors {
    free {
        de {
            applicationId "some.random.id"
        }
    }

还有很多其他组合,但似乎都不起作用。

重要提示:我不能使用前/后缀,因为应用程序 ID 彼此完全不同:(

非常感谢您的帮助!

谢谢,祝一切顺利!

最佳答案

使用它

android.applicationVariants.all { variant ->
    def mergedFlavor = variant.mergedFlavor
    switch (variant.flavorName) {
        case "freeUs":
            mergedFlavor.setApplicationId("com.application.id.freeUs")
            break
        case "freeDe":
            mergedFlavor.setApplicationId("com.application.id.freeDe")
            break

    }
}

关于android - 在 gradle 中设置 applicationId 以实现组合产品 flavor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51765667/

相关文章:

android - 无法在 Nougat 中使用 Adob​​e 打开 PDF 文件

android - 无尽的水平 ScrollView 动态绘制内容

java - Android 中的 slider 控件... SeekBar 真的是我最好/唯一的选择吗?

spring-boot - 字段存储库需要找不到名为 'entityManagerFactory'的bean

java - 升级到 Gradle 包装器到 7.0.2 和 JDK 11 后,Android 版本构建失败

grails - 有没有办法将 BuildConfig 从一组插件继承到当前应用程序?

java - 如何在 Android Phonegap 移动应用中加密 HTML+JS Assets ?

gradle - Gradle:如何以每行状态运行测试?

java - 在 Ant 中使用 Maven 获取 jar 依赖项

android - Android Studio 3.1.4卡在gradle构建中运行