mitaichik
@mitaichik

Как конфигурировать параметры приложения в зависимости от типа build'a?

Всем привет!

Есть несколько параметров приложения, которые мне хотелсь бы привязать к типу build'a. Например, для debug билда url API должен указывать на локальную виртуалку и отключен Crash Reporting, для release - url указывает на продакшн-сервер и репорт ошибок включен.

В идеале хотлесь бы еще конфигурировать классы (например в debug вместо AnalyticTracker использовать AnalyticTrackerStub).

Сейчас я все это делаю вручную, перед релаизом, но это не круто.

В бэкенд фреймфорках все это делается через конфиги и конфигурирование DI контейнера, но я не нашел что то подобное в Android (с даггером еще не разбирался).

Как такое сделать? Заранее спасибо!
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
artemgapchenko
@artemgapchenko
Привет.

для debug билда url API должен указывать на локальную виртуалку, для release - url указывает на продакшн-сервер

Тут лучше всего подойдут т.н. build config fields. Описываете его в build.gradle файле, а потом используете его как BuildConfig.API_URL. Пример здесь.

для debug билда отключен Crash Reporting, для release - репорт ошибок включен

Просто инициализируете свой крэш репортинг через if вот так:
if (!BuildConfig.DEBUG) {
    // инициализируем
}

В идеале хотлесь бы еще конфигурировать классы (например в debug вместо AnalyticTracker использовать AnalyticTrackerStub).

Для разных билд типов можно задавать свои наборы исходников. На том же уровне, на котором находится главный набор исходников (main), определите ещё пару наборов - debug и release. Внутри них и размещаете свой AnalyticTracker: debug/java/com/myapp/utils/AnalyticTracker.java и release/java/com/myapp/utils/AnalyticTracker.java. В зависимости от того, какой у вас сейчас выбран build variant (debug или release), Android Studio будет использовать или первую или вторую версию класса AnalyticTracker. Да, из главного набора исходников AnalyticTracker.java нужно будет удалить, иначе Android Studio не сумеет выбрать нужный класс. Более подробная документация тут.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы