2016-04-23 6 views
1

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.

Antwort

0

Die Nachricht ist in Ihrem Fall harmlos, da der entsprechende Code nicht berücksichtigt wird, wenn ein Annotationsfilter angegeben wurde.