1

デバッグを容易にするためにアプリに広範なログを記録しますが、実稼働アプリケーションには最小限のログのみを記録したいと考えています。私の理解では、コンパイラは未使用のコードを削除しません。Android では条件付きコンパイルはありませんが、Proguard は未使用のコードを削除します。トレース クラスの例を次に示します。

public class Trace
{
  public static final int logginglevel = 5;

  public static final boolean errors = logginglevel > 1;
  public static final boolean warnings = logginglevel > 2;
  public static final boolean info = logginglevel > 3;
  public static final boolean debug = logginglevel > 4;
}

次に、アプリケーション自体で次のようにログに記録します。

if (Trace.debug) Log.d(TAG,"problem")

これは、Proguard が未使用のステートメントを識別して削除できるようにすることに成功しますか? このステートメントはかなり醜いですが、私が見ることができる最短のものです。

Android アプリにログを含めるより簡潔な方法はありますが、本番ビルドでは自動的に削除されますか? コードの特定の側面を削除するように Proguard 自体を構成することは可能だと思いますが、それがこれよりも優れた解決策であるかどうかはわかりません。

4

2 に答える 2

3

別の StackOverflow 応答から...

これを proguard 設定ファイルに追加します。

-assumenosideeffects class android.util.Log {
    public static *** i(...);
    public static *** d(...);
    public static *** v(...);
}
于 2011-06-02T16:10:20.017 に答える