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

Кажется немного длинным, но он проходит через все этапы и детали.