Androidクラッシュログ収集

1578 ワード

原理:アプリケーションに異常が発生すると、デフォルトの異常プロセッサが異常を処理します.私たちがしなければならないのは、このタスクを引き継いで、自分で異常を処理して、ログを収集して、ローカルに保存して、サーバーにアップロードすることです.
  • ステップ
  • 1.カスタムクラス実装UncaughtExceptionHandlerインタフェース
    public class CrashHandler implements Thread.UncaughtExceptionHandler {
    
    private static final String TAG = "CrashHandler";
    private static CrashHandler INSTANCE = new CrashHandler();
    
    private ISave mSave;//           
    private CrashHandler() { }//      CrashHandler  
    
    /**
     *   CrashHandler   ,    
     */
    public static CrashHandler getInstance() {
        return INSTANCE;
    }
    
    /**
     *    ,,   CrashHandler       
     *
     * @param logSaver      
     */
    public void init(ISave logSaver) {
        mSave = logSaver;
        Thread.setDefaultUncaughtExceptionHandler(this);
    }
    
    /**
     *  UncaughtException            
     */
    @Override
    public void uncaughtException(final Thread thread, final Throwable ex) {
        Writer writer = new StringWriter();
        PrintWriter printWriter = new PrintWriter(writer);
        ex.printStackTrace(printWriter);
        Throwable cause = ex.getCause();
        while (cause != null) {
            cause.printStackTrace(printWriter);
            cause = cause.getCause();
        }
        printWriter.close();
        String stringBuilder = "↓↓↓↓exception↓↓↓↓
    " + writer.toString(); mSave.writeCrash(thread, ex, TAG, stringBuilder); // , 3 , try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } }

    推奨ソース
  • 三方SDK 1.網易雲捕2.テンセントbugly 3.Bugtags 4.タンポポ5.BugHD(fir.im) 6.Testin