Android studio Android studio gradle flavor维度构建变量无法正常工作

Android studio Android studio gradle flavor维度构建变量无法正常工作,android-studio,gradle,android-gradle-plugin,build.gradle,android-productflavors,Android Studio,Gradle,Android Gradle Plugin,Build.gradle,Android Productflavors,我有一个应用程序的两个维度,然后是绿色和蓝色。只有这两个维度,但产品口味的数量是无限的。这就是我在gradle的设置方式 flavorDimensions "green", "blue" productFlavors { one { applicationId "com.app.green.one" versionCode 1 versionName "1.0.0.1"; flavorDimension = "green

我有一个应用程序的两个维度,然后是绿色和蓝色。只有这两个维度,但产品口味的数量是无限的。这就是我在gradle的设置方式

flavorDimensions "green", "blue"

productFlavors {

    one {
        applicationId "com.app.green.one"
        versionCode 1
        versionName "1.0.0.1";
        flavorDimension = "green"
    }
    two {
        applicationId "com.app.blue.two"
        versionCode 6
        versionName "1.0.1";
        flavorDimension = "blue"
    }
}
但是在我同步gradle之后,在build variants选项卡中,我看到的是OneWODebug和OneWOrelease,在这里我应该看到greenOneDebug greenOneRelease、blueTwoDebug、blueTwoRelease

理论上我想把它扩展成这样

one {
    applicationId "com.app.green.one"
    versionCode 1
    versionName "1.0.0.1";
    flavorDimension = "green"
}
two {
    applicationId "com.app.blue.two"
    versionCode 6
    versionName "1.0.1";
    flavorDimension = "blue"
}
three {
    applicationId "com.app.green.three"
    versionCode 1
    versionName "1.0.0.1";
    flavorDimension = "green"
}
four {
    applicationId "com.app.blue.four"
    versionCode 6
    versionName "1.0.1";
    flavorDimension = "blue"
}
在本例中,维度表示应用程序的“类型”,然后可以添加更多的组织

**编辑我为gradle设置了错误的设置,正如这里指出的,这是对我所拥有内容的更准确描述

flavorDimensions "type", "organization"

productFlavors {

    blue {
        applicationId "com.app.blue"
        flavorDimension = "type"
        versionCode 6
        versionName "1.0.1";
    }
    red {
        applicationId "com.app.red"
        flavorDimension = "type"
        versionCode 1
        versionName "1.0.0.1";
    }

    company1 {
        flavorDimension = "organization"
    }
    company2 {
        flavorDimension = "organization"
    }
}

到目前为止,这是可行的,因此我可以创建用于切换类型的java源目录,但是如果我想要特定于组织的配置文件,我是否也为每个组织创建java源目录?

我认为您误解了维度的概念

风味维度类似于一个风味类别,来自每个维度的每种风味组合都会产生一个变体

在您的情况下,必须定义一个名为“type”的维度和另一个名为“organization”的维度。 对于维度“组织”中的每种口味,它将产生所有可能的“类型”(或双重表述:对于每种“类型”,它将为每个组织产生一个变体)

风味维度定义了将用于生产变体的笛卡尔产品


编辑:我将尝试用伪梯度代码来说明:

让我们定义一些“类型”:青铜、银和金

让我们定义一些组织:customerA、customerB、customerC

所有这些都是productFlavors,但它们属于两个不同的维度:

flavorDimensions("type_line", "organization")
productFlavors {

    gold {
        ...
        dimension = "type_line"
    }
    silver {
        ...
        dimension = "type_line"
    }
    bronze {
         ...
        dimension = "type_line"
    }

     customerA {
        ...
        dimension = "organization"
    }
    customerB {
        ...
        dimension = "organization"
    }
    customerC {
         ...
        dimension = "organization"
    }

}
此配置将生成18(3*3*2)个变体(如果您有两种标准构建类型:调试和发布):

黄金客户调试;黄金客户发布;黄金客户调试;黄金客户发行;黄金客户调试;黄金客户发行

银客户调试;银质定制发布;银客户调试;银质定制发布;银客户调试;银币客户发行

。。。(与青铜相同)

请注意,维度的名称完全是任意的,对变量名称没有影响


味道维度非常强大,但如果使用太多:它会导致变体数量呈指数级增长(构建后清理任务可能有助于删除无用或无意义的变体)

这更有意义,但每个产品味道都需要定义一个味味维度,因此,如果每种口味都是两者的组合,那么它是如何工作的呢?我猜我真正想做的是在senseThanks中的亚口味,例如!在你之前的评论之后,我刚刚了解了它是如何工作的,这更有意义,最后一个问题,如果可以的话,如果我也需要组织的配置文件,每个组织是否需要自己的java源目录?或者组织配置必须放在“类型”配置中吗?这有意义吗?您可以在/src/flavorName/java(分别是src/flavorName/res和src/flavorName/assets)下为每个产品风格创建额外的java/、res/或assets/目录,并且每个变体将包括src/main/+src/flavorName/(我不明白“放置在类型配置中”是什么意思)@ben75不是“清理任务”,而是使用块来减少变体的数量并排除无用的组合