Intereting Posts
Пользовательские вкладки Chrome не меняют кнопку закрытия по умолчанию Центрирование текстового изображения Ниже кнопки изображения, которая находится под относительным расположением? Как добавить программную учетную запись в андроид? TextInputLayout не показывает подсказку EditText, прежде чем пользователь будет фокусироваться на ней Проверить командную строку инструментов разработчика Android Есть ли способ во время выполнения указать, на каком уровне API работает Android-устройство? Неявное намерение удалить приложение? Как определить, находятся ли координаты X и Y внутри моей кнопки? Удалить пространство между кнопками Android CAB уничтожает после просмотра списка уведомленийdatasetchanged Настройка уровней журнала Android Время, затраченное на первый запуск с AS 2.0 и gradle 2.0 Android: скрыть дочерние разделители в ExpandableListView Android: закрыть диалоговое окно при касании Ошибка жизненного цикла виртуального фрагмента

Получить вкус продукта или вариант сборки в приложении для 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 в своем приложении. Компилятор будет держать вас в курсе и убедитесь, что вы добавили это для всех вкусов.

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