У меня есть следующая структура проекта, где: app - это модуль приложения,: feature и: common - библиотеки.Мне нужно настроить некоторые переменные, такие как server_url, в :common
и настроить их через productFlavors, например, beta, staging, prod
.
: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»module "?
2. Возможно ли иметь ароматы только в модуле :common
?Как создать приложение в этом случае?
3. Может быть, во всей структуре проекта есть ошибка, и проблема должна быть решена другим способом, например, "flavors only for: app module, no flavors for library modules"».Это тот случай?