#android #gradle #android-flavors #android-buildconfig #android-sourcesets
#Android #gradle #android-вкусы #android-buildconfig #android-исходные наборы
Вопрос:
У меня есть приложение с приведенными ниже исходными наборами и вкусами: flavorDimensions «бренд»
productFlavors {
flavor1 {
dimension "brand"
sourceSets {
main {
manifest.srcFile "src/main/flavor1/AndroidManifest.xml"
resources.srcDirs = ['src/flavor1/']
}
}
}
flavor2 {
dimension "brand"
sourceSets {
main {
manifest.srcFile "src/main/flavor2/AndroidManifest.xml"
resources.srcDirs = ['src/flavor2/']
}
}
}
flavor3 {
dimension "brand"
sourceSets {
main {
manifest.srcFile "src/main/flavor3/AndroidManifest.xml"
resources.srcDirs = ['src/flavor3/']
}
}
}
Мое приложение таково, что 99% макетов и классов одинаковы. Например. только файл макета main_activity.xml
отличается среди вариантов, но остальные 20 ~ 30 файлов макета полностью одинаковы. Я не хочу копировать эти 20 ~ 30 в три разных набора исходных текстов. Существуют ли какие-либо способы совместного использования их между тремя вариантами, и если файл присутствовал в исходном наборе, он переопределяет общие файлы? (Например, хотите, чтобы Android выполнял для drawable
и drawble-hdpi
, …)?
Поэтому я не хочу иметь
Ответ №1:
Если я не неправильно понял вопрос, вы могли бы решить проблему, изменив build.gradle следующим образом:
productFlavors {
flavor1 {
dimension "brand"
}
flavor2 {
dimension "brand"
}
//...
}
и структурирование вашего модуля приложения следующим образом:
/src
/main
/flavor1
/flavor2
...
и размещение всех общих файлов (source, resources) в main и пользовательских / специфических файлов в папках FlavorX, что приведет к замене gradle файлов с одинаковыми именами в main при создании каждого варианта.
Комментарии:
1. причина не использования разных исходных папок для разных вариантов заключается в том, что они на 99% одинаковы. Я хочу, чтобы для каждого варианта был указан только разный макет и ресурсы, а другие части были общими для всех вариантов