written: 2014-04-29 .. 2014-06-26
以前、ProGuard の機能を利用してリリースバージョンからデバッグ用の Log.d()
等の出力を除去する方法について解説しました(Log.d() の除去)。
今回は、同様のことを、Java の標準 API である System.out.print()
の場合について解説します。もちろん、同じ方法は、System.out.println()
等でも使うことができます。
クラスの名前自体は、Debug だろうが、DebugPrinter だろうが、何でも構いませんが、ここでは Debug とします。次のようなクラスになります:
public class Debug {
public static void print(String string) {
System.out.print(string);
}
}
プログラム中では、このクラス経由で間接的に、System.out.print()
を使うようにします。つまり、標準出力から何か出力したいような場合は、System.out.print()
は直接使わずに、Debug.print()
の方を使うようにします。
このようにしておいて、ProGuard によって、リリースバージョンのコンパイル時に、この Debug.print()
メソッドを削除するようにすればいいわけです。
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
デフォルトでは proguard-android.txt
となっている部分を proguard-android-optimize.txt
に変える。こうしないと、次の proguard-project.txt における -assumunosideeffects オプションが効かない(※これは Log.d()
を除去する場合と同じ)。
-assumenosideeffects class (パッケージ名).Debug {
public static void print(java.lang.String);
}
《Android》