Проекты 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 и конфигурации проекта, например
|
градиент/ | |
↳ libs.versions.toml | Определяет переменные для зависимостей и плагинов, используемых внутри вашей сборки. Здесь вы указываете, какие версии вы хотите использовать, обеспечивая согласованность между всеми подпроектами вашего проекта. |
↳ обертка/ | |
↳ gradle‑wrapper.jar | Исполняемый файл начальной загрузки Gradle Загружает указанный дистрибутив Gradle (если он не существует) и запускает его, передавая все аргументы. |
↳ gradle‑wrapper.properties | Конфигурация оболочки Gradle Указывает, где загрузить дистрибутив Gradle (включая версию, которую следует использовать). |
приложение/ | Подпроекты (известные как «модули» в Android Studio) могут создавать приложения или библиотеки и могут зависеть от других подпроектов или внешних зависимостей. |
↳ build.gradle(.kts) | Файл сборки на уровне подпроекта Объявляет, как построить этот подпроект. Для каждого подпроекта требуется отдельный файл сборки, который должен содержать
Не следует включать логику сборки (например, определения или условия функций Kotlin) или объявления задач в файлы сборки. Логика сборки и задачи должны содержаться только внутри плагинов . |
↳ источник/ | Исходные файлы подпроекта Группирует исходные файлы (код приложения и ресурсы) в исходные наборы . |
↳ главная/ | Основной исходный набор Исходный код и ресурсы, общие для всех вариантов сборки. Этот источник действует как основа для всех сборок, а другие, более конкретные наборы исходного кода добавляются к этому источнику или переопределяют его. |
↳ Ява/ ↳ Котлин/ | Исходный код Kotlin и Java Каталог |
↳ разрешение/ | Содержит ресурсы приложения, такие как XML-файлы и изображения. Все приложения используют некоторые базовые ресурсы, такие как значки запуска, но многие из этих ресурсов, такие как макеты и меню, используются только в приложениях на основе представлений. Приложения Compose используют ресурсы String , определенные в этом каталоге. |
↳ AndroidManifest.xml | Прочитано менеджером пакетов Android, чтобы сообщить системе
|
↳ AndroidTest/ | Набор источников для тестирования устройства Содержит исходный код для тестов, которые будут запускаться на устройстве или эмуляторе Android. Эти тесты имеют доступ к реальной среде Android, но выполняются медленнее, чем хост-тесты. |
↳ тест/ | Набор исходных текстов хост-теста Содержит исходный код для тестов, которые выполняются локально в JVM, в отличие от тестов, которые выполняются на устройстве. Эти тесты выполняются намного быстрее, чем тесты устройств. Однако любые системные вызовы (включая жизненные циклы, которые запускают ваше приложение) должны быть имитированы, подделаны, заглушены или иным образом смоделированы. Все исходные файлы в |
↳ proguard-rules.pro | Определяет правила для управления сжатием, оптимизацией и запутыванием приложения. 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 и конфигурации проекта, например
|
градиент/ | |
↳ libs.versions.toml | Определяет переменные для зависимостей и плагинов, используемых внутри вашей сборки. Здесь вы указываете, какие версии вы хотите использовать, обеспечивая согласованность между всеми подпроектами вашего проекта. |
↳ обертка/ | |
↳ gradle‑wrapper.jar | Исполняемый файл начальной загрузки Gradle Загружает указанный дистрибутив Gradle (если он не существует) и запускает его, передавая все аргументы. |
↳ gradle‑wrapper.properties | Конфигурация оболочки Gradle Указывает, где загрузить дистрибутив Gradle (включая версию, которую следует использовать). |
приложение/ | Подпроекты (известные как «модули» в Android Studio) могут создавать приложения или библиотеки и могут зависеть от других подпроектов или внешних зависимостей. |
↳ build.gradle(.kts) | Файл сборки на уровне подпроекта Объявляет, как построить этот подпроект. Для каждого подпроекта требуется отдельный файл сборки, который должен содержать
Не следует включать логику сборки (например, определения или условия функций Kotlin) или объявления задач в файлы сборки. Логика сборки и задачи должны содержаться только внутри плагинов . |
↳ источник/ | Исходные файлы подпроекта Группирует исходные файлы (код приложения и ресурсы) в исходные наборы . |
↳ главная/ | Основной исходный набор Исходный код и ресурсы, общие для всех вариантов сборки. Этот источник действует как основа для всех сборок, а другие, более конкретные наборы исходного кода добавляются к этому источнику или переопределяют его. |
↳ Ява/ ↳ Котлин/ | Исходный код Kotlin и Java Каталог |
↳ разрешение/ | Содержит ресурсы приложения, такие как XML-файлы и изображения. Все приложения используют некоторые базовые ресурсы, такие как значки запуска, но многие из этих ресурсов, такие как макеты и меню, используются только в приложениях на основе представлений. Приложения Compose используют ресурсы String , определенные в этом каталоге. |
↳ AndroidManifest.xml | Прочитано менеджером пакетов Android, чтобы сообщить системе
|
↳ AndroidTest/ | Набор источников для тестирования устройства Содержит исходный код для тестов, которые будут запускаться на устройстве или эмуляторе Android. Эти тесты имеют доступ к реальной среде Android, но выполняются медленнее, чем хост-тесты. |
↳ тест/ | Набор исходных текстов хост-теста Содержит исходный код для тестов, которые выполняются локально в JVM, в отличие от тестов, которые выполняются на устройстве. Эти тесты выполняются намного быстрее, чем тесты устройств. Однако любые системные вызовы (включая жизненные циклы, которые запускают ваше приложение) должны быть имитированы, подделаны, заглушены или смоделированы иным образом. Все исходные файлы в |
↳ proguard-rules.pro | Определяет правила для управления сжатием, оптимизацией и запутыванием приложения. R8 удаляет ненужный код и ресурсы, оптимизирует производительность во время выполнения и дополнительно минимизирует ваш код за счет переименования идентификаторов. |