2013-03-06 10 views
11

Androidのドキュメント(http://developer.android.com/reference/android/util/Log.html)は言う:は、Androidのデバッグログは実際に実行時に削除されますか?

冗長は、開発中以外のアプリケーションにコンパイルすべきではありません。デバッグログはコンパイルされますが、実行時に削除されます。エラー、警告、情報ログは常に保存されます

私はちょうどテストを行いました。私の活動では、私は書いた:

自分のプロジェクトをapkファイルとしてエクスポートした後、私は自分の携帯電話にこのapkをインストールしました。私は私の電話でこのアプリケーションを実行し、ログを見ました。そこでは、関数テストが5回すべて呼び出され、5回のLog.something関数の呼び出しのすべてがテキストがログに書き込まれることがわかりました。

Log.dの呼び出しは実際に実行時に削除されますか?

+0

で達成されます。トピックは広くここで議論されていますhttp://stackoverflow.com/questions/2446248/remove-all-debug-logging-calls-before-publishing-are-there-tools-to-do-this/2466662#2466662 – gpasci

+0

それでドキュメントのバグですか? – user983447

答えて

6

この問題はhereを報告し、溶液を追加

2012年3月にADT 17.0.0にあなたには、いくつかのコードを実行することを可能にする機能が提供されましたデバッグモードでのみ有効です。ビルドでは、ビルドタイプに応じて自動的に設定されるDEBUG定数を含むBuildConfigというクラスが生成されるようになりました。デバッグ専用の関数を実行するには、コード内の(BuildConfig.DEBUG)定数をチェックできます。

11

いいえ、これは自分で行う必要があります。あなたはこのようなあなた自身のLog.dラッパーを行うことができます。

public static void debug(String tag, String msg) { 
    if (BuildConfig.DEBUG) { 
     Log.d(tag, msg); 
    } 
} 
+1

これは正解です。そのため、Androidのドキュメントは間違っています。また、ビルドタイプに依存するのではなく、実行時にログを有効にする場合は、 'Log.isLoggable(TAG、Log.DEBUG)'を使用することもできます。 – satur9nine

関連する問題