久々の技術ネタです。
Androidでデバッグ用のログを出力する際には
Log.d(String tag, String msg);
としますが、これで出力しているログは、このまま何もしなければリリース時にユーザーさんからも見えてしまします。
やはりデバッグ用のログが見えてしまうのは都合が悪いと思うので、
リリース時に少しのコストでこれを解消するTIPSをご紹介します。
方針としましては、
マニフェストファイルのis_debuggableがtrueの際にデバッグログの出力をオフにすることとします。
public class DeployUtil {
/**
* マニフェストファイルを読んでデバッグモードかどうかを取得
*/
public static boolean isDebuggable(Context context) {
PackageManager manager = context.getPackageManager();
ApplicationInfo appInfo = null;
try {
appInfo = manager.getApplicationInfo(context.getPackageName(), 0);
} catch (NameNotFoundException e) {
return false;
}
if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) == ApplicationInfo.FLAG_DEBUGGABLE) {
return true;
}
return false;
}
}
public class Katazou extends Application {
private static boolean isDebuggable;
@Override
public void onCreate() {
// デバッグモードか調べる
isDebuggable = DeployUtil.isDebuggable(getApplicationContext());
}
}
public class LogUtil {
/**
* デバッグログを出力する マニュフェストファイルでデバッグモードになっていなければ出力しない
*/
public static final void d(String tag, String msg) {
if (Katazou.isDebuggable()) {
Log.d(tag, msg);
}
}
}
あとは、ソースコード中のLog.dを一括置換でLogUtil.dとすれば、
リリース時にis_debuggableをtrueにするだけで簡単にデバッグログをオフにすることができます。
参考