【问题标题】:Android library project custom Ant buildAndroid库项目自定义Ant build
【发布时间】:2012-12-28 09:35:22
【问题描述】:

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

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

我很确定这是不可能的,那么有什么替代方案。

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

【问题讨论】:

    标签: android ant android-library android-build


    【解决方案1】:

    在 ant 中,有多种不同的任务可用于编辑文件中的属性。

    我确定您知道属性文件,所以如果您使用此处的文档:

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

    它可能对你有帮助。

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

    如果您要在源代码中设置变量,请尝试复制任务:

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

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

    我希望这能回答您的问题。如果不是,请温柔一点。我在回答问题方面有点新手,我对 Android 帖子有点厌烦了哈哈。

    【讨论】:

    • 我找到了解决方案。感谢您的帮助。
    【解决方案2】:

    我找到了解决方案。默认的 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>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2023-03-10
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2011-06-24
      • 2011-11-06
      相关资源
      最近更新 更多