Android - 使用ant创建更改配置值的构建配置

时间:2011-02-17 17:04:00

标签: java android ant build-automation buildconfiguration

我想要的是一种具有依赖于构建配置的设置的方法。举一个具体的例子,我的android应用程序连接到Web服务。在开发中,我希望从可配置的值中提取服务URL。在测试中,我希望获得不同的值。在生产中,还有另一个值。

所以,在代码中我有这样的东西:

public class HttpRequestHelper 
{
    private static String GetServiceUrl(ServiceAction action)
    {
        return serviceUrl + action.toString();
    }
}

默认情况下(调试/运行eclipse时),我希望该网址为http://localhost:1234

在测试中,我想要https://test.mydomain.com

在制作中我想要https://mydomain.com

我是eclipse和ant的新手,自从我使用java以来​​已经很久了。我该如何设置呢? build.xml应该是什么样的?据我所知,当我想构建test / prod版本时,我需要使用命令行。没关系。但我不知道如何使这个serviceUrl自动设置依赖于构建。我甚至不确定放置此信息的最佳位置(资源,属性文件?)。我真的想避免设置,构建,设置,构建等。

4 个答案:

答案 0 :(得分:9)

如上所述,您必须将URL放在dev.properties,test.properties,prod.properties等属性文件中。

现在,您唯一需要做的就是让您的构建足够智能,根据环境选择属性文件。

可以通过将参数传递给ANT来完成,例如:

$ ant -file MyBuild.xml -DcurrentEnv = dev(适用于开发环境)
$ ant -file MyBuild.xml -DcurrentEnv = test(For Test)
$ ant -file MyBuild.xml -DcurrentEnv = prod(For Production)

在构建脚本中,这是您可以包含属性文件的方式:

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

有了这个,无论您在构建时提供什么名称,都会选择具有该名称的属性文件。

答案 1 :(得分:4)

您可以尝试在build.properties文件中包含以下属性文件:

service.url=*

您可以在local.properties中使用http://localhost:1234https://test.mydomain.com进行开发和集成测试,并且可以在default.properties中将其设置为https://mydomain.com

通过这样做,您将在不同的构建环境中获得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 :(得分:2)

我首先将url放入属性文件中,然后将其放置到类路径中。制作测试和生产属性文件。然后根据构建将正确的文件放到类路径上并在运行时拉出属性。

答案 3 :(得分:0)

找到一个教程,详细介绍了使用ant来自动化构建系统,创建和使用构建配置,以及使用一个命令构建发布项目的所有细节。这是:http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html

似乎有点长,但它涉及所有步骤和细节。