Я знаю, что эта ветка довольно старая, но, на мой взгляд, ни один из предоставленных ответов на самом деле не решает проблему. Вкусы плохо подходят для параметризации вашей сборки с помощью таких вещей, как URL-адреса API, и еще хуже для таких вещей, как ключи API и т. д.
Во-первых, build.gradle
, который определяет разновидности, является частью исходного кода проекта, поэтому он не должен содержать такую информацию, чтобы его можно было безопасно зафиксировать в системах управления версиями.
Во-вторых, может возникнуть необходимость протестировать разные варианты на разных конечных точках/ключах API. Что, если вы просто хотите использовать какой-нибудь отладочный http-сервер, который вы только что создали, чтобы исправить ошибку? Не могли бы вы создать аромат для этого? Вероятно, нет... Ароматизаторы хороши для таких вещей, как «бесплатный аромат» и «премиум аромат».
Эта проблема легко решается с помощью флага -P
gradles. Вы можете получить доступ к свойствам gradle, которые передаются таким образом как обычные переменные внутри вашего gradle.build, и вы можете соответствующим образом изменить его поведение.
Если вы хотите добавить эти флаги в свое приложение, вы можете использовать решение Скотта, опубликованное здесь, в сочетании с предоставленным флагом.
Тогда команда сборки, вероятно, будет выглядеть так:
$ gradle build -Papiroot=http://www.example.com
И в вашем build.gradle
вы бы определили задачу writeValue
следующим образом:
task writeValue(type:Exec) {
commandLine '/usr/local/bin/adb', 'shell', "echo 'API_SERVER=${apiroot}' > /data/data/values.properties"
}
К вашему сведению, флаг -P можно легко настроить в Android Studio, перейдя в меню:
Выполнить -> Конфигурации запуска/отладки -> По умолчанию -> Gradle -> Параметры скрипта
person
Karol Majta
schedule
23.04.2015