Быстрый разбор структуры 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‑проекте и быстро приступить к работе.