inb4 duplizierenWie ein Verfahren zum Entfernen ProGuard mit
Ich weiß, es gibt viele Fragen/Blogs vorhanden, wie Logging-Code von einer App mit ProGuard zu entfernen, habe ich diese Lösungen ausprobiert und sie arbeiten, wie sie sind entworfen, um. Mein Problem ist etwas anders. In meiner App habe ich die Standardprotokollierungsmethoden oder System.out.println()
nicht direkt von überall verwendet. Stattdessen habe ich eine benutzerdefinierte Methode, die System.out.println()
aufruft und diese Methode() wird von meiner App jedes Mal aufgerufen, wenn sie etwas protokolliert. Es gibt einen Grund, warum ich diese Methode benötige.
Meine public static void log()
-Methode befindet sich in einer Klasse namens MyApplication
, die die Standardklasse Application
überschreibt. Ich habe diese ProGuard Regel aus here:
-assumenosideeffects class java.io.PrintStream {
public void println(%);
public void println(**);
}
Dies beseitigt erfolgreich direkte Verwendungen von System.out.println()
, einschließlich von MyApplication.log()
. Aber wenn ich diese sehr Regel verwenden, indem sie zwicken MyApplication.log()
zu entfernen, funktioniert es nicht:
-assumenosideeffects class changed.package.name.MyApplication {
public static void log(...);
}
Es gibt zwei Versionen des log()
:
log(String)
log(String, int)
Keiner von ihnen wird entfernt. Die Methode wird auf m17739c()
verschleiert, ich habe diesen Methodennamen sogar (kindisch) in der Regel hinzugefügt. Es hat immer noch nicht funktioniert.
Ich glaube nicht, -assumenosideeffects
wurde speziell für die Standard-Protokollierungsmethoden entwickelt. Was mache ich hier falsch?
Ich habe genau das gleiche Problem. Hast du eine Lösung gefunden? – Anonymous
@Anonymous, nein. Musste es umgehen. – SlashG