假设:
是否可以在Gradle Kotlin DSL中配置此类依赖项?特别是考虑模块 F 时,对 A1 和 A2 口味一无所知。
使用某些额外信息进行编辑:在我的特定情况下, M1 和 M2 仅用于引入特定资产。因此, F 并不关心这些,因此通常对 M 具有依赖性。
答案 0 :(得分:2)
我能够用missingDimensionStrategy
解决您的问题。
以下是简短的脚本:
module / build.gradle.kts
android {
flavorDimensions("module-dimension")
productFlavors {
create("module1") {
setDimension("module-dimension")
}
create("module2") {
setDimension("module-dimension")
}
}
}
功能/build.gradle.kts
android {
flavorDimensions("feature-dimension")
productFlavors {
create("feature1") {
setDimension("feature-dimension")
// Tells gradle to use "module1" flavor of the "module" module for this flavor.
missingDimensionStrategy("module-dimension", "module1")
}
create("feature2") {
setDimension("feature-dimension")
missingDimensionStrategy("module-dimension", "module2")
}
}
}
dependencies {
implementation(project(":module"))
}
我必须将风味 F1 和 F2 引入 F 模块(我猜这是一个android库模块)。您说“功能模块 F 取决于模块 M ”,但是 M 是哪种类型?我猜想这是应用程序所依赖的味道。无论如何,如果您不在功能模块中提供风味特定的代码,则结果是相同的。
app / build.gradle.kts
android {
flavorDimensions("app-dimension")
productFlavors {
create("app1") {
setDimension("app-dimension")
missingDimensionStrategy("module-dimension", "module1")
missingDimensionStrategy("feature-dimension", "feature1")
}
create("app2") {
setDimension("app-dimension")
missingDimensionStrategy("module-dimension", "module2")
missingDimensionStrategy("feature-dimension", "feature2")
}
}
}
dependencies {
implementation(project(":module"))
implementation(project(":feature"))
}
如果 F 仅取决于 M ,则可以通过将 F 的风味和风味尺寸重命名为与 M 口味相同。这样,您就不必在 F 中指定missingDimensionStrategy
,而只使用其中之一而不是 A 中的两个。这是因为当风味在各个模块之间匹配时,构建系统会自动解析正确的风味。
您会看到,当您更改 A 的样式时,Android Studio会自动为 F 和 M 选择正确的样式。>
根据您的要求, F 对 A1 和 A2 一无所知。我希望这回答了你的问题。如果没有,请发表评论。 Here's a sample project showing this。
答案 1 :(得分:0)