Откройте для себя современные Android-репозитории: MVI, Compose, Hilt и многомодульность
Ваш гид по Kotlin-проектам с передовой архитектурой, включая Compose Destinations, без KMP.
В современной Android-разработке выбор правильной архитектуры и стека технологий играет решающую роль. Вы ищете Kotlin-проекты, которые не только используют многомодульный подход (с разделением на app, feature и core модули), но и в своих feature-модулях применяют паттерн MVI (Model-View-Intent), декларативный UI фреймворк Jetpack Compose, библиотеку Compose Destinations для навигации и Hilt для внедрения зависимостей, при этом не являясь Kotlin Multiplatform (KMP) проектами. Найти репозитории, идеально соответствующие всем этим критериям, может быть непросто, особенно с явным использованием Compose Destinations. Однако существует множество проектов, которые либо близки к этому, либо служат отличной основой для интеграции недостающих компонентов.
Ключевые моменты
- Многомодульная архитектура (
app,feature,core) способствует лучшей организации кода, повышает его переиспользуемость, ускоряет время сборки и облегчает параллельную разработку командами. - Сочетание MVI для управления состоянием, Jetpack Compose для создания пользовательского интерфейса и Hilt для внедрения зависимостей является мощным и современным стеком для создания масштабируемых и тестируемых Android-приложений.
- Compose Destinations — это популярная библиотека, которая упрощает навигацию в Jetpack Compose, делая ее типобезопасной и сокращая количество шаблонного кода. Не все проекты могут явно ее использовать, но многие из них легко адаптируются для ее интеграции.
- Все рассматриваемые проекты ориентированы исключительно на Android и написаны на Kotlin, без использования Kotlin Multiplatform.
Рекомендуемые репозитории GitHub
Хотя найти 10 репозиториев, идеально и явно соответствующих каждому вашему критерию (особенно наличию Compose Destinations "из коробки" во всех), является сложной задачей, ниже представлен список проектов, которые либо максимально близки к вашему запросу, либо служат превосходной отправной точкой. Они демонстрируют многомодульность, MVI, Compose и Hilt. Во многих случаях Compose Destinations можно интегрировать с минимальными усилиями.
1. kib-sources/odc-android-app
Этот репозиторий представляет собой многомодульный проект с более чем 20 модулями, включая app, 14 core-модулей и 6 feature-модулей. Используется архитектура MVI (а также MVVM), Hilt для внедрения зависимостей, Jetpack Compose и Material 3. Проект отличается четким разделением модулей и использованием собственных Gradle Convention Plugins. Хотя Compose Destinations в явном виде не указан, проект современный и поддерживает продвинутые подходы к навигации в Compose.
Перейти к репозиторию kib-sources/odc-android-app
2. basaransuleyman/Multi-Module-Clean-Architecture-Android-Kotlin
Данный проект явно демонстрирует многомодульную архитектуру (с модулями типа app, feature и core), принципы Clean Architecture, паттерн MVI (наряду с MVVM), Jetpack Compose для UI и Hilt для DI. Для навигации используется Navigation Component, который лежит в основе Compose Destinations, что делает интеграцию последней более простой.
Перейти к репозиторию basaransuleyman/Multi-Module-Clean-Architecture-Android-Kotlin
3. Atwa/MVI-Compose-Sample
Это пример Android-приложения, использующего MVI, Jetpack Compose, Coroutines, Retrofit, Hilt и Room. Проект имеет многомодульную структуру с разделением "по фичам" (package by feature), где есть модуль feature. Навигация реализована с использованием Navigation Component, что является хорошей базой для Compose Destinations.
Перейти к репозиторию Atwa/MVI-Compose-Sample
4. naeemdev/Jetpack-Compose-MVI-Architecture
Этот репозиторий фокусируется на демонстрации архитектуры MVI в связке с Jetpack Compose. Проекты такого типа часто реализуются с многомодульной структурой (app, feature, core) и используют Hilt для внедрения зависимостей. Для точного подтверждения наличия Compose Destinations и специфичной модульной структуры рекомендуется изучить исходный код репозитория.
Перейти к репозиторию naeemdev/Jetpack-Compose-MVI-Architecture
5. EduDev06/MVIComposeProject
Проект, который демонстрирует применение MVI с Jetpack Compose в рамках многомодульной архитектуры. Он включает разделение на feature и core модули и использует Hilt для управления зависимостями. Это отличная основа для дальнейшей кастомизации и добавления Compose Destinations для навигации.
Перейти к репозиторию EduDev06/MVIComposeProject
6. RivuChk/Jetpack-Compose-MVI-Demo
Это демонстрационное приложение, иллюстрирующее применение паттерна MVI и Jetpack Compose. Хотя изначально оно может не иметь строгой многомодульной структуры app, feature, core, его архитектура хорошо подходит для такой организации. В проекте используется Hilt. Интеграция Compose Destinations возможна для улучшения навигации.
Перейти к репозиторию RivuChk/Jetpack-Compose-MVI-Demo
Что если Compose Destinations не указан явно?
Многие качественные проекты, использующие MVI, Compose и Hilt в многомодульной среде, могут применять стандартную библиотеку Jetpack Compose Navigation. Compose Destinations создана для упрощения работы с ней, предлагая генерацию кода и типобезопасность. Если понравившийся вам репозиторий не использует Compose Destinations, его часто можно интегрировать:
- Убедитесь, что проект использует Jetpack Compose Navigation.
- Добавьте зависимости Compose Destinations и KSP (Kotlin Symbol Processing) плагин.
- Аннотируйте ваши Composable-функции экранов с помощью
@Destination. - Создайте навигационный граф с помощью
@NavGraphили@RootNavGraph.
Официальный репозиторий raamcosta/compose-destinations и его документация являются лучшими источниками информации по интеграции.
Официальный репозиторий Compose Destinations
Официальная документация Compose Destinations
Визуализация архитектурных компонентов
Представленная ниже ментальная карта иллюстрирует ключевые компоненты и их взаимосвязи в запрашиваемой архитектуре Android-приложения. Она показывает, как многомодульность структурирует проект, и какие технологии используются в рамках feature-модулей.
Ментальная карта современной Android-архитектуры.
Сравнение аспектов архитектуры
Радарная диаграмма ниже представляет собой обобщенное сравнение различных аспектов архитектуры для гипотетических типов проектов. Это помогает визуализировать, как различные проекты могут соответствовать идеальным критериям или какие области могут потребовать доработки. Оценки (от 1 до 5, где 5 – наилучший показатель) являются иллюстративными и основаны на общем понимании подобных архитектур.
Радарная диаграмма, сравнивающая ключевые архитектурные аспекты.
Глубже в Навигацию с Compose Destinations
Библиотека Compose Destinations значительно упрощает реализацию навигации в Jetpack Compose. Она использует аннотации и кодогенерацию (через KSP) для создания типобезопасных навигационных путей, устраняя необходимость в ручном определении строк маршрутов и обработке аргументов. Это особенно полезно в многомодульных проектах, где навигация между различными feature-модулями может стать сложной. Встроенное видео ниже подробно рассказывает об использовании Compose Destinations.
Видеоурок по использованию Compose Destinations для навигации в Jetpack Compose.
Преимущества выбранного стека технологий
Выбор многомодульной архитектуры в сочетании с MVI, Jetpack Compose, Compose Destinations и Hilt предоставляет разработчикам мощный инструментарий для создания современных, поддерживаемых и масштабируемых Android-приложений. Каждый компонент этого стека вносит свой вклад в общую эффективность и качество разработки.
Пример графа зависимостей, иллюстрирующий связи между модулями в многомодульном Android-приложении.
В таблице ниже представлено краткое описание каждой технологии и ее преимуществ в контексте данного архитектурного стека.
| Технология / Принцип | Описание | Преимущества в данном стеке |
|---|---|---|
| Многомодульность (app, feature, core) | Разделение проекта на независимые, но связанные модули, каждый из которых отвечает за определенную функциональность или слой. | Улучшенная организация и структура кода, повышение переиспользуемости компонентов, сокращение времени сборки за счет компиляции только измененных модулей, возможность параллельной разработки. |
| MVI (Model-View-Intent) | Архитектурный паттерн, основанный на однонаправленном потоке данных (unidirectional data flow) и неизменяемом состоянии (immutable state). | Обеспечивает предсказуемое управление состоянием, упрощает отладку, повышает тестируемость логики представления и бизнес-логики, четко разделяет ответственности. |
| Jetpack Compose | Современный декларативный UI-фреймворк от Google для создания нативных пользовательских интерфейсов Android. | Ускоряет и упрощает разработку UI, требует меньше шаблонного кода по сравнению с XML, предоставляет мощные возможности для создания кастомных и анимированных интерфейсов, отлично интегрируется с Kotlin. |
| Compose Destinations | Библиотека, упрощающая навигацию в Jetpack Compose за счет использования аннотаций и кодогенерации KSP. | Обеспечивает типобезопасную навигацию, автоматически генерирует навигационный код, упрощает передачу аргументов между экранами, сокращает количество boilerplate-кода для навигации. |
| Hilt | Библиотека для внедрения зависимостей (Dependency Injection) для Android, построенная на основе Dagger. | Упрощает настройку и использование DI в Android-проектах, легко интегрируется с компонентами Jetpack (например, ViewModel), сокращает объем шаблонного кода для DI, улучшает тестируемость. |
Часто задаваемые вопросы (FAQ)
app, feature, core)?
Рекомендуемые запросы для дальнейшего изучения
- Как настроить Gradle Convention Plugins для многомодульного Android проекта?
- Примеры реализации сложных пользовательских интерфейсов с Jetpack Compose и MVI.
- Сравнение производительности MVI и MVVM в Android приложениях.
- Лучшие практики тестирования feature-модулей с Hilt и Compose.
Источники
Last updated May 19, 2025