在 gradle 中设置 applicationId 以获得组合的产品风味

Posted

技术标签:

【中文标题】在 gradle 中设置 applicationId 以获得组合的产品风味【英文标题】:Setting the applicationId in gradle for a combined product flavor 【发布时间】: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 彼此完全不同 :(

非常感谢您的帮助!

谢谢,一切顺利!

【问题讨论】:

【参考方案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 的资源。 :(

以上是关于在 gradle 中设置 applicationId 以获得组合的产品风味的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gradle 在 APK 文件名中设置 versionName?

在 Gradle Spring Boot Hibernate 项目中设置 LiquiBase

在 gradle 中设置 applicationId 以获得组合的产品风味

如何使用gradle在APK文件名中设置versionName?

在 gradle-pitest-plugin 中设置环境变量

如何在 build.gradle 文件中设置属性以在 Java 中访问该属性