Быстрый разбор структуры Android‑проекта
Кратко: корневая папка управляет сборкой (Gradle), модуль app содержит код и ресурсы (src/, res/, AndroidManifest.xml), а папки .gradle, build и .idea — служебные. Ниже — что где искать и как действовать при входе в чужой проект.
Корневая структура и Gradle
- gradle/ — wrapper (gradle-wrapper.jar, gradle-wrapper.properties). Позволяет запускать ./gradlew без локальной установки Gradle.
- gradlew / gradlew.bat — скрипты запуска Gradle на Unix/Windows.
- settings.gradle(.kts) — перечисление модулей (include ':app', ':feature:auth' и т.д.). Первый файл, который помогает понять модульную структуру.
- build.gradle(.kts) (корневой) — глобальные плагины, версии плагинов, репозитории и classpath для плагинов (например, com.android.tools.build).
- local.properties — путь к SDK (локальный, обычно в .gitignore).
- .gradle/ — кэш сборки, не трогать вручную.
При входе в проект сначала откройте settings.gradle(.kts) и корневой build.gradle — они показывают, какие модули и плагины используются.
Модуль app: код, ресурсы и сборка
app/ — основной модуль приложения. Быстрый чек-лист того, что важно:
- app/src/main/java или kotlin — исходники (Activity, Fragment, ViewModel, репозитории). Пакеты по схеме com.example.app.
- app/src/main/res — ресурсы:
- drawable/ — растровые и векторные изображения;
- mipmap/ — иконки приложения для launcher;
- layout/ — XML-макеты (activity_main.xml и т.д.);
- values/ — strings.xml, colors.xml, styles.xml, themes.xml;
- menu/, raw/, xml/ — прочие ресурсы (меню, бинарные файлы, конфиги).
- AndroidManifest.xml — права, компоненты, entry point.
- app/src/test — unit-тесты (JVM).
- app/src/androidTest — инструментальные тесты (эмулятор/устройство).
- app/build.gradle(.kts) — module-level конфигурация: compileSdk, minSdk, targetSdk, dependencies, proguard/r8 настройки.
- proguard-rules.pro — правила обфускации для релизных сборок.
- google-services.json — только если используются Firebase (держите вне общедоступных репозиториев).
build/ в модуле — временные и результатные артефакты (APK/AAB, intermediates). Можно удалять при необходимости — ./gradlew clean.
Скрытые и служебные файлы, настройка IDE и безопасность
- .idea/ — настройки Android Studio (run configurations, структуры модулей). Обычно не хранить полностью в репозитории — используйте .gitignore.
- .gitignore — правило исключений (build/, .idea/, local.properties и т.д.).
- key.properties — данные подписи (storeFile, пароли). Никогда не коммитить!
- gradle.properties — глобальные параметры (useAndroidX, kotlin options).
- captures/ — профили из Android Profiler.
Не коммитьте ключи, пароли и google-services.json в публичные репозитории — это источник утечек и проблем с безопасностью.
Лучшие практики организации кода
- Для больших проектов разделяйте модули: app, domain, data, feature-XYZ. Такое разделение упрощает сборку и независимое тестирование.
- Структурируйте пакеты по ответственности: ui (screens, components), data (remote, local), di (инъекции), model.
- Для Jetpack Compose держите composables в отдельной папке и храните состояния UI в viewmodel.
- Используйте R8 и Android App Bundle для уменьшения размера релиза.
Частые ошибки
- Ошибка: несовместимые версии Gradle-плагина — проверьте корневой build.gradle.
- Ошибка: закоммиченные локальные файлы (local.properties, key.properties) — приводит к раскрытию секретов.
- Проблема: дублирование ресурсов в разных density-папках — увеличивает размер APK.
- Проблема: неправильный packageName в AndroidManifest или applicationId в build.gradle — конфликт при подписи и релизе.
FAQ
- Как быстро понять, какие модули в проекте? — Откройте settings.gradle(.kts): там перечислены все include.
- Где лежат ключи подписи приложения? — Обычно key.properties или в CI (рекомендуется хранить в безопасном хранилище, не в репозитории).
- Что удалять при проблемах со сборкой? — Выполните ./gradlew clean и удалите папки .gradle/ и build/ в корне и в модулях, затем ./gradlew assembleDebug.
- Как понять, что ресурс используется? — Android Studio подсвечивает неиспользуемые ресурсы; для точного анализа — инструменты типа APK Analyzer на собранном AAB/APK.
С этой картой вы сможете за 5–10 минут сориентироваться в любом Android‑проекте и быстро приступить к работе.