Добавьте ресурсы приложения

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

Android Studio позволяет добавлять новые и альтернативные ресурсы несколькими способами, в зависимости от типа добавляемого ресурса. На этой странице описано, как добавлять базовые файлы ресурсов, как изменять расположение ресурсов и как работает слияние ресурсов.

В Jetpack Compose вы определяете пользовательский интерфейс на Kotlin, а не с помощью XML-макетов. Однако вы по-прежнему используете каталог res/ для хранения статических ресурсов уровня приложения, таких как значки, шрифты и переводы. Чтобы узнать, как получить доступ к этим ресурсам в ваших компонуемых функциях, см. раздел «Ресурсы в Compose» .

Подробную информацию о создании конкретных типов ресурсов см. на следующих страницах:

Информацию о том, как ссылаться на ресурсы из кода вашего приложения, см. в разделе «Обзор ресурсов приложения» .

Добавьте XML-файл ресурсов.

Хотя ссылки на предыдущих страницах описывают рабочие процессы, адаптированные к каждому типу ресурсов, вы можете добавить любой XML-файл ресурса, выполнив следующие шаги:

  1. В окне «Проект» выберите целевой модуль приложения в режиме просмотра Android или «Проект» .
  2. Выберите Файл > Создать > Файл ресурсов Android .

    Рисунок 1. Диалоговое окно «Создать новый файл ресурсов» .

  3. Заполните необходимые данные в диалоговом окне:
    • Имя файла : Введите имя для XML-файла (расширение .xml не требуется).
    • Тип ресурса : Выберите тип ресурса, который вы хотите создать.
    • Корневой элемент : Если применимо, выберите корневой XML-элемент для файла. Некоторые типы ресурсов поддерживают только один тип корневого элемента. В зависимости от выбранного типа ресурса, он может быть недоступен для редактирования.
    • Набор источников : Выберите набор источников , куда вы хотите сохранить файл.
    • Имя каталога : Имя каталога должно соответствовать типу ресурса и параметрам конфигурации. Не изменяйте это поле, если только вы не хотите вручную добавить параметры конфигурации к имени каталога (вместо этого используйте параметр «Доступные параметры »).
    • Доступные квалификаторы : Вместо того чтобы вручную добавлять квалификаторы конфигурации в имя каталога, вы можете сделать это, выбрав квалификатор из списка и нажав кнопку «Добавить». .
  4. После того, как вы добавите все необходимые параметры, нажмите кнопку ОК .

Встроенные сложные XML-ресурсы

Для некоторых сложных ресурсов требуется несколько XML-файлов. Например, хотя Compose обладает мощными API для анимации , вам может потребоваться использовать анимированный векторный рисунок, который содержит объект векторного рисунка и объект анимации и требует как минимум три XML-файла.

В этом примере вы можете создать и сохранить три отдельных XML-файла, если вам нужно повторно использовать один или несколько из них. Но если XML-файлы используются только для этого анимированного векторного изображения, вы можете вместо этого использовать формат встроенных ресурсов, предоставляемый инструментом упаковки ресурсов Android (AAPT). С помощью AAPT вы можете определить все три ресурса в одном XML-файле. Для получения дополнительной информации см. раздел «Встроенные сложные XML-ресурсы» .

Добавить каталог ресурсов

Чтобы добавить новый каталог ресурсов, выполните следующие действия:

  1. В окне «Проект» щелкните целевой модуль приложения.
  2. Выберите Файл > Создать > Каталог ресурсов Android .

    Рисунок 2. Диалоговое окно «Создать каталог ресурсов» .

  3. Заполните необходимые данные в диалоговом окне:
    • Имя каталога : Имя каталога должно соответствовать типу ресурса и комбинации конфигурационных квалификаторов. Не изменяйте это поле, если не хотите добавлять конфигурационные квалификаторы к имени каталога вручную (вместо этого используйте квалификатор «Доступные »).
    • Тип ресурса: Выберите тип ресурса, который должен содержаться в каталоге.
    • Набор источников: Выберите набор источников, в который вы хотите переместить каталог.
    • Доступные квалификаторы: Вместо того чтобы вручную добавлять квалификаторы конфигурации в имя каталога, вы можете сделать это, выбрав квалификатор из списка и нажав кнопку «Добавить». .
  4. После того, как вы добавите все необходимые параметры, нажмите кнопку ОК .

Измените каталог ресурсов.

По умолчанию ваши ресурсы находятся в 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/values/strings.xml
  • res/values-es/strings.xml

А тип отладочной сборки содержит:

  • res/values/strings.xml

В итоге в итоговое приложение будут включены файлы res/values/strings.xml из отладочной сборки и res/values-es/strings.xml из основного набора исходных файлов.

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