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

时间:2019-04-02 23:45:17

标签: android gradle android-gradle android-productflavors android-build-flavors

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

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

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

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

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

等等。

如果所有3个模块都具有相同的样式,则Gradle会自动将其匹配,但是由于B没有样式,因此会发生错误,该错误已在此问题中进行了描述:Single flavor module based on multi flavor library in Gradle 但没有答案真的很相关:(

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

missingDimensionStrategy'dimension'的问题在于它要求对依赖项进行硬编码/固定,而不是根据构建的入口点而动态变化,例如:missingDimensionStrategy'myDimension''flavor1'

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

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

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

等等。

0 个答案:

没有答案