2016-06-10 6 views
1

Как приложение для разработчиков приложений поддерживает приложения (например, мои адреса сервера, конечные точки пути и т. Д.) Глобальные и конкретные варианты конфигурации варианта в приложении для Android? Кроме того, возможно ли иметь переопределения? то есть. Я хочу установить значение по умолчанию в моем файле global.config, но коллизии в stage-build-variant.config и prod-build-variant.config должны переопределить это, в то время как dev-build-variant.config будет просто использовать значение по умолчанию.android app/business-logic config

Я читал о SharedPreferences, но это похоже на сохранение ввода пользователя во время выполнения для последующих запусков, и я читал о людях, использующих класс для хранения констант, но это не совсем подходит, поскольку я не получить какую-либо выгоду от конкретных значений конфигурации, перекрывающих общие. есть также много, казалось бы, устаревших статей, которые я не уверен точно.

Я спросил это как комментарий в this question, который, кажется, близок к тому, что я ищу, но думал, что я спрошу, как вопрос для большей экспозиции.

EDIT: возможно, я объяснил это плохо - уточнить, this comment.

ответ

0

Джастин, кажется, что вы хотите, это проект библиотеки. Вам нужно будет создать проект библиотеки с одной конфигурацией по умолчанию. Допустим, что проект называется основным, а затем он имеет следующий strings.xml:

<string name="server_address">htt://path.to.server</string> 

Таким образом, вы можете создать модуль (так называемый app1) для проекта, который использует проект библиотеки в «ядре». Затем вы закончите с два файла strings.xml. Итак, файл strings.xml из вашего модуля приложения будет переопределить strings.xml из проекта библиотеки. Тогда вы можете иметь:

<string name="server_address">htt://app1.path.to.server</string> 

Ресурсы: Create a library Project

[ОБНОВЛЕНО]

Вместо использовать библиотеку вы можете попробовать переменную класса. Смотрите этот вопрос: Gradle Variables и эта связь о вариантах сборки: Build variants

+0

это кажется излишне сложным. для пояснения, пример конкретного значения конфигурации варианта конфигурации: адрес узла api. в варианте сборки (который я распространяю для пользователей, возможно, в том, что называется 'production_config.yaml'), я бы хотел использовать' api_host: https: // api.mysite.com'. в варианте сборки dev (который я разрабатываю и создаю локально, возможно, в 'dev_config.yaml'), я могу использовать' api_host: http: // localhost: 8080'. пример глобального значения конфигурации (возможно, в 'config.yaml'): путь к пользовательскому ресурсу ('/users'). – Justin

+0

поэтому в коде выполнение 'Config.get ('api_host') + Config.get ('users_path')' вернет 'https: // api.mysite.com/users' в сборке и' http: // localhost: 8080/users' на dev build. – Justin

+0

Justin, я нашел лучший способ с помощью Gradle Variables. Проверьте обновленный ответ. – ikkarion