Группировка нескольких из множества исходных наборов, имеющих одинаковую конфигурацию

Допустим, у меня есть следующееsourceSets:

sourceSets {
    flavor1 {
        assets.srcDirs = ['repo-assets/flavor1']
        res.srcDirs = ['repo-res/flavor1']
    }
    flavor2 {
        assets.srcDirs = ['repo-assets/flavor2']
        res.srcDirs = ['repo-res/flavor2']
    }
    flavor3 {
        assets.srcDirs = ['repo-assets/flavor1']
        res.srcDirs = ['repo-res/flavor1']
    }
    flavor4 {
        assets.srcDirs = ['repo-assets/flavor2']
        res.srcDirs = ['repo-res/flavor2']
    }
}

Если вы заметилиflavor1 а такжеflavor3 есть такие же srcDirs и такflavor2 а такжеflavor4.

Пробная возможность # 1

Я пытался выяснить, есть ли способ избежать избыточности, используя что-то вроде этого:

sourceSets {
    flavor1, flavor3 {
        assets.srcDirs = ['repo-assets/flavor1']
        res.srcDirs = ['repo-res/flavor1']
    }
    flavor2, flavor4 {
        assets.srcDirs = ['repo-assets/flavor2']
        res.srcDirs = ['repo-res/flavor2']
    }
}

Выше не работает (уже пробовал). Ищите что-то подобное, чтобы я мог просто предоставить общий наборsourceDirs для набора ароматов. Кто-нибудь пытался сделать что-то подобное и может предоставить некоторые указатели?

Пробная возможность № 2

Есть ли имяsourceSets должны быть такими же, как у ароматизаторов?

Могу ли я назватьsourceSets отдельно, а затем сопоставить их сproductFlavors как это?

productFlavors {
    flavor1 {
      sourceset = "src1"
    }
    flavor2 {
      sourceset = "src2"
    }
    flavor3 {
      sourceset = "src1"
    }
    flavor4 {
      sourceset = "src2"
    }
}

sourceSets {
    src1 {
    }
    src2 {
    }
}
Пробная возможность № 3

Можно ли динамически назначать исходные наборы с помощью задач для достижения того же результата?

ОБНОВИТЬ

Дуглас Отчасти ответ помог мне очень приблизиться к тому, что я искал в конечном итоге (сокращение кода в build.gradle). Он использовал возможность № 3 выше. Спасибо, Дуглас! Любая лучшая альтернатива от охотников за головами все еще приветствуется (что-то ближе к возможностям № 1 и № 2 выше). Если ничего не происходит, щедрость принадлежит Дугласу, когда заканчивается период, когда я принял его ответ. Но все равно будет оставаться оптимистичным в поисках лучшей альтернативы.

Ответы на вопрос(1)

Ваш ответ на вопрос