2011-03-07 2 views
2

У меня есть build.xml, который способен компилировать и оптимизировать, если я запускаю цели сборки индивидуально - «компилировать компиляцию», а затем «и оптимизировать».Вставка цели сборки только с помощью build.xml?

Проблема заключается в том, что я хочу запустить «ant release», который обычно делал бы все необходимое для создания бинарной версии, но мне нужно вставить цель сборки в цепочку - цель называется «оптимизировать», и она запускает proguard optimize/shrinker против файлов классов непосредственно перед тем, как этап «dex» создает байтовый код.

Файл шаблона /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 Tools 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). Увы, мне придется подождать, пока они не догонят, но я с нетерпением жду этого гораздо более простого метода. Спасибо, Ник. –

Смежные вопросы