我具有以下项目结构,其中:app是应用程序模块,:feature和:common是库。我需要在:common
中配置一些变量,例如server_url,并希望通过beta, staging, prod
之类的productFlavors对其进行配置。
:app
/ |
V |
:feature |
\ |
V V
:common
我想这意味着我需要在我的:app
模块中使用所有相同的样式,因为它决定了要使用哪种依赖性。
但是风味信息似乎在:feature
模块中消失了,因为它没有风味,这会导致诸如以下的配置问题:
Caused by: org.gradle.internal.component.AmbiguousConfigurationSelectionException: Cannot choose between the following variants of project :common:
- betaDebugRuntimeElements
- prodDebugRuntimeElements
- stagingDebugRuntimeElements
我使用buildTypes
和matchingFallbacks
来完成类似的工作,但似乎有点怪异,因为我打算使用多种风味尺寸。仅通过buildTypes实现它会迫使我手动创建所有组合。
这是问题:
1.是否可以通过productFlavors加上诸如“使用:app模块选择的风味”之类的魔术词来解决?
2.是否可能仅在:common
模块中具有风味?在这种情况下,如何构建应用程序?
3.整个项目结构中可能有一个错误,应该以其他方式解决该问题,例如“仅对:app模块具有味道,而对库模块则没有味道”。是这样吗