如何在多模块 Gradle 项目中声明“传递”风味依赖关系?

How to declare "transitive" flavor dependencies in multi module Gradle project?

提问人:doolle89 提问时间:4/3/2019 最后编辑:doolle89 更新时间:3/7/2023 访问量:345

问:

例如,我有 3 个模块(A、B 和 C),其中 A 依赖于 B,B 依赖于 C (A->B->C)。模块 A 是构建过程的入口点,没有其他模块依赖于它,例如 Android 应用程序中的 :app 模块。 模块 A 和 C 具有相同的风味维度和相同的风味集(例如 flavor1、flavor2、flavor3、flavor4 等)。模块 B 没有任何风格。

现在的问题是:如何以模块 A 和模块 C 在风格上始终匹配的方式将这些依赖定义为“传递”?

模块 A(flavor1) -> 模块 B -> 模块 C(flavor1)

模块 A(flavor2) -> 模块 B -> 模块 C(flavor2)

模块 A(flavor3) -> 模块 B -> 模块 C(flavor3)

等。。

如果所有 3 个模块都具有相同的风格,Gradle 会自动匹配它们,但由于 B 没有风格,因此会出现错误,这已经在本问题中描述过:基于 Gradle 中多风格库的单一风格模块,但没有答案是真正相关的:(

我现在需要的是,如果我运行 ./gradlew buildFlavor1Debug 来获取带有 flavor1 的模块 A 和 C,并且通常让所有知道风味的模块与链开始时给出的风格相匹配,而对于不知道风味的模块来说,只是转发/忽略它们。

missingDimensionStrategy 'dimension' 的问题在于,它要求依赖项中的 flavor 进行硬编码/修复,而不是基于构建的入口点进行动态处理,例如:missingDimensionStrategy 'myDimension' 'flavor1'

模块 A(flavor1) -> 模块 B -> 模块 C(flavor1)

模块 A(flavor2) -> 模块 B -> 模块 C(flavor1)

模块 A(flavor3) -> 模块 B -> 模块 C(flavor1)

等。。

android gradle android-gradle-plugin android-productflavors android-build-flavors

评论


答: 暂无答案