Ресурсы приложения, такие как растровые изображения и макеты, организованы в каталоги определенного типа внутри каталога res/
каждого модуля. Вы также можете добавить альтернативные версии каждого файла, оптимизированные для различных конфигураций устройств, например версию растрового изображения с высоким разрешением для экранов с высокой плотностью.
Android Studio помогает добавлять новые и альтернативные ресурсы несколькими способами, в зависимости от типа ресурса, который вы хотите добавить. На этой странице описывается, как добавить базовые файлы ресурсов, как изменить расположение ресурсов и как работает объединение ресурсов.
Подробную информацию о том, как создавать определенные типы ресурсов, см. на следующих страницах:
- Чтобы добавить файлы макета, см. раздел Создание пользовательского интерфейса с помощью редактора макетов .
- Чтобы добавить строковые файлы, см. раздел Локализация пользовательского интерфейса с помощью редактора переводов .
- Чтобы добавить растровые изображения, см. раздел Создание значков приложений с помощью Image Asset Studio .
- Чтобы добавить файлы SVG, см. раздел Добавление векторной графики разной плотности .
Сведения о том, как ссылаться на ресурсы из кода приложения, см. в разделе Обзор ресурсов приложения .
Добавьте файл ресурсов XML
Хотя ссылки на предыдущие страницы описывают рабочие процессы, настроенные для каждого типа ресурса, вы можете добавить любой файл ресурсов XML, выполнив следующие действия:
Щелкните модуль целевого приложения в окне «Проект» в представлении «Android» или «Проект» .
- Выберите «Файл» > «Создать» > «Файл ресурсов Android» .
- Заполните детали в диалоге:
- Имя файла : введите имя XML-файла (суффикс
.xml
не требуется). - Тип ресурса : выберите тип ресурса, который вы хотите создать.
- Корневой элемент : если применимо, выберите корневой элемент XML для файла. Некоторые типы ресурсов поддерживают только один тип корневого элемента. В зависимости от выбранного типа ресурса это может быть недоступно для редактирования.
- Исходный набор : выберите исходный набор , в котором вы хотите сохранить файл.
- Имя каталога . Имя каталога должно соответствовать типу ресурса и квалификаторам конфигурации. Не редактируйте это, если вы не хотите вручную добавлять квалификаторы конфигурации к имени каталога (вместо этого используйте квалификаторы «Доступно» ).
- Доступные квалификаторы . Вместо того, чтобы вручную включать квалификаторы конфигурации в имя каталога, вы можете добавить их, выбрав квалификатор из списка и нажав «Добавить» . .
- Имя файла : введите имя XML-файла (суффикс
- Добавив все необходимые квалификаторы, нажмите «ОК» .
Совет: Чтобы открыть упрощенную версию диалогового окна «Новый файл ресурса» , специфичную для типа ресурса, который вы хотите добавить, щелкните правой кнопкой мыши существующий каталог ресурсов в папке res и выберите «Создать» > «файл ресурсов type-name .
Встроенные сложные XML-ресурсы
Для некоторых сложных ресурсов требуется несколько файлов ресурсов XML. Например, анимированный векторный рисуемый объект имеет векторный рисуемый объект и объект анимации и требует как минимум трех XML-файлов.
В этом примере вы можете создать и сохранить три отдельных XML-файла, если вам понадобится повторно использовать один или несколько из них. Но если файлы XML используются только для этого анимированного векторного изображения, вместо этого вы можете использовать формат встроенных ресурсов, предоставляемый в инструменте упаковки ресурсов Android (AAPT). С помощью AAPT вы можете определить все три ресурса в одном XML-файле. Дополнительные сведения см. в разделе Встроенные сложные ресурсы XML .
Добавить каталог ресурсов
Чтобы добавить новый каталог ресурсов, выполните следующие действия:
Щелкните целевой модуль приложения в окне проекта .
- Выберите «Файл» > «Создать» > «Каталог ресурсов Android» .
- Заполните данные в диалоге:
- Имя каталога . Имя каталога должно соответствовать типу ресурса и комбинации квалификаторов конфигурации. Не редактируйте это, если вы не хотите вручную добавлять квалификаторы конфигурации к имени каталога (вместо этого используйте квалификаторы «Доступно» ).
- Тип ресурса: выберите тип ресурса, который вы хотите, чтобы каталог содержал.
- Исходный набор: выберите исходный набор, в котором вы хотите создать каталог.
- Доступные квалификаторы. Вместо того, чтобы вручную включать квалификаторы конфигурации в имя каталога, вы можете добавить их, выбрав квалификатор из списка и нажав «Добавить» . .
- Добавив все необходимые квалификаторы, нажмите «ОК» .
Измените каталог ресурсов
По умолчанию ваши ресурсы расположены в module-name /src/ source-set-name /res/
. Например, ресурсы для основного набора исходного кода вашего модуля находятся в src/main/res/
, а ресурсы для набора исходного кода отладки — в src/debug/res/
.
Однако вы можете изменить эти пути на любое другое место (относительно файла build.gradle
) с помощью свойства res.srcDirs
в блоке sourceSets
. Например:
классный
android { sourceSets { main { res.srcDirs = ['resources/main'] } debug { res.srcDirs = ['resources/debug'] } } }
Котлин
android { sourceSets { getByName("main") { res.srcDirs("resources/main") } getByName("debug") { res.srcDirs("resources/debug") } } }
Вы также можете указать несколько каталогов ресурсов для одного исходного набора, а затем инструменты сборки объединят их вместе. Например:
классный
android { sourceSets { main { res.srcDirs = ['res1', 'res2'] } } }
Котлин
android { sourceSets { main { res.srcDirs("res1", "res2") } } }
Подробнее читайте про исходные наборы .
Объединение ресурсов
Ресурсы в конечном файле приложения могут поступать из трех источников:
- Основной исходный набор (обычно находится в
src/main/res/
) - Сборка наборов исходных текстов вариантов
- Библиотеки Android (AAR)
Когда все ресурсы из каждого исходного набора или библиотеки уникальны, все они добавляются в окончательное приложение. Ресурс считается уникальным, если его имя файла уникально как в пределах каталога типа ресурса , так и в квалификаторе ресурса (если он определен).
Если существует две или более совпадающие версии одного и того же ресурса, в окончательное приложение включается только одна версия. Инструменты сборки выбирают, какую версию сохранить, в следующем порядке приоритета (наивысший приоритет слева):
вариант сборки > тип сборки > вариант продукта > основной набор исходного кода > зависимости библиотеки
Например, если основной исходный набор содержит:
-
res/layout/example.xml
-
res/layout-land/example.xml
И тип отладочной сборки содержит:
-
res/layout/example.xml
Затем окончательное приложение включает res/layout/example.xml
из типа отладочной сборки и res/layout-land/example.xml
из основного набора исходного кода.
Однако если в вашей конфигурации сборки указано несколько папок ресурсов для данного набора исходных текстов и между этими источниками возникают конфликты, возникает ошибка и слияние завершается неудачей, поскольку каждый каталог ресурсов имеет одинаковый приоритет.