Androidでリリース時にデバッグログをオフにする方法

久々の技術ネタです。

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にするだけで簡単にデバッグログをオフにすることができます。

参考

Android で自動オフできるログ出力

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

渡辺 正毅

1984年生。サンフランシスコ育ち。大学から憧れの日本に留学し、そのまま移住。2006年慶應大学SFC卒。2007年BPS株式会社設立。いい国ですよね。もっとよくしたい。好きになってくれる人を増やしたい。

渡辺 正毅の書いた記事

関連する記事

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ