У меня есть build.xml, который может компилироваться и оптимизироваться, если я запускаю цели сборки по отдельности - "ant compile", за которым следует "and optimize".

Проблема в том, что я хочу запустить "ant release", который обычно делал бы все необходимое для создания двоичного файла выпуска, но мне нужно вставить цель сборки в цепочку - цель называется "optimize", и она запускает proguard optimize. / 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?

2
Brad Hein 7 Мар 2011 в 22:51

2 ответа

Лучший ответ

Почему бы не использовать обработчик пост-компиляции в файле шаблона 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.

5
Matthew Willis 7 Мар 2011 в 23:01
1
О, чувак, это прекрасно. Даже не осознавал, что это было там. Спасибо! - проверено - работает! Я просто добавил зависимость к этому атрибуту моего build.xml:
 – 
Brad Hein
7 Мар 2011 в 23:09

На всякий случай пропустили:

Начиная с SDK Tools Rev 8, поддержка Proguard встроена. Вам просто нужно добавить строку

proguard.config=proguard.cfg

В ваш default.properties (и, конечно, у вас есть файл proguard.cfg, в котором вы настраиваете свои правила обфускации)

Никаких других целей добавлять не нужно.

(В любом случае это верно для версии для Windows, я полагаю, что то же самое и для Linux. XML-файл с правилами теперь называется main_rules.xml)

1
NickT 8 Мар 2011 в 01:43
Я попробовал, но Fedora 14 все еще поддерживает ant 1.7 (а не 1.8, требуемый новым SDK). Увы, мне придется подождать, пока они наверстают упущенное, но я с нетерпением жду возможности использовать этот гораздо более простой метод. Спасибо, NickT.
 – 
Brad Hein
8 Мар 2011 в 16:53