如何根据两种不同的风味尺寸设置我的Android应用包名称?

Arg*_*yle 6 android android-gradle-plugin

我正在使用Gradle插件构建我的Android应用程序.我正在使用flavors功能创建四种不同的变体.目前,它是具有四个值的单个维度,但将其设置为具有两个值的两个维度更合乎逻辑.我有那栋楼,但这是我遇到麻烦的地方.

我需要四种变体中的每一种都有不同的包名.前三个很容易,因为我有一个默认值,每个维度都可以覆盖包,但我需要设置一个包名称,当两个非默认维度都在播放时.

flavorDimensions "foo", "bar"
productFlavors {
    boring.flavorDimension "foo"
    charm {
        flavorDimension "foo"
        packageName "com.example.charm"
    }
    strange {
        flavorDimension "bar"
        packageName "com.example.strange"
    }
    // This is the idea of what I want, but it doesn't work because there
    // must be only a single dimension specified here.
    charmStrange {
        flavorDimension "foo", "bar"
        packageName "com.example.charminglystrange"
    }
}
Run Code Online (Sandbox Code Playgroud)

通过查找组合的风味变体,我尝试在声明后设置它,但我没有太多运气.我对Gradle不是很熟悉,所以我确信我没有雇用过诡计.或者,也许我可以指定包名称src/charmStrange/AndroidManifest.xml并让合并排序?这似乎可能会在将来引发问题.

Kio*_*tch 1

您需要设置 applicationId,而不是 packageName:

    productFlavors {
        boring.flavorDimension "foo"
        charm {
            flavorDimension "foo"
            applicationId "com.example.charm"
        }
        strange {
            flavorDimension "bar"
            applicationId "com.example.strange"
        }
        // This is the idea of what I want, but it doesn't work because there
        // must be only a single dimension specified here.
        charmStrange {
            flavorDimension "foo", "bar"
            packageName "com.example.charminglystrange"
        }
    }
Run Code Online (Sandbox Code Playgroud)