安卓如何獲取APP的崩潰日志


參考:https://www.jianshu.com/p/644078912cfd?from=singlemessage

 

碼字辛苦!轉載請注明出處!

安卓APP一旦發生任何報錯,就會停止運行,這是令許多開發者頭疼的問題,

很多情況下,一些隱性BUG在測試部門通過,而在上架之后發生小面積崩潰,這時候的報錯因為沒有日志,導致BUG無從查起。

那么,只能通過用戶反饋消耗大量的人力和時間去復現它嗎?

 

 
 

 

其實只要在Application中插入一小段代碼,就可以把完整的錯誤日志全部捕捉出來:

        //記錄崩潰信息
        final Thread.UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread thread, Throwable throwable) {
                //獲取崩潰時的UNIX時間戳
                long timeMillis = System.currentTimeMillis();
                //將時間戳轉換成人類能看懂的格式,建立一個String拼接器
                StringBuilder stringBuilder = new StringBuilder(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date(timeMillis)));
                stringBuilder.append(":\n");
                //獲取錯誤信息
                stringBuilder.append(throwable.getMessage());
                stringBuilder.append("\n");
                //獲取堆棧信息
                StringWriter sw = new StringWriter();
                PrintWriter pw = new PrintWriter(sw);
                throwable.printStackTrace(pw);
                stringBuilder.append(sw.toString());

                 //這就是完整的錯誤信息了,你可以拿來上傳服務器,或者做成本地文件保存等等等等
                String errorLog = stringBuilder.toString();

                 //最后如何處理這個崩潰,這里使用默認的處理方式讓APP停止運行
                defaultHandler.uncaughtException(thread, throwable);
            }
       });

各位有自我修養的工程師們還不快get√起來~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM