Всем привет! Я Денис Загаевский из Android-разработки Яндекс.Карт. Если вы развиваете многомодульное приложение или хотите разбить на части пока ещё одномодульное, этот туториал для вас.
Под катом расскажу, как удобно разбить приложение на модули, зачем это нужно и как потом приготовить в нём DI (dependency injection). Кто-то мог слышать мой доклад на Mobius 2021 Piter или в Школе мобильной разработки, а для всех остальных я написал эту статью.
Смотреть доклады
На Mobius:
В ШРИ:
Местами буду ссылаться на опыт Яндекс.Карт. Кстати, рабочий пример нашего подхода есть на GitHub.
- Модуляризация
Зачем разбивать приложение на модули?
Виды модулей
App modules
Feature modules
Core modules
Требования к межмодульному DI - Как feature-модуль получает свои зависимости?
- Предоставление зависимостей feature-модулям
Простой случай
Сложный случай
Использование Hilt в app-модуле
Итоги по предоставлению зависимостей - Использование зависимостей в feature-модуле
- Минусы, ограничения, исключения
Связывание во время выполнения
Сложность восприятия
Ограничения на зависимость фич друг от друга
Фичи зависят друг от друга по api
Фичи зависят друг от друга по implementation
Разрываем зависимость между фичами
Не UI-фича - Подводя итоги