仅使用build.xml插入构建目标?

时间:2011-03-07 19:51:07

标签: android ant compilation proguard

我有一个build.xml,如果我单独运行构建目标,则能够编译和优化 - “ant compile”,然后是“and optimize”。

问题是,我想运行“ant release”,它通常会执行生成发布二进制文件所需的所有内容,但我需要在链中插入一个构建目标 - 目标称为“optimize”,它运行就在“dex”阶段构建字节代码之前,针对类文件的proguard优化/收缩器。

模板文件/opt/android-sdk-linux_x86/platforms/android-8/templates/android_rules.xml包含以下规则,我可以修改为“depends =”编译,优化“”但我不知道我想为每个出来的不同SDK重新修改文件(每次都有一个新的android_rules.xml文件)。

<!-- Converts this project's .class files into .dex files -->
<target name="-dex" depends="compile">
    <dex-helper />
</target>

是否有替代方法可以修改模板xml,而是将所有编译规则放入build.xml中?

2 个答案:

答案 0 :(得分:5)

为什么不在模板build.xml文件中使用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}]
<target name="-post-compile">
</target>

鉴于它明确要求修改,我认为它将在sdk版本中得到支持。

要查看项目的完整自动生成的build.xml文件,您可能需要运行android update project

答案 1 :(得分:1)

万一你错过了它:

自SDK Tools Rev 8起,内置了Proguard支持。您只需添加行

proguard.config=proguard.cfg

到你的default.properties(并且当然有一个proguard.cfg文件,你设置了混淆规则)

您无需添加任何其他目标。

(无论如何,在Windows版本中都是如此,我想它对于Linux来说是一样的。'规则'xml现在称为main_rules.xml)