【问题标题】:Inserting build target using build.xml only?仅使用 build.xml 插入构建目标?
【发布时间】:2011-07-10 14:50:09
【问题描述】:

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

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

模板文件 /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 的替代方法?

【问题讨论】:

    标签: android ant compilation proguard


    【解决方案1】:

    为什么不在模板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

    【讨论】:

    • 天哪,这太完美了。甚至没有意识到它的存在。谢谢! - 测试 - 它的工作原理!我只是在 build.xml 的这个属性中添加了一个依赖:
    【解决方案2】:

    以防万一你错过了:

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

    proguard.config=proguard.cfg
    

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

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

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

    【讨论】:

    • 我试了一下,但 Fedora 14 仍在运行 ant 1.7(不是新 sdk 所需的 1.8)。唉,我将不得不等到他们赶上来,但我期待着使用这种更简单的方法。谢谢尼克T。
    猜你喜欢
    • 2014-11-30
    • 1970-01-01
    • 2011-07-31
    • 2012-06-07
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多