Android - используйте ant для создания конфигураций сборки, которые изменяют значения конфигурации - PullRequest
13 голосов
/ 17 февраля 2011

То, что я хочу, это способ настройки, которые зависят от конфигурации сборки. Чтобы привести конкретный пример, мое приложение для 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 ]

9 голосов
/ 18 февраля 2011

Как уже говорилось в ответах, вы должны поместить 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 (для производства)

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

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

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

4 голосов
/ 17 февраля 2011

Вы можете попытаться иметь следующий файл свойств в файле 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>
2 голосов
/ 17 февраля 2011

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

0 голосов
/ 17 ноября 2011

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

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

...