2013-01-02 37 views
5

我只用這會在每個活動時間:未捕獲的異常使用的EasyTracker

@Override 
public void onStart() { 
    super.onStart(); 
    EasyTracker.getInstance().activityStart(this); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    EasyTracker.getInstance().activityStop(this); 
} 

,並通過這個doc

我發現走出去:

使用的EasyTracker
要使用EasyTracker自動跟蹤應用中的所有未捕獲異常,請添加此l INE您analytics.xml文件:

<bool name="ga_reportUncaughtExceptions">true</bool> 

跟蹤使用自動異常跟蹤異常後,將的EasyTracker傳遞給Thread的默認異常處理程序的異常。

當使用自動異常追蹤,請記住以下幾點:

  1. 通過自動跟蹤異常跟蹤所有的異常報告 在谷歌分析是致命的。
  2. 描述字段使用跟蹤堆棧 自動填充。

但是,當我得到一個UncaughtException和應用程序崩潰,在谷歌分析說明,它只是顯示:

An error occured while executing doInBackground() 

不是像上面提到的點的堆棧跟蹤。任何事情都需要添加?

謝謝

+0

這是迄今爲止發現的最佳解決方案:http://stackoverflow.com/questions/14009883/exception-stack-trace-lost-in-google-analytics-v2-for-android – tofi9

+0

Upvoting this,I am面臨同樣的問題。我不明白爲什麼Easytracker只顯示堆棧跟蹤的最後一行...... – Radu

+0

這裏的確切情況也是如此。你有沒有找到解決方案? – theblang

回答

4

我用捕獲的異常報告稱爲ACRA的開源工具。 它提供了比Google Analytics或Flurry更多的信息,並將報告提交給Google文檔,您可以爲添加的每個報告獲取電子郵件通知。

其餘部分我使用Google Analytics。

+0

您是否使用Bugsense和ACRA?我也使用ACRA,但不好看到電子表格中的錯誤 –

+0

對於每個版本,我已經備份了proguard轉儲文件,並編寫了一個小腳本來跟蹤正確轉儲的堆棧跟蹤。 我以後已經遷移到Crashlytics。它具有像ACRA一樣的捕捉能力,並自動進行回溯。 – auval

3

您應該使用自定義異常解析器來獲取整個堆棧跟蹤

import org.apache.commons.lang3.exception.ExceptionUtils; 
import com.google.analytics.tracking.android.ExceptionParser; 

public class AnalyticsExceptionParser implements ExceptionParser { 

public String getDescription(String p_thread, Throwable p_throwable) { 
    return "Thread: " + p_thread + ", Exception: " +  ExceptionUtils.getStackTrace(p_throwable); 
} 
} 

並將其設置爲默認在您的活動,像

public void setupGoogleAnalyticsCrashReportParser() { 

    EasyTracker.getInstance().setContext(this); 

    Thread.UncaughtExceptionHandler uncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler(); 
    if (uncaughtExceptionHandler instanceof ExceptionReporter) { 
     ExceptionReporter exceptionReporter = (ExceptionReporter) uncaughtExceptionHandler; 
     exceptionReporter.setExceptionParser(new AnalyticsExceptionParser()); 
    } 
} 

希望這有助於給別人。