2012-04-05 44 views
3

的Android文檔表明:爲什麼Log.d()消息在設備上顯示時不應該顯示?

在冗長換算的順序,從最低到最高是ERROR,WARN,INFO,DEBUG,冗長。除了在開發期間,絕不應該將Verbose編譯爲應用程序。調試日誌被編譯但在運行時剝離。始終保留錯誤,警告和信息日誌。

但嘗試做一個Log.d(),你會發現它實際上仍然記錄到一個真實的設備Logcat。

有誰知道爲什麼?或者如何禁用它?

謝謝!

回答

5

你所看到的是預期的行爲。如果您使用logcat並連接設備,Log.d將始終被記錄並顯示。因此,如果您不想在生產應用程序中使用調試日誌,請關閉它。事實上android sdk建議你這樣做。這個答案也可以幫助你。 Should I comment my log calls when creating my final package?

的Andriod SDK說

關閉日誌記錄和調試

確保停用記錄並禁用調試選項 你建立你的發行申請。您可以通過刪除源文件中對日誌方法的調用來停用 日誌記錄。您可以通過從清單文件中的 標記中刪除android:debuggable屬性,或者通過在清單文件中將android:debuggable屬性設置爲false來禁用調試,即 。另外, 刪除在您的 項目中創建的所有日誌文件或靜態測試文件。

此外,您應該刪除您添加到您的 代碼中的所有調試跟蹤調用,例如startMethodTracing()和stopMethodTracing()方法 調用。

Source

+1

謝謝你,完美的答案和直接點 – 2012-04-05 11:01:42

+0

@Shamrflow致謝:-) – rfsk2010 2012-04-05 11:22:27

0

您應該封裝記錄在自己的類和啓用/禁用特殊類型的日誌,當您需要。

+1

好主意,rfsk2010在他的回答中是準確的,但是在通過清單標誌移除時,您也可以正確地使用該調試消息,稍後可能會有用(可能要求用戶啓用日誌記錄,然後通過電子郵件發送所述日誌)。使用單獨的類看起來很順利,下面是一個示例:http://code.google.com/p/teddsdroidtools/source/browse/trunk/teddsdroidtools/src/tss/droidtools/BaseActivity.java – 2012-04-05 11:03:26

-1

如果在開發中編譯了verbose,那麼如果調試日誌不是,那將很有趣。所以請註明您的應用程序,並嘗試一下,我認爲那時調試信息不​​見了。

-1

當您插入設備時,它會激活調試模式。我不認爲這是相同的,如果應用程序與設備運行拔出,雖然你不能檢查...