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/

Я новичок в затмении и муравьях, и прошло уже много времени с тех пор, как я использовал Java. Как мне настроить это? Как должен выглядеть build.xml? Я понимаю, что когда я хочу собрать тестовые / продвинутые версии, мне нужно будет использовать командную строку. Это нормально. Но я не знаю, как получить автоматическую настройку этого serviceUrl в зависимости от сборки. Я даже не уверен, что лучшее место для размещения этой информации (ресурс, файл свойств?). Я действительно хочу избежать установки, строительства, настройки, строительства и т. Д.

4 ответа

Решение

Как сказано в ответах, приведенных выше, вы должны поместить URL-адреса в файл свойств, такой как dev.properties, test.properties, prod.properties и т. Д.

Теперь единственное, что вам нужно сделать, это сделать вашу сборку достаточно умной, чтобы выбрать файл свойств в зависимости от среды.

Это можно сделать, передав параметр в ANT, что-то вроде:

$ ant -file MyBuild.xml -DcurrentEnv = dev (для среды разработки)
$ ant -file MyBuild.xml -DcurrentEnv = test (для теста)
$ ant -file MyBuild.xml -DcurrentEnv = prod (для производства)

Внутри вашего скрипта сборки вы можете включить свой файл свойств:

<target name="jarMe">
    <jar destfile="sample.jar" basedir="src" includes="${currentEnv}.properties"/>
</target>

При этом, какое бы имя вы ни указали во время сборки, будет выбран файл свойств с этим именем.

Вы можете попытаться иметь следующий файл свойств в вашем файле 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">@@toben_to_be_replaced_during_build_time@@</string>
</resources>

Я бы начал с размещения URL-адресов в файле свойств, который затем можно поместить в путь к классам. Сделайте тест и файл производственных свойств. Затем, в зависимости от сборки, поместите правильный файл в путь к классам и извлеките свойства во время выполнения.

Нашел учебное пособие, в котором рассматриваются все детали использования ant для автоматизации системы сборки, создания и использования конфигураций сборки, а также для сборки проекта релиза с помощью одной команды. Вот он: http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html

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

Другие вопросы по тегам