Ich möchte machen den Build fehlschlagen, wenn ich Debugging-Code in der App verlassen.
Ist dies über ProGuard möglich? Wenn das so ist, wie? DieseFehler beim Erstellen von Annotation mit ProGuard
ist, was ich habe zur Zeit:
/** Annotate methods that shouldn't be used in production. */
@Retention(RetentionPolicy.CLASS) // TODO which one?
@Target({CONSTRUCTOR, METHOD, TYPE})
public @interface DebugHelper {
}
class Utils {
/**
* Dig up object's internals (with reflection if need be)
* and convert them to string. Useful for View/Fragment/Bundle/etc.
*/
@DebugHelper
public static String toString(Object value) {
...
}
}
Lassen Sie uns sagen, ich habe aus Versehen einen Utils.toString(veryBigObject)
im Code irgendwo links. Ich bin auf der Suche nach einem Weg, um das Build zu scheitern (oder eine Note/Warning-Zeile ausgeben). Beachten Sie, dass es viele Klassen und Methoden gibt, die wie folgt kommentiert werden, so dass sie einzeln aufgelistet werden, ist keine Lösung.
Alternativ , wenn dies nicht möglich ist, würde ich genauso glücklich sein, wenn ProGuard kann diese Anrufe loszuwerden (beschleunigen freigegeben app) und alle Methoden/Klassen mit Anmerkungen versehen mit @DebugHelper
(um die Größe niedrig zu halten).
Ich habe versucht:
-assumenosideeffects class ** {
@net.twisterrob.java.annotations.DebugHelper <methods>;
}
aber es gibt mir
Hinweis: Die Konfiguration legt fest, dass keine der Methoden der Klasse ‚**‘ irgendwelche Nebenwirkungen
Hinweis: Es gab 1 '-assumenosideeffects' Optionen, die versuchen, alle Methoden mit Platzhaltern zu vergleichen. Dies wird wahrscheinlich Probleme mit Methoden wie `wait() 'und' notify() 'verursachen. Sie sollten die Methoden genauer spezifizieren. (http://proguard.sourceforge.net/manual/troubleshooting.html#nosideeffects)
obwohl die Anmerkung ziemlich spezifisch ist.