安卓 - 使用ant创建构建配置以更改配置值

13
我希望能够按照构建配置有特定的设置。例如,我的 Android 应用连接到一个 web 服务。在开发中,我想从可配置的值中获取服务 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应该是什么样子的?我知道当我想要构建测试/生产版本时,我需要使用命令行。这没问题。但我不知道如何使serviceUrl自动根据构建设置。我甚至不确定将此信息放置的最佳位置(资源、属性文件?)。我真的想避免设置、构建、设置、构建等操作。

4个回答

9
如上面的答案所述,您必须将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>

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


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
我建议您将URL放入一个属性文件中,然后将其放置在类路径上。创建一个测试和一个生产属性文件。然后根据构建方式将正确的文件放置在类路径上,并在运行时获取属性。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接