2

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

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

模板文件 /opt/android-sdk-linux_x86/platforms/android-8/templates/android_rules.xml 包含以下规则,我可以修改为“depends="compile,optimize"” 但我不想必须为出现的每个不同的 SDK 重新修改文件(每次都有一个新的 android_rules.xml 文件)。

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

是否有修改模板 xml 并将所有编译规则放入 build.xml 的替代方法?

4

2 回答 2

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.

于 2011-03-07T20:01:09.993 回答
1

以防万一你错过了:

从 SDK Tools Rev 8 开始,内置了 Proguard 支持。您只需添加以下行

proguard.config=proguard.cfg

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

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

(无论如何,这在 Windows 版本中是正确的,我想 Linux 也是如此。“规则”xml 现在称为 main_rules.xml)

于 2011-03-07T22:43:05.917 回答