具有风味的ext变量不适用于多维

时间:2019-02-20 12:30:10

标签: android gradle android-productflavors

我与下面的代码具有相同的结构,我想在applicationId和后缀中添加前缀(不带点),并在gradle文件的末尾使用applicationId值。

我不想使用applicationIdSuffix,因为它会自动添加点,并且我无法获得gradle的价值,也无法获得完整的applicationId。

flavorDimensions "type", "version"

productFlavors.all {
       ext.appIdPrefix = "com.example"
       ext.appId = ""
       ext.appIdSuffix = ""
    }

productFlavors {

        flavor1 {
            dimension "type"
            appId = ".flavor1"
        }

       full {
            dimension "version"
            appIdSuffix = "Full"
        }
}

productFlavors.all  {
     applicationId appIdPrefix + appId + appIdSuffix
}

现在,当我使用“ flavor1full”运行我的应用程序时,applicationId仅是“ com.exmaple.flavor1”,而没有获取appIdSuffix的值

我该如何解决?

2 个答案:

答案 0 :(得分:1)

而不是更改每种口味的应用ID,而是尝试遍历applicationVariants:

applicationVariants.all { variant ->
    def flavors = variant.productFlavors
    variant.mergedFlavor.applicationId = flavors[0].appId + flavors[1].appIdSuffix ;
}

由于两种构建类型,这将迭代每种口味的组合两次。另请参见Multi-Dimension Flavor ApplicationId

还要注意您输入的错字:appIdSuffix "Full"应该是appIdSuffix="Full"

答案 1 :(得分:0)

假设您的最终目标是使用不同的应用程序ID构建不同的应用程序风格,那么您应该可以使用以下内容:

flavorDimensions "type"

productFlavors.all {
    ext.appIdPrefix = "prefix"
    ext.appId = "hello.world"
}

productFlavors {
    partial {
        dimension "type"
        ext.appIdSuffix = "suffix1"
    }

    full {
        dimension "type"
        ext.appIdSuffix = "suffix2"
    }
}

productFlavors.all {
    applicationId appIdPrefix + "." + appId + "." + appIdSuffix
}

以上内容将为您生成以suffix1或suffix2结尾的应用程序ID,具体取决于所选的构建变体。不知道我为什么要为此增加另一个维度。