Как сохранить все методы в классе с помощью ProGuard
Я использую ProGuard для оптимизации моего приложения для Android. Однако для тестирования инструментария для Android мне нужны некоторые (но не все) классы, чтобы содержать всех участников. Я пробовал различные подходы, последнее:
-keepclassmembers public class com.mycompany.myclass {
*;
}
Но на удивление я все равно получаю
java.lang.NoSuchMethodError: com.mycompany.myclass.<init>
Тяжелая часть здесь состоит в том, что есть два конструктора, и у одного есть немало параметров.
Кто-нибудь знает правильный синтаксис, чтобы сохранить класс полностью неизменным и нетронутым ProGuard?
Ответы
Ответ 1
Ну, это время исповеди. Вопрос в том, что это не так. -keepclassmembers
правильный. Проблема возникла из-за того, что партнер команды нарушил код, и конструктор действительно не был там.
Обратите внимание, что если есть изменение, которое оптимизируется для всего класса, вы должны использовать -keep
в качестве предлагаемых kharles, но {*;}
необходим, чтобы все методы оставались на месте.
Обратите внимание, что {*;}
предназначен только для тестирования. Для производства следует использовать более мелкозернистый подход.
Я задаю вопрос для кого-то с той же проблемой.
Ответ 2
попробовать
-keep public class com.mycompany.myclass
(используйте keep и no {*;})