В приложении Multi Flavor, как избежать дублирования ресурсов
Если у меня есть 3 ароматизатора flavour1, flavour2 и flavour3, у каждого ароматизатора есть версии "sub-flavors" Dev,Pat и Prod, у которых разные параметры, но у каждого основного аромата разные ресурсы.
Итак, у меня сейчас 9 разных вкусов, но только 3 разных папки ресурсов). Я бы хотел, чтобы одни и те же "суб-ароматы" использовали одни и те же ресурсы.
Как я могу это сделать? Я видел в документации о flavourDimensions, но не уверен, как настроить папку ресурсов.
На данный момент я использую что-то вроде
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'
}
}
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
Например:
android.sourceSets.flavor1Debug
Местоположение src / flav1Debug/
android.sourceSets.flavor1Release
Местоположение src / flav1Release/
android.sourceSets.flavor2Debug
Расположение src / flavour2Debug/
android.sourceSets.flavor2Release
Расположение src / flavour2Release/
Кроме того, этот вопрос очень похож. Как мне указать исходный набор buildType для аромата?
Просто поместите общие ресурсы в 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">main@abc.com</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, по-прежнему доступны во всех вариантах.