Я долгое время запутывал свои приложения, со следующими настройками, которые я принимал как мантры, потому что они были рекомендациями Google
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
Однако на днях я прокомментировал эту строку по ошибке, приложение построено правильно, и "очевидно" работает. Я провел много тестов и не смог сделать это сбой.
Итак, мне интересно, нужны ли отключенные настройки оптимизации...
- на сегодняшний день Android SDK и последние версии Proguard, я только нацеливаю устройства с Android 4.0.3 и выше (15) и пользуюсь Proguard 5.1.
- и для приложений, которые не занимаются экзотическими материалами, и имеют надлежащим образом написанные
proguard.cfg
инструкции по сохранению соответствующих проблемных классов и т.д.
Большинство ответов, приведенных в этом выпуске, имеют противоречивую информацию и относятся к довольно старым версиям API.
Один за другим:
! Код/упрощение/арифметика
Я нашел обсуждение Группы Google, где они говорят, что simplification/arithmethic
не требуется для SDK после Android Donut. Я предполагаю тогда, я могу безопасно включить эту оптимизацию.
класс!/Присоединяемых/*
Похоже, proguard делает хорошую работу в моих проектах с включенной оптимизацией:
[proguard] Number of vertically merged classes: 296
[proguard] Number of horizontally merged classes: 445
Существуют ли другие побочные эффекты, кроме следов стека? Я имею в виду, что побочные эффекты, связанные с сбоем приложения, а не отладки проблем. Я нашел этот связанный вопрос, но он не уверен, что это безопасно или нет.
! field/* и! code/simplification/cast
Я прочитал в этом вопросе, на который ответил автор ProGuard, что они были включены, чтобы избежать ошибок со старыми версиями Proguard. Так безопасно ли их активировать на Proguard 5.1?