С ProGuard, как я запутываю только один класс?

Какова была бы умная конфигурация ProGuard для обфускации только частных методов и констант одного конкретного класса com.acme.Algorithm?

Я хотел бы просто затуманить это, потому что он содержит алгоритм, который не должен быть очевидным при случайном открытии .jar.

Я новичок в ProGuard. AFAIU, вы должны использовать "держать", но положительная логика "делать обфускацию" недоступна, не так ли? Итак, как исключить мой класс из конфигурации "держать все"? Примечание. Я не хочу запутывать другие классы на данный момент, потому что я хочу разрешить клиенту видеть значащие стеки.

Ответы

Ответ 1

Обфускация одного класса не будет иметь большого эффекта: он может изменить имя класса и несколько имен имен полей и методов, и он может оптимизировать некоторый код. Обфускация имеет тенденцию быть менее эффективной для скрытия небольших фрагментов информации. Чем больше кода приложения вы запутываете, тем труднее становится понимать.

При этом вы можете указать:

-keep class !com.acme.Algorithm { *; }

Он сохраняет все классы/поля/методы вне com.acme.Algorithm.