2013-07-26 9 views
16

Co to jest inteligentna konfiguracja ProGuard, aby zaciemnić tylko prywatne metody i stałe z jednego konkretnego klasy com.acme.Algorithm?Z ProGuard, jak mogę zaciemnić tylko jedną klasę?

Chciałbym to po prostu zaciemnić, ponieważ zawiera algorytm, który nie powinien być oczywisty po przypadkowym otwarciu pliku .jar.

Jestem nowicjuszem ProGuard. AFAIU, musisz użyć "keep", ale pozytywna logika "do obfuscate" jest niedostępna, prawda? Jak wyłączyć moją klasę z konfiguracji "zachowaj wszystko"? Uwaga: Nie chcę obecnie zamazywać innych klas, ponieważ chcę umożliwić klientowi zobaczenie znaczących stosów stosu.

Odpowiedz

22

Obfuskacja pojedynczej klasy nie będzie miała dużego efektu: może zmienić nazwę klasy oraz kilka nazw pól i nazw metod i może zoptymalizować niektóre kody. Obfuskacja wydaje się być mniej skuteczna w ukrywaniu małych informacji. Im więcej kodu aplikacji zaciemnisz, tym trudniej go zrozumieć.

Mając na uwadze powyższe, można określić:

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

Utrzymuje wszystkich klas/pól/metod poza com.acme.Algorithm.

+0

Mój problem polega na tym, że nadal próbuję zaciemniać inne klasy, nawet gdy ustawiłem je powyżej linii. jak to mogło się stać? – Jacky

+0

Mam również do czynienia z tym samym problemem co @ Jacky Dowolne wskazówki do rozwiązania problemu –

Powiązane problemy