Приложение с нуля
Иногда ты первый разработчик на проекте. Задача – накидать архитектуру будущего приложения. Что показать заказчику и какие подходы котируются?
Репозиторий
• Git как система контроля версий.
• GitFlow как стратегия ведения репозитория.
• GitHub как платформа для хостинга репозитория.
• GitHub Releases для публикации релизов.
• GitHub Issues для отслеживания задач и багов.
Сборка
• Gradle KTS для написания билд-скриптов.
• Gradle Version Catalog для управления зависимостями.
• R8 для оптимизации и минификации кода.
• Build Types – debug для разработки, с логами и отладочными инструментами и release для прода, с оптимизациями и отключёнными логами.
• minSdk – 24 (Android 7.0).
• targetSdk – 35 (Android 15).
• compileSdk – 35 (Android 15).
• Формат сборки – AAB для Google Play. APK для других сторов.
• JVM Toolchain для управления версией JDK.
Архитектура
• MVI как архитектурный паттерн.
• Слоистая архитектура для разделения ответственности (Domain – Data – UI).
• SSOT для обеспечения консистентности данных.
• UDF для управления состоянием данных.
Стек
• Kotlin как основной язык программирования.
• Kotlin Coroutines для работы с асинхронным кодом и параллельными задачами.
• Kotlin Flow для обработки потоков данных.
• Kotlin Serialization для преобразования объектов в форматы JSON и XML.
• Jetpack Compose как UI-фреймворк.
• ViewModel для хранения и управления UI-состоянием.
• Navigation Component для управления навигацией между экранам.
• Hilt для внедрения зависимостей.
• Retrofit для работы с REST API.
• OkHttp для работы с HTTP-запросами и WebSockets.
• Chucker для отслеживания HTTP-запросов и ответов.
• Foreground Service для выполнения длительных или важных задач (камера, локация, музыка, диктофон, звонок, фитнес).
• WorkManager для управления фоновыми задачами.
• DataStore для хранения данных.
• Room для работы с базами данных.
• CameraX для работы с камерой.
• Paging3 для загрузки больших списков с поддержкой пагинации.
• Coil для загрузки и отображения изображений.
• Media3 для работы с мультимедийным контентом (аудио и видео).
• Jetpack Glance для создания виджетов.
Дизайн
• Material3 как дизайн-система.
• Тема приложения – светлая, темная и системная.
• Splash Screen API для отображения заставки.
• Predictive Back Gesture для жеста назад и предварительного просмотра экранов.
• Edge-to-Edge для отображения UI без отступов, когда контент заполняет весь экран, включая области статус-бара и навигации.
• Ориентация экрана – определяется сенсором устройства.
• Display Cutouts – корректная обработка вырезов на экране (под камеру или датчики).
• Adaptive Layouts – макеты, которые автоматически подстраиваются под разные размеры экранов на телефонах, планшетах и десктопах.
• Локализация – en (английский) + язык пользовательской базы, например ru.
Тестирование
• Unit-тесты для бизнес-логики – JUnit, Mockito, Kotest.
• UI-тесты для пользовательского интерфейса – Espresso, Robolectric.
• Android Profiler для мониторинга производительности, памяти, сети и CPU.
• Benchmarking для измерения производительности приложения или его компонентов.
• LeakCanary для обнаружения утечек памяти.
Стиль кода
• Detekt как статический анализатор для нахождения ошибок и улучшения стиля кода.
Мониторинг и аналитика
• Huawei Mobile Services как набор облачных сервисов для устройств Huawei.
• Google Mobile Services как набор облачных сервисов для большинства устройств.
• Firebase Analytics для анализа поведения пользователей.
• Firebase Crashlytics для мониторинга и анализа сбоев в приложении.
• Firebase Cloud Messaging для отправки уведомлений.
• Firebase App Distribution для распространения предварительных версий приложения среди тестировщиков.
Непрерывная интеграция и доставка
• GitHub Actions для автоматизации сборки, деплоя и выпуска.