【问题标题】:Setting the applicationId in gradle for a combined product flavor在 gradle 中设置 applicationId 以获得组合的产品风味
【发布时间】:2019-01-16 20:08:30
【问题描述】:

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

flavorDimensions "type", "country"

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

这导致四个buildVariants(忽略构建类型)。

现在我的挑战是为这四个变体设置不同的applicationIds,但我不知道该怎么做。 我发现实际更改 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 gradle build android-productflavors


    【解决方案1】:

    使用它

    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
    
        }
    }
    

    【讨论】:

    • 不,我不需要设置后缀 我需要根据与现有 applicationId 无关的预定义模式更改整个 applicationId。
    • 这似乎可行,但我还不能确认 100%,因为现在我遇到了一个新问题,无法找到所选 buildVariant 的资源。 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 2015-07-09
    • 2013-12-11
    • 2013-06-07
    相关资源
    最近更新 更多