Witam Piszę aplikację na Androida i skonfigurowałem program Proguard do zaciemniania mojej aplikacji. Używam jednak programu ładującego klasy do dynamicznego ładowania różnych rozszerzeń do mojej aplikacji. Problem polega na tym, że nie ładują się poprawnie, jeśli ich nazwy zostały zmienione. Jak powstrzymać Proguard przed zaciemnianiem konkretnych nazw klas?Proguard zachować nazwy klas?
Odpowiedz
Użyj opcji -keepnames
w proguard.cfg
Patrz ręcznego https://www.guardsquare.com/en/proguard/manual/usage#keepoptions:
-keepnames
class_specificationSkrót
-keep,allowshrinking
class_specificationOkreśla klas i członków klasy, których nazwiska należy zachować, jeśli nie są usunięto w fazie kurczenia. Na przykład możesz zachować wszystkie klasy klas, które implementują interfejs Serializable, aby przetworzony kod pozostał zgodny z dowolnymi pierwotnie serializowanymi klasami. Klasy, które nie są w ogóle używane, wciąż mogą zostać usunięte. Dotyczy tylko zaciemniania.
Dzięki temu classnames nienaruszone:
-keepnames class com.somepackage.*
Handy wskazówka dla każdego, kto nie chce ProGuard zmienić dowolną nazwę Klasa:
# please KEEP ALL THE NAMES
-keepnames class ** { *; }
W ten sposób można uzyskać czytelne ślady stosu wciąż wyrzucając rzeczy, których nie potrzebujesz. :-)
'' '-dontobfuscate''' jest właściwym sposobem na wyłączenie zaciemniania. –
Nieprawidłowy sposób. Lepiej wyłączyć obfuskację za pomocą tej konfiguracji: "-dontobfuscate/n -optimizations! Code/allocation/variable" – oxied
- 1. Proguard, zachować wszystkie odwołuje zajęcia
- 2. Proguard zachować klasy class
- 3. W proguardzie, jak zachować zestaw nazw metod klas?
- 4. Zachowaj tylko nazwy funkcji podczas zaciemniania dla proguard
- 5. Jak zachować nazwy metod klas, które zastępują \ implementują inną metodę z zaciemniania?
- 6. android - jak zachować wyłudzanie od proguard
- 7. Zapobieganie obfuskacji nazwy elementu klasy przez ProGuard
- 8. Jak powiedzieć Proguardowi, by zaciemnił nazwy klas?
- 9. Jak zachować/wyłączyć określoną ścieżkę pakietu podczas korzystania z proguard?
- 10. Jak powiedzieć ProGuard zachować pól prywatnych bez określania każde pole
- 11. Dynamiczne nazwy klas w mniej
- 12. Jak powiedzieć ProGuardowi, aby zaciemnił nazwy metod i klas?
- 13. Niestandardowe nazewnictwo proguard dla klas, członów i parametrów zaciemnianie
- 14. Jak uzyskać wszystkie nazwy klas w pakiecie?
- 15. Jak reprezentować nazwy klas w LaTeX?
- 16. Adnotacja Java zwraca tajemnicze nazwy klas
- 17. Pakiety iOS SDK: Zmiana nazwy wielu klas
- 18. Jak wykluczyć określone nazwy klas w querySelectorAll()?
- 19. Nazwy klas połączone lub rozdzielone spacją
- 20. Kotlin, Proguard i lambdas
- 21. Jak dokonać podziału macierzy na jedną kolumnę, zachować typ danych macierzy, zachować nazwy wierszy/kolumn?
- 22. Proguard - również używać plików PROGUARD z modułów
- 23. Jak zachować nazwy kolumn podczas importowania danych za pomocą numpy?
- 24. Serializacja/Deserialization & Proguard
- 25. PROGUARD robi ignorowanych odwołuje biblioteki
- 26. Tylko niestandardowe segues obsługuje nazwy klas przed iOS 9.0
- 27. Jak uzyskać wszystkie nazwy klas w przestrzeni nazw w Ruby?
- 28. Nazwy klas zespolonych nie są obsługiwane przez błąd w WebDriver
- 29. Introspekcja w języku Python: jak uzyskać nazwy metod klas?
- 30. Co oznaczają te dziwne nazwy klas w zrzutach sterty java?
Tak więc wpisz: -keepnames com.randompackage.lol.ClassName – Nik
OK, czy można to zrobić z całą paczką? – Nik
Tak, używasz * symbolu wieloznacznego. tzn. -keepnames com.randompackage.lol. * Zachowa wszystkie klasy w lol –