Hallo Ich schreibe eine Android App und ich habe Proguard eingerichtet, um meine Anwendung zu verschleiern. Ich verwende jedoch einen Klassenlader, um verschiedene Erweiterungen dynamisch zu meiner Anwendung zu laden. Das Problem ist, dass diese nicht korrekt geladen werden, wenn ihre Namen geändert werden. Wie verhindere ich, dass Proguard bestimmte Klassennamen verschleiert?Proguard Klassennamen beibehalten?
Antwort
Verwenden Sie die -keepnames
Option in Ihrem proguard.cfg
https://www.guardsquare.com/en/proguard/manual/usage#keepoptions zum Handbuch Siehe:
-keepnames
class_specificationShort für
-keep,allowshrinking
class_specificationGibt Klassen und Klassenmitglieder, deren Namen sind zu erhalten, wenn sie nicht sind In der Schrumpfphase nicht entfernt. Beispielsweise möchten Sie möglicherweise alle Klassennamen von Klassen beibehalten, die die Serializable-Schnittstelle implementieren, sodass der verarbeitete Code mit allen ursprünglich serialisierten Klassen kompatibel bleibt. Klassen, die überhaupt nicht verwendet werden, können weiterhin entfernt werden. Nur anwendbar beim Verschleiern.
Das hält Klassennamen intakt:
-keepnames class com.somepackage.*
Praktischer Tipp für alle, die nicht ProGuard will jede Klassennamen ändern:
# please KEEP ALL THE NAMES
-keepnames class ** { *; }
Auf diese Weise können lesbar Stack-Traces bekommen während du immer noch Dinge rausschmeißt, die du nicht brauchst. :-)
'' '-dontobfuscate''' ist der richtige Weg, die Verschleierung zu deaktivieren. –
Falscher Weg. Es ist besser, die Verschleierung mit dieser Konfiguration zu deaktivieren: "-dontobfuscate/n -optimizations! Code/allocation/variable" – oxied
- 1. Wie kann ProGuard Methoden- und Klassennamen verschleiern?
- 2. Android: Proguard-Konfiguration zum Verschleiern von Klassennamen und -methoden
- 3. ProGuard behält den Klassennamen, ändert aber den Paketnamen
- 4. Bedeutung von {*; } In ProGuard
- 5. ProGuard Zeigt noch voller Aktivitätsnamen
- 6. Proguard behalten alle Java-Schnittstellen
- 7. Proguard - auch proguard Dateien von Modulen
- 8. Benutzerdefinierter Name der verschleierten Klasse in "proguard"
- 9. Android Proguard, Mapping.txt funktioniert nicht so gut
- 10. proguard - AppCompat unterstützt die aktuellen Designfunktionen nicht nach proguard/minify
- 11. reguläre Ausdrücke für Klassennamen
- 12. Last Seite nach Klassennamen
- 13. Text an Klassennamen anhängen
- 14. ejs mehrere Klassennamen
- 15. Schienen reserviert Klassennamen
- 16. Modellwert im Klassennamen hinzufügen?
- 17. Verschiedene Dateinamen Klassennamen yii
- 18. Datenelement mit dem Klassennamen
- 19. Get Klassennamen django Modell
- 20. CSS-Sprites, Klassennamen zuweisen
- 21. Scala-Klassennamen in Konfigurationskarte
- 22. Dll mit demselben Klassennamen
- 23. Selenverbindung Klassennamen nicht erlaubt
- 24. jQuery Onclick Toggle-Klassennamen
- 25. Schrägstrich im Klassennamen
- 26. Makro vor Klassennamen
- 27. Proguard retrace.sh stack
- 28. Android: Proguard NoSuchMethodError
- 29. Proguard Google Analytics
- 30. Parsing Proguard Dump-Datei
Also tippe ich: -keepnames com.randompackage.lol.ClassName – Nik
Ok gibt es eine Möglichkeit, es mit einem ganzen Paket zu tun? – Nik
Ja, Sie verwenden den Platzhalter *. ie -keepnames com.randompackage.lol. * Behalte alle Klassen in lol –