1. gzyueqian
      13352868059

      粵嵌Android培訓中心解析Android應用的異常捕獲

      更新時間: 2017-08-08 10:48:22來源: 粵嵌教育瀏覽量:4704

        做為程序員,不愿意看到的就是自己寫的程序崩潰,特別是遇到沒有錯誤信息的崩潰的時候,往往程序員自己也就隨之一起崩潰了。如何捕獲Android程序產生異常時的崩潰信息,粵嵌Android培訓中心為你解析一下,希望能夠帶給你一些啟發,同時解決一些生產上的難題。

        在應用從開發慢慢過渡到線上部署的時候,開發者就逐漸切換到依靠程序日志/運行狀態來進行問題的排查和解決。通常一些第三方廠商會提供這些服務,譬如騰訊的bugly,fabric,Umeng等。前兩者的異常收集和處理較好,然而有一個通用的問題就是需要將symbol文件上傳到廠商服務器,顯然對于注重應用安全和IP保護的開發者,這個行為是值得著重權衡的。而Umeng則注重于運營數據,對于異常捕獲沒有特別大的優勢。所以本文的關注點就是如何在Android項目內部實現自己異常捕獲和分析模塊。

        如何捕獲Java異常?這個問題乍一聽感覺沒有任何難度,這不是用以下的處理Crash大法就解決了嗎?且不說這樣做的對錯,只是并不能很好的解決我們的問題,問題就在于我們對于會發生異常的地方沒有辦法完全預知,對于Checked Exception編譯器會提示我們處理,然而對于Runtime Exception,總是難以預防。NPE常年占據Java Eeception的Top 1不是沒有道理。所以我們的期望是什么,就算我們沒有指定Catch Exception,在程序發生異常的時候,也能通知到我們。

        如何捕獲Native異常?與Java層的異常不同,Native層的異常捕獲要稍微復雜一些。難點主要在于當Native層發生異常時,JVM在收到異常信號后會直接Shutdown,所以我們的Thread.UncaughtExceptionHandler不會被執行。所以我們必須捕獲Linux的異常信號,并執行我們自己的信號處理函數。在此基礎上,我們還必須自己來實現Crash Dump生成和解析。

        如何提示用戶發送錯誤信息?我們在前面已經成功的捕獲了Java異常和Native異常,那么接下來要做的就是順理成章的處理,只要提示用戶將我們需要的Java棧和Native Dmp文件發送給我們,我們就可以進行問題排查和修復了。由于篇幅原因,這里就給出一個思路,我們可以在Java Excpetion和 Native DumpCallback的時候,新起一個進程,在這個進程里面進行日志上傳,甚至可以彈出一個Activity告知用戶,提升用戶體驗。

        當應用上線之后,脫離了Logcat提供的便利,開發者應該如何獲取錯誤信息進行異常修復,本文提供了一些隨手可行的思路,包含了Java層和Native層不同的處理辦法,通過實例代碼步步深入,希望帶給大家一起啟發,同時解決生產上的一些實際問題。以上是粵嵌Android培訓中心解析的Android應用的異常捕獲。




      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲日本香蕉视在线播放 | 亚洲男人综合久久综合 | 综合欧美国产天天 | 日本精品AⅤ在线观看 | 久久免费视频77 | 在线看片亚洲免费 |