Структура сборки Android, Структура сборки Android

Проекты Android содержат множество файлов и структур каталогов, связанных со сборкой, для организации исходного кода и ресурсов вашего приложения. Прежде чем углубиться в детали конфигурации, мы рассмотрим общую структуру и основы того, что входит в каждую часть.

В этой таблице перечислены типичные файлы в проекте Android. Описания каждого файла или каталога включают примечания о том, какой тип контента там находится. Лучшие практики со временем развиваются, и эти описания могут не соответствовать проекту, который вы унаследовали или скачали из Интернета.

При написании файлов сборки используйте декларативный подход; Логика сборки и определения задач должны появляться только в плагинах. Ограничивая логику сборки плагинами, файлы сборки становятся объявлениями данных, которые более удобны для понимания и редактирования. Будущие версии могут включать альтернативную спецификацию, такую ​​как Declarative Gradle , которая предотвратит сборку логики в файлах.

Папка/файл

Использовать

.gradle/

Каталог кэша проекта Gradle

Управляется Gradle и содержит загруженный дистрибутив Gradle, кеш проекта и файлы конфигурации.

Не меняйте файлы в этом каталоге!

.идея/

Метаданные проекта Android Studio

Не меняйте файлы в этом каталоге!

build.gradle(.kts)

Корневой файл сборки

Должен содержать только объявления плагинов для настройки общего пути к классам плагинов для всех подпроектов.

Другой код должен находиться в настройках или файлах сборки на уровне вложенного проекта.

gradle.properties

Конфигурация выполнения Gradle

Содержит свойства Gradle, управляющие аспектами среды сборки Gradle, такими как размер кучи, кэширование и параллельное выполнение.

Здесь определяются некоторые временные свойства Android, чтобы уменьшить количество изменений в AGP DSL по мере их добавления и последующего удаления.

градиент (Linux, Mac)

gradlew.bat (Windows)

Файл -оболочка Gradle

Запускает вашу сборку, загружая дистрибутив Gradle и пересылая ему команды. Это позволяет запускать сборки без предварительной установки Gradle.

локальные.свойства

Конфигурация локального компьютера

Содержит свойства, связанные с локальным компьютером, например расположение Android SDK.

Исключите этот файл из системы контроля версий!

settings.gradle(.kts)

Инициализация сборки Gradle

Содержит глобальную информацию о сборке для инициализации Gradle и конфигурации проекта, например

  • название проекта
  • список подпроектов для включения в эту сборку
  • спецификации репозитория для поиска плагинов и зависимостей
  • импорт внешнего каталога версий.

градиент/

↳ libs.versions.toml

Каталог версий

Определяет переменные для зависимостей и плагинов, используемых внутри вашей сборки. Здесь вы указываете, какие версии вы хотите использовать, обеспечивая согласованность между всеми подпроектами вашего проекта.

↳ обертка/

↳ gradle‑wrapper.jar

Исполняемый файл начальной загрузки Gradle

Загружает указанный дистрибутив Gradle (если он не существует) и запускает его, передавая все аргументы.

↳ gradle‑wrapper.properties

Конфигурация оболочки Gradle

Указывает, где загрузить дистрибутив Gradle (включая версию, которую следует использовать).

приложение/

Каталог подпроекта

Подпроекты (известные как «модули» в Android Studio) могут создавать приложения или библиотеки и могут зависеть от других подпроектов или внешних зависимостей.

app — это обычное имя подпроекта приложения верхнего уровня (но не обязательное имя). Другие подпроекты имеют аналогичные структуры с другими названиями.

Любой каталог может быть подпроектом и должен содержать как минимум файл build.gradle(.kts) и быть включен в сборку с помощью settings.gradle(.kts) .

↳ build.gradle(.kts)

Файл сборки на уровне подпроекта

Объявляет, как построить этот подпроект. Для каждого подпроекта требуется отдельный файл сборки, который должен содержать

  • плагины, использованные для сборки этого подпроекта
  • блоки конфигурации, необходимые плагинам
  • зависимости (библиотеки и платформы), включенные при создании этого подпроекта

Не следует включать логику сборки (например, определения или условия функций Kotlin) или объявления задач в файлы сборки. Логика сборки и задачи должны содержаться только внутри плагинов .

↳ источник/

Исходные файлы подпроекта

Группирует исходные файлы (код приложения и ресурсы) в исходные наборы . main набор исходного кода содержит исходные файлы, общие для всех вариантов , тогда как другие наборы исходного кода содержат исходные файлы, уникальные для варианта.

↳ главная/

Основной исходный набор

Исходный код и ресурсы, общие для всех вариантов сборки. Этот источник действует как основа для всех сборок, а другие, более конкретные наборы исходного кода добавляются к этому источнику или переопределяют его.

↳ Ява/

↳ Котлин/

Исходный код Kotlin и Java

Каталог java может содержать смешанный исходный код Java и Kotlin. Если этот подпроект содержит только код Kotlin, вы можете переименовать этот каталог kotlin.

Android
— это платформа , основанная на Kotlin . Поддерживается исходный код Java , но новые API ориентированы на язык Kotlin. Мы рекомендуем использовать Kotlin для всего нового кода и крупных обновлений существующего кода.

↳ разрешение/

Файлы ресурсов Android

Содержит ресурсы приложения, такие как XML-файлы и изображения. Все приложения используют некоторые базовые ресурсы, такие как значки запуска, но многие из этих ресурсов, такие как макеты и меню, используются только в приложениях на основе представлений. Приложения Compose используют ресурсы String , определенные в этом каталоге.

↳ AndroidManifest.xml

Метаданные приложения Android

Прочитано менеджером пакетов Android, чтобы сообщить системе

  • компоненты, определенные вашим приложением
  • необходимые разрешения
  • совместимость устройств
  • Ограничения платформы Android

↳ AndroidTest/

Набор источников для тестирования устройства

Содержит исходный код для тестов, которые будут запускаться на устройстве или эмуляторе Android. Эти тесты имеют доступ к реальной среде Android, но выполняются медленнее, чем хост-тесты.

Все исходные файлы в main исходном наборе доступны для использования источником в androidTest .

↳ тест/

Набор исходных текстов хост-теста

Содержит исходный код для тестов, которые выполняются локально в JVM, в отличие от тестов, которые выполняются на устройстве. Эти тесты выполняются намного быстрее, чем тесты устройств. Однако любые системные вызовы (включая жизненные циклы, которые запускают ваше приложение) должны быть имитированы, подделаны, заглушены или иным образом смоделированы.

Все исходные файлы в main наборе исходного кода доступны для использования тестируемым источником .

↳ proguard-rules.pro

Правила конфигурации R8

Определяет правила для управления сжатием, оптимизацией и запутыванием приложения. R8 удаляет ненужный код и ресурсы, оптимизирует производительность во время выполнения и дополнительно минимизирует ваш код за счет переименования идентификаторов.

,

Проекты Android содержат множество файлов и структур каталогов, связанных со сборкой, для организации исходного кода и ресурсов вашего приложения. Прежде чем углубиться в детали конфигурации, мы рассмотрим общую структуру и основы того, что входит в каждую часть.

В этой таблице перечислены типичные файлы в проекте Android. Описания каждого файла или каталога включают примечания о том, какой тип контента там находится. Лучшие практики со временем развиваются, и эти описания могут не соответствовать проекту, который вы унаследовали или скачали из Интернета.

При написании файлов сборки используйте декларативный подход; Логика сборки и определения задач должны появляться только в плагинах. Ограничивая логику сборки плагинами, файлы сборки становятся объявлениями данных, которые более удобны для понимания и редактирования. Будущие версии могут включать альтернативную спецификацию, такую ​​как Declarative Gradle , которая предотвратит сборку логики в файлах.

Папка/файл

Использовать

.gradle/

Каталог кэша проекта Gradle

Управляется Gradle и содержит загруженный дистрибутив Gradle, кеш проекта и файлы конфигурации.

Не меняйте файлы в этом каталоге!

.идея/

Метаданные проекта Android Studio

Не меняйте файлы в этом каталоге!

build.gradle(.kts)

Корневой файл сборки

Должен содержать только объявления плагинов для настройки общего пути к классам плагинов для всех подпроектов.

Другой код должен находиться в настройках или файлах сборки на уровне вложенного проекта.

gradle.properties

Конфигурация выполнения Gradle

Содержит свойства Gradle, управляющие аспектами среды сборки Gradle, такими как размер кучи, кэширование и параллельное выполнение.

Здесь определяются некоторые временные свойства Android, чтобы уменьшить количество изменений в AGP DSL по мере их добавления и последующего удаления.

градиент (Linux, Mac)

gradlew.bat (Windows)

Файл -оболочка Gradle

Запускает вашу сборку, загружая дистрибутив Gradle и пересылая ему команды. Это позволяет запускать сборки без предварительной установки Gradle.

локальные.свойства

Конфигурация локального компьютера

Содержит свойства, связанные с локальным компьютером, например расположение Android SDK.

Исключите этот файл из системы контроля версий!

settings.gradle(.kts)

Инициализация сборки Gradle

Содержит глобальную информацию о сборке для инициализации Gradle и конфигурации проекта, например

  • название проекта
  • список подпроектов для включения в эту сборку
  • спецификации репозитория для поиска плагинов и зависимостей
  • импорт внешнего каталога версий.

градиент/

↳ libs.versions.toml

Каталог версий

Определяет переменные для зависимостей и плагинов, используемых внутри вашей сборки. Здесь вы указываете, какие версии вы хотите использовать, обеспечивая согласованность между всеми подпроектами вашего проекта.

↳ обертка/

↳ gradle‑wrapper.jar

Исполняемый файл начальной загрузки Gradle

Загружает указанный дистрибутив Gradle (если он не существует) и запускает его, передавая все аргументы.

↳ gradle‑wrapper.properties

Конфигурация оболочки Gradle

Указывает, где загрузить дистрибутив Gradle (включая версию, которую следует использовать).

приложение/

Каталог подпроекта

Подпроекты (известные как «модули» в Android Studio) могут создавать приложения или библиотеки и могут зависеть от других подпроектов или внешних зависимостей.

app — это обычное имя подпроекта приложения верхнего уровня (но не обязательное имя). Другие подпроекты имеют аналогичные структуры с другими названиями.

Любой каталог может быть подпроектом и должен содержать как минимум файл build.gradle(.kts) и быть включен в сборку с помощью settings.gradle(.kts) .

↳ build.gradle(.kts)

Файл сборки на уровне подпроекта

Объявляет, как построить этот подпроект. Для каждого подпроекта требуется отдельный файл сборки, который должен содержать

  • плагины, использованные для сборки этого подпроекта
  • блоки конфигурации, необходимые плагинам
  • зависимости (библиотеки и платформы), включенные при создании этого подпроекта

Не следует включать логику сборки (например, определения или условия функций Kotlin) или объявления задач в файлы сборки. Логика сборки и задачи должны содержаться только внутри плагинов .

↳ источник/

Исходные файлы подпроекта

Группирует исходные файлы (код приложения и ресурсы) в исходные наборы . main набор исходного кода содержит исходные файлы, общие для всех вариантов , тогда как другие наборы исходного кода содержат исходные файлы, уникальные для варианта.

↳ главная/

Основной исходный набор

Исходный код и ресурсы, общие для всех вариантов сборки. Этот источник действует как основа для всех сборок, а другие, более конкретные наборы исходного кода добавляются к этому источнику или переопределяют его.

↳ Ява/

↳ Котлин/

Исходный код Kotlin и Java

Каталог java может содержать смешанный исходный код Java и Kotlin. Если этот подпроект содержит только код Kotlin, вы можете переименовать этот каталог kotlin.

Android
— это платформа , основанная на Kotlin . Поддерживается исходный код Java , но новые API ориентированы на язык Kotlin. Мы рекомендуем использовать Kotlin для всего нового кода и крупных обновлений существующего кода.

↳ разрешение/

Файлы ресурсов Android

Содержит ресурсы приложения, такие как XML-файлы и изображения. Все приложения используют некоторые базовые ресурсы, такие как значки запуска, но многие из этих ресурсов, такие как макеты и меню, используются только в приложениях на основе представлений. Приложения Compose используют ресурсы String , определенные в этом каталоге.

↳ AndroidManifest.xml

Метаданные приложения Android

Прочитано менеджером пакетов Android, чтобы сообщить системе

  • компоненты, определенные вашим приложением
  • необходимые разрешения
  • совместимость устройств
  • Ограничения платформы Android

↳ AndroidTest/

Набор источников для тестирования устройства

Содержит исходный код для тестов, которые будут запускаться на устройстве или эмуляторе Android. Эти тесты имеют доступ к реальной среде Android, но выполняются медленнее, чем хост-тесты.

Все исходные файлы в main исходном наборе доступны для использования источником в androidTest .

↳ тест/

Набор исходных текстов хост-теста

Содержит исходный код для тестов, которые выполняются локально в JVM, в отличие от тестов, которые выполняются на устройстве. Эти тесты выполняются намного быстрее, чем тесты устройств. Однако любые системные вызовы (включая жизненные циклы, которые запускают ваше приложение) должны быть имитированы, подделаны, заглушены или смоделированы иным образом.

Все исходные файлы в main наборе исходного кода доступны для использования тестируемым источником .

↳ proguard-rules.pro

Правила конфигурации R8

Определяет правила для управления сжатием, оптимизацией и запутыванием приложения. R8 удаляет ненужный код и ресурсы, оптимизирует производительность во время выполнения и дополнительно минимизирует ваш код за счет переименования идентификаторов.