2012-04-05 16 views
3

Androidのドキュメントを示していますLog.d()メッセージは、デバイスに表示されないときになぜ表示されますか?

ため冗長性の観点から、少なくともからにほとんど、VERBOSE、ERRORあるWARN、INFO、DEBUG。 Verboseは開発中以外はアプリケーションにコンパイルしないでください。デバッグログはコンパイルされますが、実行時に削除されます。エラー、警告、情報ログは常に保持されます。

しかし、Log.d()を実行しようとすると、実際にはまだ実際のデバイスのLogcatに記録されています。

誰でも知っていますか?またはそれを無効にする方法は?

ありがとうございました!

答えて

5

あなたが見ているのは予想される動作です。 logcatを使用してデバイスを接続すると、Log.dは常にログに記録され、表示されます。したがって、実稼働アプリケーションでデバッグログを必要としない場合は、オフにします。 Infact android sdkはそうすることを示唆しています。このSOの答えはあなたにも役立ちます。 Should I comment my log calls when creating my final package?

のAndriod SDKは

あなたはリリース用にアプリケーションをビルドする前に、ロギングを無効にし、デバッグオプション を無効にしていることを確認し、ロギングおよびデバッグをオフにし

言います。ソースファイルのLogメソッドへの呼び出しを削除して、 ログを非アクティブにすることができます。 マニフェストファイルの タグからandroid:debuggable属性を削除するか、マニフェストファイルの android:debuggable属性をfalseに設定して、デバッグを無効にすることができます。また、 は、 プロジェクトで作成されたログファイルまたは静的テストファイルを削除します。

また、 コードに追加したすべてのデバッグトレース呼び出し(startMethodTracing()やstopMethodTracing()メソッド など)を削除する必要があります。

Source

+1

ありがとう、完璧な答えとまっすぐに –

+0

@Shamrflowありがとう:-) – rfsk2010

0

あなたが必要なときにログの特殊なタイプを無効/独自のクラスでは、ロギングをカプセル化して有効にする必要があります。

+1

良いアイデア、rfsk2010は彼の答えでは正確ですが、マニフェストフラグを使って削除されたときのデバッグメッセージは、後で(ユーザにログを有効にしてからそのログを電子メールで送信するように頼むために)有用かもしれません。別のクラスを使用する方法があるようですが、その例がここにあります:http://code.google.com/p/teddsdroidtools/source/browse/trunk/teddsdroidtools/src/tss/droidtools/BaseActivity.java –

-1

デバッグログがない場合は、詳細がコンパイルされていると面白いでしょう。だからあなたのアプリに署名し、試してみると、私はデバッグメッセージが存在しないと思う。

-1

デバイスを接続すると、デバッグモードがアクティブになります。あなたがそれをチェックすることはできませんが、デバイスが接続されているとアプリを実行する場合、私はそれが同じだとは思わない...

関連する問題