Прогейдер сохраняет имена классов?

Привет, я пишу приложение для Android, и я установил Proguard для запутывания моего приложения. Однако я использую загрузчик классов для динамической загрузки различных расширений в мое приложение. Проблема в том, что они неправильно загружаются, если их имена изменены. Как сохранить Proguard в запутывании определенных имен классов?

Используйте опцию -keepnames в своем proguard.cfg

Обратитесь к руководству https://www.guardsquare.com/en/proguard/manual/usage#keepoptions :

-keepnames class_specification

Сокращение для -keep,allowshrinking захватывать class_specification

Указывает классы и члены класса, имена которых должны быть сохранены, если они не удалены на этапе сокращения. Например, вы можете сохранить все имена классов классов, реализующих интерфейс Serializable, чтобы обработанный код оставался совместимым с любыми первоначально сериализованными классами. Классы, которые не используются вообще, могут быть удалены. Применяется только при запутывании.

Это сохраняет неповрежденные имена классов:

 -keepnames class com.somepackage.* 

Удобный совет для всех, кто не хочет, чтобы ProGuard менял любое имя класса:

 # please KEEP ALL THE NAMES -keepnames class ** { *; } 

Таким образом, вы получите читаемые трассировки стека, все еще бросая то, что вам не нужно. 🙂