Добавление нескольких папок ресурсов в Android-приложение

В крупным проектах существует распространённая проблема, когда папка с ресурсами растёт и растёт, из-за чего её становится сложно организовать и содержать в порядке. Однако существует очень простой способ решения проблемы: создание большего числа папок res. Таким образом, можно разделить ресурсы по разным категориям, после чего станет намного легче отслеживать ресурсы, которые вы создали.

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

Как настроить несколько папок ресурсов

Gradle — очень мощный инструмент. Он имеет множество конфигураций по умолчанию, поэтому нам не нужно переписывать их каждый раз, когда мы создаём проект. Например, папка ресурсов всегда находится по умолчанию в src/main/res. Но мы можем изменить это, воспользовавшись секцией sourceSets в файле build.gradle модуля приложения.

Примечание: прежде чем приступить к добавлению каталогов в Gradle, следует создать их вручную.

android {
  ...
  sourceSets {
    main.java.srcDirs = ['...']
    main.assets.srcDirs = ['...']
    main.res.srcDirs = ['...']
    test.java.srcDirs = ['...']
  }
}

Как вы видите, можно определить не только каталог res, но java, assets и каталоги с тестами. Если вместо того, чтобы задать другой каталог по умолчанию, вы хотите добавить ещё один, вы можете сделать это следующим образом:

sourceSets {
  main.java.srcDirs += '...'
  main.assets.srcDirs += '...'
  main.res.srcDirs += '...'
  test.java.srcDirs += '...'
}

Как можно догадаться, эти строки просто добавят указанную папку к наборам папок для данного типа.  Добавить три новые папки res можно следующим образом:

sourceSets {
main.res.srcDirs += 'src/main/res-mobile'
main.res.srcDirs += 'src/main/res-tv'
main.res.srcDirs += 'src/main/res-android-tv'
}

Или если вы хотите записать всё в одну строку:

sourceSets {
  main.res.srcDirs += ['src/main/res-mobile', 'src/main/res-tv', 'src/main/res-android-tv']
}

В результате мы получаем следующее:

Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *