Android - используйте ant для создания конфигураций сборки, которые изменяют значения конфигурации
Я хочу, чтобы у меня были настройки, зависящие от конфигурации сборки. Чтобы дать конкретный пример, мое приложение для Android подключается к веб-службе. В разработке я хочу, чтобы URL-адрес службы был выведен из настраиваемого значения. В тесте я хочу получить другое значение. В производстве еще одно значение.
Итак, в коде у меня есть что-то вроде этого:
public class HttpRequestHelper
{
private static String GetServiceUrl(ServiceAction action)
{
return serviceUrl + action.toString();
}
}
По умолчанию (при отладке/запуске через eclipse) я хочу, чтобы этот URL был http://localhost:1234
В тесте я хочу https://test.mydomain.com
В производстве я хочу https://mydomain.com
Я новичок в eclipse и ant, и я долгое время использовал java. Как мне это настроить? Как выглядит файл build.xml? Я понимаю, что, когда я хочу построить версии test/prod, мне нужно будет использовать командную строку. Все в порядке. Но я не знаю, как получить этот автозапуск serviceUrl в зависимости от сборки. Я даже не уверен, что лучше всего разместить эту информацию (ресурс, файл свойств?). Я действительно хочу избежать установки, создания, настройки, создания и т.д.
Ответы
Ответ 1
Как упоминалось выше, вы должны поместить URL-адреса в файл свойств, например dev.properties, test.properties, prod.properties и т.д.
Теперь только то, что вам нужно сделать, это сделать вашу сборку достаточно интеллектуальной, чтобы выбрать файл свойств в зависимости от среды.
Это можно сделать, передав параметр ANT, например:
$ant файл MyBuild.xml -DcurrentEnv = dev (для среды разработки)
$ ant файл MyBuild.xml -DcurrentEnv = test (для теста)
$ ant файл MyBuild.xml -DcurrentEnv = prod (для производства)
Внутри сборки script вы можете включить свой файл свойств:
<target name="jarMe">
<jar destfile="sample.jar" basedir="src" includes="${currentEnv}.properties"/>
</target>
С этим на месте, независимо от имени, которое вы указываете во время сборки, файл свойств с этим именем будет подхвачен.
Ответ 2
Вы можете попробовать иметь следующий файл свойств в файле build.properties:
service.url=*
И вы могли бы http://localhost:1234 или https://test.mydomain.com в local.properties для тестирования разработки и интеграции, и его можно установить в https://mydomain.com в default.properties.
Выполняя это, вы получите другое значение для service.url в другой среде сборки. Вы можете использовать это значение для создания файла конфигурации и проанализировать его в своем коде или установить его в переменную env или просто поместить в файл ресурсов, и Android прочитает его для вас:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="service-url">@@[email protected]@</string>
</resources>
Ответ 3
Я бы начал с размещения URL-адресов в файле свойств, который затем можно разместить в пути к классам. Сделайте тестовый файл и файл свойств. Затем в зависимости от места сборки создайте правильный файл на пути к классам и вытащите свойства во время выполнения.
Ответ 4
Нашел руководство, в котором перечислены все детали использования ant для автоматизации системы сборки, создания и использования конфигураций сборки, а также для создания проекта выпуска с помощью одной команды. Вот он: http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html
Кажется немного длинным, но он проходит через все этапы и детали.