Студия Android объединяет наборы ресурсов - PullRequest
0 голосов
/ 29 августа 2018

У меня есть проект с несколькими вариантами. Все ресурсы определены в src / main, а некоторые переопределяются в / src / [flavour_name]. Это работало просто отлично.

Однако теперь мне нужно настроить варианты так, чтобы они принадлежали одной из двух (или более, в будущем) разных групп клиентов. Мне нужно, чтобы ресурсы были объединены таким образом (где -> означает «переопределяется»):

основной набор источников -> группа клиентов -> аромат

Я пытался использовать исходные наборы в build.gradle следующим образом:

sourceSets
{
    NiceFlav.res.srcDirs = ['src/main/res', 'src/CLIENT_GROUP_1/res', 'src/NiceFlav/res']
}

надеясь, что ресурсы в CLIENT_GROUP_1 будут переопределять ресурсы в main, где они существуют, и, наконец, любые ресурсы, которые могут или не могут существовать в NiceFlav, будут переопределять что-либо в main или CLIENT_GROUP_1. Но, к сожалению, когда дело доходит до сборки, gradle просто выплевывает ошибки о любом ресурсе, который дублируется в CLIENT_GROUP_1 и / или NiceFlav.

Как настроить gradle так, чтобы ресурсы были объединены требуемым образом?

(изменить) Использование размеров, по крайней мере, в предлагаемой конфигурации по умолчанию, не работает; если я создаю несколько измерений, я получаю структуры каталогов, например:

src/Main
src/NiceFlavor
src/NiceFlavorCLIENT_GROUP_1
src/NiceFlavorCLIENT_GROUP_2
src/OtherFlavor
src/OtherFlavorCLIENT_GROUP_1 
src/OtherFlavorCLIENT_GROUP_2
...

и мне нужно было бы поместить все ресурсы для CLIENT_GROUP_1 и CLIENT_GROUP_2 в каждую папку вариантов

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

src/Main
src/CLIENT_GROUP_1
src/CILENT_GROUP_2
src/NiceFlavor
src/OtherFlavor
...

Сборка должна затем взять все ресурсы из Main, переопределить любые ресурсы, найденные в CLIENT_GROUP_1 или CLIENT_GROUP_2 (в зависимости от того, к какой группе принадлежит аромат), а затем, наконец, переопределить все ресурсы, найденные в отдельном каталоге флейтов.

примечание: вариант будет принадлежать только одному CLIENT_GROUP, поэтому нет необходимости в нескольких вариантах сборки для каждого варианта, кроме стандартной отладки / выпуска.

1 Ответ

0 голосов
/ 29 августа 2018

Я думаю, вы можете решить эту проблему, используя dimensions

Вот статья на эту тему: https://proandroiddev.com/advanced-android-flavors-part-2-enter-flavor-dimensions-4ad7f486f6

Как пример:

client1Dev

client1Staging

client1Production

client2Dev

client2Staging

client2Production

Здесь более длинное введение в сети разработчиков: https://developer.android.com/studio/build/build-variants

надеюсь, это поможет

...