で存在している場合、私は私はアプリでのデバッグコードを放置すれば、ビルドが失敗したいと思い構築します。
はそれが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)
注釈が非常に具体的であっても。注釈フィルタが指定されている場合は、それぞれのコードは考慮されませんよう