2013-05-05 42 views
2

我正在開發一個android應用程序。我的應用經常崩潰。我想將logcat消息保存在SD卡中,而應用程序崩潰找到根本原因。有沒有辦法做到這一點?崩潰時在sd卡中寫入logcat消息

+0

這是僅用於本地調試,還是你想要的東西,可以與應用程序一起發貨? – leander 2013-05-05 15:13:43

+0

你可能會對http://stackoverflow.com/questions/3378550/android-crash-reporting-library-pre-froyo感興趣,也可以看看ACRA和其他解決方案。如果你需要發貨,你需要一個非常可怕的「讀取敏感日誌數據」權限。 – leander 2013-05-05 15:14:51

+0

我需要它進行本地調試 – vignesh 2013-05-05 15:20:10

回答

2

一些想法可能會幫助您邁向全自動崩潰日誌收集。我們還沒有一卷一個完整的系統,我們已經有足夠的運氣就可以抓取設備,他們已經墜毀後,或要求從我們的QA小組的詳細信息,但是:

  • ACRA是比較容易實現的,並且即使您沒有實現它,源代碼也會在github上供您參考。
  • 相關問題Android crash reporting library (pre Froyo)有許多鏈接和解決方案,其中包括android-remote-stacktrace,上述ACRA,Android-Error-Reporter和其他商業解決方案。
  • 某些設備會自動捕獲崩潰輸出,您可以通過adb pull /data/log/dumpstate_app_native.txt.gz或類似設備抓取它 - 路徑應顯示在logcat中。不過,這些往往會在每次崩潰時被覆蓋。 (如果任何人都可以回答這是一個製造商特定的功能還是出現在某個版本的Android核心中的東西,我很想知道!)
  • 您可以獲得一個logcat應用程序,例如, aLogCat或許多其他,您可以在您的設備上安裝。
  • TestFlight正在Android端進入beta版;他們在iOS方面有崩潰報告,並且也應該在Android方面,而且使用他們的服務還有其他許多可愛的好處 - 而且我們的體驗非常簡單。

如果您正在推出自己的應用程式中,你需要的READ_LOGSWRITE_EXTERNAL_STORAGE清單權限(即使是本地版本),那麼你可以使用日誌API或常規File.copy甚至一個系統調用關閉到logcat本身。還有在「相關」鏈接到這個問題的側一堆選項和示例:

希望這有助於。

0

閱讀您自己的logcat消息也包含在其他問題中。

how can i access logcat file on device Read logcat programmatically within application

爲了做到這一點,當你的應用程序崩潰,你需要安裝一個defaultUncaughtExceptionHandler。

無論您在創建活動或您的應用程序創建。添加下面的代碼。

 final Thread.UncaughtExceptionHandler oldUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler(); 
    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { 
     @Override 
     public void uncaughtException(Thread thread, Throwable throwable) { 
      // DO your error handling here. 
      // Write your log cat, or write your exception stack trace here. 

      // Get rid of this line if you don't want a popup letting you know that your app has crashed. 
      oldUncaughtExceptionHandler.uncaughtException(thread,throwable); 
     } 
    });