Установить постоянное значение с помощью градуировки

Я просто перешел на систему сборки android gradle, и мне не ясно, как установить постоянные значения.

Например, у меня есть

API.java который содержит

 BASE_URL = "http://debug.server.com" 

Но когда выпуск градиентов начинается, мне нужно BASE_URL быть "http://release.server.com"

Как заменить это значение на время сборки?

Solutions Collecting From Web of "Установить постоянное значение с помощью градуировки"

Gradle генерирует класс BuildConfig который содержит статические члены (такие как логический DEBUG , для которого заданы значения true для вариантов отладки).

Вы можете запросить это в java следующим образом:

 if (BuildConfig.DEBUG) { BASE_URL = "http://debug.server.com" } else { BASE_URL = "http://release.server.com" } 

Или одно и то же, что и однострочный:

 BASE_URL = BuildConfig.DEBUG ? "http://debug.server.com" : "http://release.server.com" 

ИЛИ

Фактически вы можете установить BASE_URL внутри класса BuildConfig с помощью градиента следующим образом:

 android { buildTypes { debug { buildConfigField "String", "BASE_URL", '"http://debug.server.com"' } release { buildConfigField "String", "BASE_URL", '"http://release.server.com"' } } } 

Обратите внимание на одиночную и двойную цитаты вокруг значения в градиенте, о чем другие упоминали в комментариях. Таким образом, двойные кавычки становятся частью значения.

В результате статическая ссылка BuildConfig.BASE_URL на соответствующий URL-адрес (то есть «debug.server.com» для debug, «release.server.com» для выпуска)

Ответ правильных овец. Просто хотел оставить решение для более чем двух сред.

Два вкуса для постановки и проживания.

 productFlavors { staging { ... } production { ... } } 

Вся конфигурация app зависит от текущей ENV. С помощью:

 public static String ENV_DEVELOPMENT = "development"; public static String ENV_STAGING = "staging"; public static String ENV_PRODUCTION = "production"; ENV = BuildConfig.DEBUG ? ENV_DEVELOPMENT : BuildConfig.FLAVOR; 

Я могу переключаться между всеми разными ENV во время тестирования локально, но при необходимости выставлять настройки / живые настройки.