Получить вкус продукта или вариант сборки в приложении для Android

У меня есть приложение для Android с множеством различных вкусов продукта, настроенных в файле build.gradle, например

productFlavors { someFlavor {} anotherFlavor {} } 

В моем коде приложения я хочу иметь возможность получить имя компилируемого в настоящее время вкуса (или варианта сборки). Одним из решений является следующее:

 productFlavors { someFlavor { buildConfig "public static final String PRODUCT_FLAVOR = \"someFlavor\";" } anotherFlavor { buildConfig "public static final String PRODUCT_FLAVOR = \"anotherFlavor\";" } } 

А затем в моем приложении для Android-приложения BuildConfig.PRODUCT_FLAVOR .

Есть ли способ, которым я могу получить град, чтобы сделать это автоматически? Или есть какой-то другой API в андроиде, который я могу использовать, чтобы получить название аромата продукта?

Solutions Collecting From Web of "Получить вкус продукта или вариант сборки в приложении для Android"

Изменить: теперь это делается автоматически, начиная с версии 0.7 плагина. BuildConfig.java будет содержать

 public static final String BUILD_TYPE = "debug"; public static final String FLAVOR = "f1Fa"; public static final String FLAVOR_group1 = "f1"; public static final String FLAVOR_group2 = "fa"; 

FLAVOR – это комбинированное название аромата со всеми вкусовыми размерами / группами. Затем каждое измерение доступно как FLAVOR_<group name> .

Наконец, BUILD_TYPE содержит имя используемого типа сборки.

Если у вас есть один размер аромата, тогда у вас есть FLAVOR постоянная FLAVOR .

Это единственный способ сделать это прямо сейчас.

Одна вещь, которую вы могли бы сделать, это автоматизировать ее. Таким образом, вы можете сделать что-то вроде этого:

 android { productFlavors.whenObjectAdded { flavor -> flavor.buildConfig "public static final String PRODUCT_FLAVOR = \"${flavor.name}\";" } // your normal config here. } 

Таким образом, вам не нужно вручную делать это для каждого аромата.

Принятое решение является удивительным. В некоторых случаях альтернатива может быть полезна.

Вы можете добавить конфигурационный файл, например «Appconfig.java» в ваши исходные папки productFlavor, то есть src/<productflavor>/java/<packagename>/Appconfig.java ; Вы можете использовать Appconfig.PRODUCT_FLAVOR в своем приложении. Компилятор будет держать вас в курсе и убедитесь, что вы добавили это для всех вкусов.

Как я уже сказал, в этом конкретном случае приемлемое решение, вероятно, лучше, поскольку вам даже не нужно ничего добавлять для новых продуктов, но этот подход может быть полезен для других случаев.