Ответ 1
Я думаю, вы неправильно поняли концепцию flavorDimension.
Ароматизатор является чем-то вроде категории вкуса, и каждая комбинация аромата из каждого измерения будет иметь вариант.
В вашем случае вы должны определить один параметр flavorDimension с именем "type" и другое измерение с именем "organization". Он будет производить для каждого аромата в "организации" измерения все возможные "типы" (или двойную формулировку: для каждого "типа" он будет давать вариант для каждой организации).
Размеры аромата определяют декартовую продукцию, которая будет использоваться для изготовления вариантов.
EDIT: я попытаюсь проиллюстрировать с помощью псевдо- gradle кода:
Пусть определите некоторый "тип": бронза, серебро и золото
Пусть определите некоторые организации: customerA, customerB, customerC
Все это productFlavors, но они относятся к двум различным размерам:
flavorDimensions("type_line", "organization")
productFlavors {
gold {
...
dimension = "type_line"
}
silver {
...
dimension = "type_line"
}
bronze {
...
dimension = "type_line"
}
customerA {
...
dimension = "organization"
}
customerB {
...
dimension = "organization"
}
customerC {
...
dimension = "organization"
}
}
Эта конфигурация будет создавать 18 (3 * 3 * 2) варианта (если у вас есть 2 стандартных типа сборки: debug и release):
gold-customerA-debug; gold-customerA-релиз; gold-customerB-debug; gold-customerB-релиз; gold-customerC-debug; gold-customerC-релиз;
silver-customerA-debug; серебро-клиентА-релиз; silver-customerB-debug; серебро-клиентB-релиз; silver-customerC-debug; серебро-клиентC-релиз;
... (то же самое для бронзы)
Обратите внимание, что имя измерения абсолютно произвольно и не влияет на имена вариантов.
Размеры вкуса очень мощные, но если вы используете слишком много их: это приводит к экспоненциальному взрыву числа вариантов (задача очистки пост-сборки может быть полезна для удаления бесполезного или нечувствительного варианта)