У меня один Android проект, где у меня есть 4 основных модуля :
- МОДУЛЬ A
- МОДУЛЬ B
- МОДУЛЬ C
- МОДУЛЬ D
В том же проекте у меня есть 3 вида продуктов
- Аромат продукта X
- Аромат продукта Y
- Аромат продукта Z
Итак, в проекте главная папка У меня MainActivity.class , который ВКЛЮЧАЕТ SpecificFeature тогда и только тогда, когда арендатор имеет значение PRODUCT FLAVOR Y и настроен правильно (логическое значение true или flase). Итак, если это правда, мы вызываем специфицированную c функцию, которая доступна только в MODULE B , она будет выглядеть так ModuleB.specificFunctionCall()
.
Не у всех арендаторов есть MODULE B
и это можно сделать с помощью
productFlavorYImplementation project(path: ':ModuleB')
Но теперь вызов ModuleB.specificFunctionCall()
приведет к неразрешенной ссылке, так как нет модуляB. Конечно, я мог бы создавать дубликаты файлов, такие как enabled_feature/disabled_feature
папки, и иметь дублирующиеся классы, такие как ModuleBHelper.class
, и оба имели бы функцию specificFunctionCall()
, где одна - пустая функция (решение неразрешенной ссылки), а другая - нормальная реализация, но это оставляет меня с дублирующими файлами, где одна сторона всегда будет копировать / вставлять + пустая реализация. Есть ли способ сделать это более элегантно?