Android / Gradle: почему можно несколько раз объявить файл values.XML? - PullRequest
0 голосов
/ 10 февраля 2019

Предварительные требования

Я создал приложение, в котором используется следующая древовидная структура (build.gradle уровня приложения изменяется в соответствии с документацией - вы можете найти этиизменения в конце этого вопроса):

  • app
    • src
      • main
        • my_theme
          • связок
            • a_bundle
              • папка для рисования, папка значений, папка макета и т. Д.
          • global
            • папка для рисования, значенияпапка, макет папки и т. д.

Существует несколько комплектов,Все каталоги значений (по одному на пакет и один в глобальной папке) содержат файл strings.XML. Мое приложение компилируется и выполняется правильно .

Однако в документации Android указано, что:

Примечание. Если два или более каталога ресурсов содержат один и тот же файл ресурсаво время слияния ресурсов возникает ошибка.

(https://developer.android.com/studio/write/add-resources#change_your_resource_directory)

Вопрос

Итак, поскольку я использую тот же файл strings.xml, почему нет ошибкипоказано? (разумеется, содержимое этих strings.xml файлов изменяется в зависимости от каталога, в котором они находятся - либо каталога их комплекта, либо глобального каталога)

на уровне приложения build.gradle

Чтобы заставить его работать (например, чтобы Android Resolver мог распознавать символы), я добавил следующие строки:

android {
    sourceSets {
        main {
            res.srcDirs = [
                'src/main/bestheme/global',
                'src/main/bestheme/bundles/a_bundle'
            ]
        }
    }
}

1 Ответ

0 голосов
/ 10 февраля 2019

strings.xml (и любые ресурсы values) отличаются в том смысле, что идентификаторы ресурсов не основаны на именах файлов, а фактически указаны внутри файлов.

Объединение ресурсов происходит на уровне идентификатора ресурса.Если в идентификаторах ресурсов на том же уровне набора источников нет конфликтов, то слияние работает нормально.

Примечания к документации действительны для типов ресурсов, в которых идентификатор ресурса получен из имени файла.Например, макет или рисованные ресурсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...