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

我想要的是一种具有依赖于生成配置的设置的方法。举一个具体的例子,我的Android应用程序连接到Web服务。在开发过程中,我希望从可配置的值中提取服务 URL。在 Test 中,我想要一个不同的值。在生产中,这是另一个价值。

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

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以来已经很久了。如何进行设置?构建.xml应该是什么样子?我知道,当我想构建测试/生产版本时,我需要使用命令行。没关系。但我不知道如何根据构建自动设置此服务Url。我甚至不确定放置此信息的最佳位置(资源,属性文件?我真的想避免设置它,构建,设置它,构建等。


答案 1

正如上面提到的答案所说,您必须将URL放在属性文件中,例如dev.properties,test.properties,prod.properties等。

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

这可以通过向 ANT 传递参数来完成,如下所示:

$ ant -file MyBuild.xml -DcurrentEnv=dev (For Development environment)
$ 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>

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


答案 2

您可以尝试在 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>

推荐