Android库项目自定义Ant构建

时间:2012-12-28 09:35:23

标签: android ant android-library android-build

我有一个图书馆项目,作为许多其他项目的后端。它进行Web连接和解析等。然后我有其他基于此的前端项目。 对于开发和服务器环境,我编写了一个ANT构建脚本,用于替换构建类型的代码库中的某些值。 所以我有两个目标buildDevbuildProd

在构建依赖项(非库项目)时,有没有办法让我正确设置值。例如。如果我在项目上ant debug,则使用ant buildDev构建后端,如果我ant release,则使用ant buildProd进行构建。

我很确定这是不可能的,所以有什么选择。

对于好奇的人来说,自定义构建只是替换了一个文件,该文件具有静态变量,这些变量根据构建类型分配了不同的值。没什么太复杂的。

2 个答案:

答案 0 :(得分:1)

在ant中,可以使用各种不同的任务来编辑文件中的属性。

我确定你知道属性文件,所以如果你使用这里的文档:

http://ant.apache.org/manual/index.html

它可能对你有帮助。

如果在ant样式属性文件中设置变量,那么对于某些构建,您可以为单独的构建提供单独的文件,然后正确设置变量。

如果您正在谈论在源中设置变量,请尝试复制任务:

http://ant.apache.org/manual/index.html

复制任务上的过滤链允许您从文件中替换某些代码行。因此,如果您有一个名为server_ip的变量或类似的变量,您可以使用过滤链来更改该值并将该源文件重新复制回树中。

我希望这能回答你的问题。如果没有,请保持温柔。我在回答这些问题时有点新鲜,而且我在Android帖子上略微被咀嚼了哈哈。

答案 1 :(得分:0)

我找到了解决方案。默认的Android Ant build.xml在调用时将版本名称传递给子库项目脚本。以下行和后面的代码详细介绍了它。

<!-- figure out which target must be used to build the library projects.
If emma is enabled, then use 'instrument' otherwise, use 'debug' -->
<condition property="project.libraries.target" value="instrument" else="${build.target}">
    <istrue value="${build.is.instrumented}" />
</condition>

然后,这只是在所有相互依赖的项目中拥有相同目标的问题。