В приложении Multi Flavor, как избежать дублирования ресурсов

Если у меня есть 3 вкуса, флейвор1, флейвор2 и флейвор3, у каждого аромата есть версии Dev, Pat и Prod «под-ароматы», которые имеют разные параметры, но каждый основной аромат имеет разные ресурсы.

Итак, у меня теперь 9 разных вкусов, но только 3 разных папки ресурсов). Я хотел бы, чтобы одни и те же «подарки» использовали одни и те же ресурсы.

Как я могу это сделать? Я видел в документации о FlavorDimensions, но не знаю, как настроить папку ресурсов.

На данный момент я использую что-то вроде

sourceSets {

   flavor1_dev{
            res.srcDir  'src/flavor1/res'
        }

   flavor1_prod{
            res.srcDir  'src/flavor1/res'
        }

   flavor2_dev{
            res.srcDir  'src/flavor2/res'
        }

   flavor2_prod{
            res.srcDir  'src/flavor2/res'
        }

}    

person Kenenisa Bekele    schedule 08.02.2016    source источник
comment
Да, это работает, но я хотел бы знать, как использовать flavorDimensions или есть ли другой способ сделать это.   -  person Kenenisa Bekele    schedule 08.02.2016
comment
Вы можете исключить ресурсы из разных сборок вкусов, проверьте это title="как исключить папку res из вариантов сборки gradle"> stackoverflow.com/questions/33263567/   -  person lxknvlk    schedule 09.08.2017


Ответы (2)


Вам нужны ароматы Gradle, например. flavor1, flavor2 и т. д., а также типы сборки, такие как dev, prod и т. д.

См. пример: http://developer.android.com/tools/building/configuring-gradle.html и http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Sourcesets-and-Dependencies

Например:

android.sourceSets.flavor1Debug Местоположение src/flavor1Debug/

android.sourceSets.flavor1Release Местоположение src/flavor1Release/

android.sourceSets.flavor2Debug Местоположение src/flavor2Debug/

android.sourceSets.flavor2Release Местоположение src/flavor2Release/

Кроме того, этот вопрос очень похож на Как я могу указать исходные наборы buildType для каждого вкуса?

person SteveEdson    schedule 08.02.2016
comment
Любая идея о том, как это сделать с flavorDimension ? tools.android.com/ техническая документация/новая-система-сборки/ - person Kenenisa Bekele; 08.02.2016

Просто поместите общие ресурсы в main/res. Все ресурсы в main/res будут переопределены ароматом. Например, если вы хотите переопределить добавление строковых ресурсов,

основной строковый файл: /src/main/res/values/strings.xml

<resources>
    <string name="app_name">Main</string>
    <string name="app_name_full">Main app</string>
    <string name="app_email">[email protected]</string>
    <string name="app_phone">123</string>
    <string name="app_website">www.abc.com</string>
</resources>

и строковый файл аромата: /src/flavor1/res/values/strings.xml

<resources>
    <string name="app_name">Flavour App Name</string>
</resources>

Только app_name изменится во вкусе, а другие ресурсы, такие как app_full_name, по-прежнему доступны во всех вариантах.

person Shailesh    schedule 15.03.2016
comment
Вы не можете использовать main и ожидать, что он будет переопределен. Так не пойдет. Main следует использовать во всем, в противном случае его необходимо отделить. - person StarWind0; 08.07.2016
comment
@StarWind имеет смысл здесь, это приведет к сбою во время компиляции с дублирующимися ресурсами - person box; 21.08.2017