2015-03-22 7 views
1

Добрый день, каждый. Возможно ли изменить вариант сборки во время выполнения в андроид-студии?Изменение варианта сборки во время выполнения

У меня есть две серверные среды. Один для типа отладки, а другой для выпуска. Сам код основывается на некоторых строках и адресах серверов, которые задаются при выборе моего варианта сборки. Поэтому, когда я выбираю debug, например, строка использует адрес сервера отладки. То же самое для выпуска. Но что, если я хочу иметь возможность выбирать среду во время выполнения? Я бы не хотел добавлять оба URL-адреса сервера для обоих типов, чтобы я мог выбирать другую среду. Это побеждает цель варианта сборки, я считаю.

Так что мне было интересно, есть ли способ изменить вариант сборки во время выполнения, позволяя системе градации сортировать вещи?

Спасибо!

ответ

1

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

В моих проектах я всегда ставил класс с именем Endpoints, который предоставил все серверные URL-адреса. У этого есть строка server_base, которая является базовым url для каждого url, который я приспосабливаю в приложении. Статический конструктор назначает server_base на основе варианта сборки, и если мне нужно его изменить, я обычно добавляю в приложение секретное меню, которое позволяет мне его изменить.

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

Я знаю, что это не прямо ответить на ваш вопрос.

+0

Hi Shai благодарит за ваш ответ. Таким образом, по сути, у вас есть все адреса сервера в приложении, и есть «скрытое» меню, которое имеет доступ к этой информации. Наверное, я могу скрыть меню, когда я выбираю тип сборки релиза и покажу его в отладке. Благодарю. Я попробую это так. Я просто хотел воздержаться от хранения всех параметров URL независимо от типа сборки ... Но я думаю, что в этом нет никакого реального вреда :) Спасибо! –

+1

Вы можете удалить много вещей, которые вы хотите скрыть с помощью Proguard –

+0

Ohh, так, например, когда я компилирую для выпуска, proGuard удалит классы, которые относятся к этой функции? Как и в классе Constants (со всеми URL-адресами) и в самом меню? Что-то в этом роде? –

Смежные вопросы