2016-04-23 8 views
1

で存在している場合、私は私はアプリでのデバッグコードを放置すれば、ビルドが失敗したいと思い構築します。
はそれがProGuardのを経由して、これを行うことは可能ですか?もしそうなら、どうですか?失敗は注釈がProGuardの

これは私が現在持っているものです。

/** 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) { 
     ... 
    } 
} 

はのは、私は偶然どこかのコードでUtils.toString(veryBigObject)を残してきたとしましょう。私はこれをビルドに失敗させる(またはノート/警告行を出力する)方法を探しています。このように注釈を付けられた多くのクラスとメソッドがあるので、それらを1つ1つリストすることは解決策ではないことに注意してください。


また上記が不可能な場合、私はProGuardのは、これらの呼び出し(解放アプリをスピードアップするために)@DebugHelperでアノテートすべてのメソッド/クラス(を取り除くことができれば、同じように幸せになりますサイズを小さくする)。

-assumenosideeffects class ** { 
    @net.twisterrob.java.annotations.DebugHelper <methods>; 
} 

を、それは私に

注意を与える:

私が試した設定は、クラスのメソッドのどれも「**」は任意の副作用
注意を持っていないことを指定します。ワイルドカードですべてのメソッドを照合しようとする1 '-assumenosideeffects'オプションがありました。これは `wait() 'や' notify() 'のようなメソッドで問題を引き起こす可能性があります。メソッドをより正確に指定する必要があります。 (http://proguard.sourceforge.net/manual/troubleshooting.html#nosideeffects

注釈が非常に具体的であっても。注釈フィルタが指定されている場合は、それぞれのコードは考慮されませんよう

答えて

0

メッセージは、あなたのケースで無害です。