Работали ли вы с многомодульными проектами и как организовывали модули
Что проверяют
Разбирали ли вы монолитный :app на части и понимаете ли, ради чего это делается: время сборки, границы ответственности команд, изоляция фич. Заодно проверяют Gradle, потому что многомодульность прежде всего про сборку. Следом спрашивают: «как одна фича открывает экран другой».
Как отвечать
Опишите схему, которая была у вас, и объясните её:
:app: точка входа, сборка графа зависимостей, навигация верхнего уровня и почти никакого кода фич;- *`:core:
**:network,database,designsystem,common`; переиспользуемая инфраструктура без бизнес-логики; - *`:feature:`**: экран или связная группа экранов со своими data и domain частями, фичи не зависят друг от друга напрямую;
- разделение
apiиimpl: потребитель видит только интерфейсы, замена реализации не пересобирает половину проекта.
Дальше механика Gradle, по ней и понятно, работали вы с этим или читали. Каталог версий libs.versions.toml. Соглашения сборки в build-logic вместо копирования блока android {} в двадцать файлов. implementation по умолчанию, api только осознанно. KSP вместо давно тормозящего kapt. Включённые кэш конфигурации и параллельная сборка. Замеры через build scan или --profile. Ориентир, на который можно сослаться, это официальный пример nowinandroid.
Связь между фичами объясните отдельно: интерфейс навигации объявлен в api-модуле или в :core, реализация подставляется в :app через Hilt, либо переход идёт по deep link. Так фичи остаются независимыми.
Опыта нет: расскажите план. Вынести дизайн-систему и сетевой слой, затем одну фичу целиком, замерить время сборки до и после и решить, продолжать ли.
Где спотыкаются
Дробят на сотню крошечных модулей. Конфигурация Gradle начинает занимать больше времени, чем экономит параллельная компиляция, и сборка становится медленнее исходной.
Подключают зависимости через api. Транзитивная видимость возвращает связность: правка в :core:network пересобирает всё, и смысл разделения теряется.
Заводят :core:common и складывают туда всё подряд. Через полгода это второй монолит, от которого зависят все модули, а значит, любая правка в нём отменяет инкрементальную сборку.