Android Logの出力について(デバッグ版とリリース版で表示・非表示)

Androidアプリ開発時にアプリ内の処理の確認用にLogを出力していたのですが、リリース時のことをあまり考えずにLog出力の記述をしていたため、アプリをリリースする際に困ってしまいました。配布用のアプリでLogが出力されてしまうのはよくないので、独自にLog出力用のクラスを作ることにしました。

●LogUtil.java
public class LogUtil {
public static boolean sDebugFlg = false;
private static String sTag = “”;
private static Context sContext;

public LogUtil(Context context){
sContext = context;
sTag = sContext.getString(R.string.app_name);        //ログのタグをアプリケーション名に指定
PackageManager manager = sContext.getPackageManager();
ApplicationInfo appInfo = null;
try {
appInfo = manager.getApplicationInfo(sContext.getPackageName(), 0);
} catch (NameNotFoundException e) {
Log.v(sTag, “sDebugFlg can’t get application infomation”);
}
if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) == ApplicationInfo.FLAG_DEBUGGABLE){
sDebugFlg = true;
}
}

/**
* ログの出力 debug
* @param msg    出力するメッセージ
*/
public static void d(String msg){
if(sDebugFlg){
Log.d(sTag, msg);
}
}

/**
* ログの出力 debug
* @param tag    タグ
* @param msg    出力するメッセージ
*/
public static void d(String tag, String msg){
if(sDebugFlg){
Log.d(tag, msg);
}
}

}

上記のクラスで変数「sDebugFlg」でデバッグモードか判定してフラグにtrueもしくはfalseを代入しています。LogUtilクラスは、この変数「sDebugFlg」がtrueの場合はログ出力を行い、falseの場合は、ログ出力をしないという仕様になっています。内部的にはLog.dを使用しているので、変数「sDebugFlg」の値によって、出力するかしないかという違いだけです。

但し、AndroidManifest.xmlの<application> タグにandroid:debuggableが設定されている場合は、その値(trueもしくはfalse)が変数「sDebugFlg」に入るようになっています。”android:debuggableが設定されている場合は・・・”と書いたのは、SDKのr8からこの記述すら、必要がなくなったからです。
初めてこのAndroidManifest.xmlの<application> タグにある「android:debuggable」の属性を知ったころは、「android:debuggable」の値をtrueやfalseに手動で変更してデバッグ版とリリース版を切り替えようと思ったのですが、Android SDK r8で「true debug build」がサポートされたことにより、Androidアプリを開発中は、Eclipse/ADT では、すべての incremental build はデバッグビルドを仮定し、tools は android:debuggable=”true” を追加しています。また、signed release build を export するときには、tools はこの属性を追加しません。
ということで、「android:debuggable」の属性は記述すら必要なくなったということなのです。
AndroidManifest.xmlの修正は必要なく、上記のLogUtil.javaを利用すれば、デバッグの時のみLogが出力されます。

広告

Android Logの出力について(デバッグ版とリリース版で表示・非表示)」への1件のフィードバック

  1. ピンバック: Androidアプリの署名<KeyStore Keytool AndroidDebugKey> | android manifest configChanges

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中