2011-03-07 28 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。 –