Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Вставка цели сборки только с использованием build.xml?

Автор вопроса: Brad HeinОтветов: 2

У меня есть 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?

androidproguardcompilationant

Ответы

Ответ 1 · рейтинг 5 · Matthew Willis

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

Ответ 2 · рейтинг 1 · NickT

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

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

proguard.config=proguard.cfg

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы