ProGuard - это инструмент для обфускации кода, используемый в Android для защиты приложений от обратной разработки. Однако в некоторых случаях может понадобиться запретить обфускацию конкретного класса, особенно если он используется в процессе desugaring.
Desugaring - это процесс преобразования кода, написанного с использованием новых функций языка Java или Kotlin, в код, которому понимают более старые версии Android. Он применяется, когда вы пишете код, используя новые функции языка, которые отсутствуют в вашей минимальной версии API.
Чтобы запретить обфускацию класса из desugaring, вы можете использовать аннотацию @DoNotObfuscate
. Когда вы помечаете класс этой аннотацией, ProGuard определит, что этот класс не должен быть обфусцирован.
Вот как можно использовать аннотацию @DoNotObfuscate
:
import androidx.annotation.DoNotObfuscate; @DoNotObfuscate public class MyDesugaringClass { // Код класса }
Когда ProGuard будет обрабатывать ваш код, он будет игнорировать обфускацию класса MyDesugaringClass
, поскольку его пометили аннотацией @DoNotObfuscate
.
Кроме того, в Android Gradle Plugin 4.1 и выше вы можете использовать новый механизм обфускации - R8. Это новый инструмент для обфускации и минификации кода, его разработка ведется в Google. R8 также поддерживает аннотацию @DoNotObfuscate
.
import com.android.tools.r8.DoNotObfuscate; @DoNotObfuscate public class MyDesugaringClass { // Код класса }
Использование @DoNotObfuscate
с R8 аналогично использованию с ProGuard. Он указывает R8 на то, что конкретный класс не должен быть обфусцирован.
В заключение, использование аннотации @DoNotObfuscate
является способом запретить обфускацию класса из desugaring при использовании ProGuard или R8 в проекте Android. Это полезное средство, которое позволяет сохранить целостность кода и поддержать совместимость с различными версиями API Android.