Прямые ссылки на публичные уроки для быстрого старта и стабильной индексации lesson-страниц.
В этом уроке разберем все файлы проекта, в названиях которых встречается слово gradle. Понимание структуры проекта — шаг к уверенному пониманию подкапотных процессов и +10 к уверенности на собеседовании.
Gradle — это система для сборки проектов. Конечная цель разработки — APK файл, который устанавливается на устройство. В нём упакованы:
Всё это подписано специальной подписью, удостоверяющей факт владения APK.
Для сборки этого файла используется с десяток утилит: компилятор Kotlin-кода в байткод, оптимизаторы и обфускаторы (удаляют неиспользуемый код, скрывают реальные названия классов и переменных), инструменты для преобразования и "шринкинга" ресурсов.
Gradle запускает подключённые плагины — например, androidApplication, kotlinAndroid, а также kotlinx serialization, который автоматически преобразует объекты в JSON и обратно.
Итого: Gradle берёт все нужные утилиты и вызывает их в правильной последовательности с правильными параметрами. Порядок важен — например, нет смысла компилировать Kotlin-код раньше, чем сгенерированы классы для сериализации JSON.
Папка .gradle — скрытая (папки с точкой в начале скрыты в ОС по умолчанию). Здесь хранится версия gradle и его кэш. Это автоматически сгенерированная папка, вручную туда заходить не нужно.
Gradle конфигурируется несколькими файлами. Важно понимать разницу между файлами с расширением .gradle и .gradle.kts.
build.gradle / settings.gradle — написаны на Groovy, динамическом JVM-языке. Исторически использовался в Android-проектах для конфигурации.build.gradle.kts / settings.gradle.kts — используют Kotlin DSL (Kotlin Script). Это более современный подход.Сейчас происходит миграция с Groovy на Kotlin DSL. Начиная с Android Studio Giraffe все файлы настроек поставляются с расширением .kts. Подробнее о миграции — в документации Google.
Общий файл настроек gradle-проекта. Здесь указывается имя проекта и перечисляются все модули (подпроекты). В нашем случае добавлен один модуль app. Также здесь задаются репозитории, из которых будут загружаться плагины и зависимости:
pluginManagement — определяет репозитории для загрузки плагинов.dependencyResolutionManagement — управляет стратегиями разрешения зависимостей: общие репозитории, разрешение конфликтов версий и т.д.На начальном этапе обучения в эти настройки лезть, как правило, не придётся.
Файл, в котором в формате ключ = значение хранятся дополнительные параметры для gradle. Например, kotlin.code.style — параметр проверки стиля кода при сборке. Для гибкой проверки стиля обычно применяются отдельные утилиты, например Detekt.
gradlew и gradlew.bat — два скрипта-обёртки (gradle wrapper). .bat — для Windows, второй — для Linux и macOS.
Gradle wrapper позволяет собирать проект без установки Gradle в систему. Если на машине нет Gradle или установлена несовместимая версия, gradlew автоматически скачает нужную версию, опираясь на gradle-wrapper.properties, и применит её для сборки.
Android Studio использует gradlew неявно. Но если понадобится запускать gradle-таски вручную через терминал или настраивать CI/CD — gradlew упростит жизнь.
Файлов build.gradle.kts в проекте два.
Корневой файл содержит список плагинов, используемых во всём проекте. Плагины подключаются через функцию alias, которая принимает notation — конструкцию с идентификатором плагина и его версией. Версии хранятся в файле-каталоге по пути libs.plugins. Это позволяет использовать одну версию для нескольких плагинов из одного семейства и централизованно управлять обновлениями.
При наведении на версию Android Studio сообщит о доступных обновлениях. Обновляйтесь осторожно, особенно мажорные версии — после синхронизации проверяйте работоспособность всех модулей.
Файл модуля app содержит настройки конкретного приложения:
Список плагинов подпроекта:
com.android.application — базовый Android Gradle плагин. Отвечает за компиляцию, управление ресурсами и упаковку в APK/AppBundle.org.jetbrains.kotlin.android — плагин JetBrains для поддержки Kotlin в Android-проектах.Блок android — конфигурация Android-плагина:
namespace — уникальный package name проекта.compileSdk — версия Android SDK для компиляции.defaultConfig — конфигурация по умолчанию: applicationId, версии, minSdk, targetSdk.buildTypes — варианты сборки: debug (с отладочными инструментами) и release (оптимизирован для пользователя).compileOptions / kotlinOptions — параметры компиляции Java и Kotlin.buildFeatures — включение/отключение функций сборки, например ViewBinding.Блок dependencies — список библиотек проекта. Gradle автоматически загружает их и подготавливает к использованию. Два основных типа зависимостей:
implementation — библиотеки, включаемые в итоговый APK/AppBundle и доступные во время выполнения (например, androidx.core:core-ktx).testImplementation / androidTestImplementation — зависимости только для тестирования, в конечное приложение не включаются (например, junit, espresso-core).Версии всех зависимостей хранятся централизованно в каталоге версий (файл libs.versions.toml), что исключает необходимость редактировать их в каждом модуле отдельно.
Скрытая папка .idea хранит настройки, специфичные для Android Studio: автоформатирование, кэши, настройки VCS и т.д. В большинстве случаев студия может сгенерировать эти настройки сама на основе gradle-конфига.
Папку .idea принято добавлять в .gitignore — ценной информации она не содержит, а устаревший конфиг студии при открытии старого проекта может вызвать проблемы.
Мы рассмотрели основные gradle-файлы, встречающиеся в большинстве Android-проектов. В реальных проектах также можно встретить конфиги CI/CD, detekt, lint и другие специфичные настройки — с ними вы разберётесь по мере накопления опыта. В следующих уроках двигаемся дальше по новым технологиям.