我有一个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中?
答案 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)