使用Ant进行Android自定义构建

时间:2011-12-16 00:17:25

标签: android ant build

运行时会自动生成这4个文件(build.xml,local.properties,projects.properties,proguard.cfg):

  

android更新项目--name TestApp --target 10 -p。

     

更新了project.properties

     

更新了local.properties

     

添加了文件./build.xml

     

更新了文件./proguard.cfg

但我希望“auto-gen”build.xml也包含以下“预编译”代码,有没有办法做到这一点?是否有一些“包含”文件或“模板”文件可以包含?

  <target name="config">

  <property name="config-target-path" value="${source.dir}/com/androidengineer/antbuild"/>

  <!-- Copy the configuration file, replacing tokens in the file. -->
  <copy file="config/Config.java" todir="${config-target-path}"
        overwrite="true" encoding="utf-8">
   <filterset>
    <filter token="CONFIG.LOGGING" value="${config.logging}"/>
   </filterset>
  </copy>

 </target>

3 个答案:

答案 0 :(得分:13)

build.xml工具生成的android(至少在使用Android SDK r20时)包含以下代码:

<!--
    Import per project custom build rules if present at the root of the project.
    This is the place to put custom intermediary targets such as:
        -pre-build
        -pre-compile
        -post-compile (This is typically used for code obfuscation.
                       Compiled code location: ${out.classes.absolute.dir}
                       If this is not done in place, override ${out.dex.input.absolute.dir})
        -post-package
        -post-build
        -pre-clean
-->
<import file="custom_rules.xml" optional="true" />

因此,我创建其他目标或自定义现有目标的方法是使用这些新目标创建custom_rules.xml文件。请注意,在我的测试中,目标需要嵌套在<project>标记中,因此只需将生成的build.xml的前两行复制到custom_rules.xml,并且不要忘记关闭最后</project>标记。由于custom_rules.xml不会被android update覆盖,您的更改将会持续存在,并且可以检入您选择的SCM工具。

答案 1 :(得分:3)

也许你可以查看这个问题的答案:

Does the ADT plugin automatically create an ant build file?

答案中有一段说......

  

或者,您可以直接从$ ANDROID_HOME / tools / lib / build.template复制build.xml模板,然后只需更改项目名称。

修改此文件并运行命令以查看它是否有效。

<强>更新

同时选中本文的“自定义构建”:http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html

答案 2 :(得分:1)

build.xml本身,它告诉你如何做到这一点。请参阅文件中的以下注释:

<!--

    ***********************
    ****** IMPORTANT ******
    ***********************
    In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
    in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->