У меня есть 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 ответа
Почему бы не использовать обработчик пост-компиляции в файле шаблона 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
.
На всякий случай пропустили:
Начиная с SDK Tools Rev 8, поддержка Proguard встроена. Вам просто нужно добавить строку
proguard.config=proguard.cfg
В ваш default.properties (и, конечно, у вас есть файл proguard.cfg, в котором вы настраиваете свои правила обфускации)
Никаких других целей добавлять не нужно.
(В любом случае это верно для версии для Windows, я полагаю, что то же самое и для Linux. XML-файл с правилами теперь называется main_rules.xml)
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.