2011-03-07 29 views
2

我有一个build.xml,它能够编译和优化,如果我单独运行构建目标 - “ant编译”,然后是“和优化”。仅使用build.xml插入构建目标?

问题是,我想运行“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?

回答

5

为什么不使用模板build.xml文件中的后编译钩子?它读取:

[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

哦,伙计,这是完美的。甚至没有意识到它在那里。谢谢! - 测试 - 它的工作原理!我简单地添加了一个依赖于我的build.xml的属性:

1

万一你错过了它:

随着SDK工具rev吃8,Proguard的是内置的,您只需要

proguard.config=proguard.cfg 

行添加到您的default.properties(并有。一个proguard.cfg文件,当然,您可以在其中设置混淆规则)

您不需要添加任何其他目标。

(这是Windows版本真反正,我想这对Linux的一样。该“规则” XML现在被称为main_rules.xml)

+0

我给它一个旋转,但Fedora 14仍然是体育蚂蚁1.7(不是1.8新的sdk需要)。唉,我将不得不等待直到他们赶上,但我期待着使用这个更简单的方法。谢谢你NickT。 –