Android: Существуют ли какие-либо методы для совместного использования ресурса между различными falvors и sourceset?

#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% одинаковы. Я хочу, чтобы для каждого варианта был указан только разный макет и ресурсы, а другие части были общими для всех вариантов