Proguard запускает обфускацию после удаления неиспользуемого кода. Переименовываются все компоненты программы, кроме тех, что были явно исключены в файле Proguard-правил.
После обфускации кода Proguard генерирует файл
mapping.txt
, который содержит маппинг новых имен к старым. Этот файл используется для декодирования обфусцированных стектрейсов. Обычно его загружают на сервис крэш-репортов (например Crashlytics), который автоматически декодирует логи.Для ручного декодирования используется инструмент Retrace.
Proguard использует новые обфусцированные имена при каждом следующем билде. Поэтому, во-первых, надо сохранять файл
mapping.txt
для каждой версии программы. Во-вторых, нельзя использовать динамические имена классов как ключи для сохранения данных в персистентном хранилище.Также обфускация делает невозможным обращение к членам класса через Reflection.
Для сохранения имен используется правило
-keep
.