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

4 回答 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>

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

于 2011-02-18T12:25:18.397 回答
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>
于 2011-02-17T17:31:16.553 回答
2

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

于 2011-02-17T17:26:52.920 回答
0

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

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

于 2011-11-16T23:21:05.803 回答