Обфускация кода на Android — это процесс изменения исходного кода или байт-кода таким образом, чтобы его было сложно понять и декомпилировать без потери функциональности. Это делается для защиты интеллектуальной собственности и предотвращения взлома.
Основные цели обфускации:
В Android стандартным инструментом для обфускации и оптимизации является ProGuard или его более современная версия R8.
Принципы работы ProGuard/R8:
Как настроить обфускацию:
Используется файл proguard-rules.pro (для ProGuard) или r8-rules.pro (для R8).
proguard
Важные аспекты:
-keep для сохранения кода, к которому обращается рефлексия, нативные библиотеки, динамически загружаемые классы, модели для сериализации/десериализации (JSON, XML) и другие части приложения, которые не могут быть статически проанализированы компилятором.mapping.txt можно сопоставить обфусцированные имена с исходными для отладки.ProGuard и R8 работают на уровне Java байт-кода. Нативный код (NDK) требует других инструментов для обфускации.