<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          App Crash 詳解

          共 2515字,需瀏覽 6分鐘

           ·

          2020-12-31 08:57

          和你一起終身學(xué)習(xí),這里是程序員Android

          經(jīng)典好文推薦,通過閱讀本文,您將收獲以下知識點(diǎn):

          一、App Crash 概述
          二、檢測Crash 問題
          三、Android vitals
          四、分析App Crash
          五、復(fù)現(xiàn)Crash 小提示
          六、Logcat 抓取復(fù)現(xiàn)問題Crash的Log

          一、 App Crash 概述

          Android APP Crash通常是由未捕獲的Exceptionsignal引起app異常退出。

          如果app使用Java語言編寫,那么,當(dāng)Throwable拋出未處理的異常時,此時就會引起?app Crash

          如果app 使用native-code編寫,那么,當(dāng)執(zhí)行時遇到未處理的signal(例如SIGSEGV)時,app就會?Crash并退出。

          當(dāng)應(yīng)用程序崩潰時,Android終止應(yīng)用程序的進(jìn)程并顯示一個對話框,讓用戶知道應(yīng)用程序已經(jīng)停止。

          app crash 舉例

          App Crash?不僅發(fā)生在前臺進(jìn)程,任何app組件,例如Broadcast Receivers,Content Providers,Service等在后臺運(yùn)行的組件,也可以引起App Crash。這些Crash很容易引起用戶混淆,因?yàn)樗麄儧]有直接參與到你的app中。

          二、檢測Crash 問題

          當(dāng)你的app已經(jīng)上線,過多的Crash?會給用戶帶來一個很糟糕的體驗(yàn)。Google也意思到這一點(diǎn),Android vitals會幫我們意識到此問題的嚴(yán)重性。

          三、 Android vitals

          當(dāng)你的應(yīng)用出現(xiàn)過多的Crash時候,Android vitals可以通過Play Console幫助你提高app的性能。
          Android vitals?認(rèn)為APP?過多Crash場景如下:

          • 使用一天APP,出現(xiàn)一次Crash的概率在1.09%之上。

          • 使用一天APP,出現(xiàn)兩次或多次 Crash 的概率在0.18%之上

          如需獲取更多信息,請查看Play Console

          四、 分析App Crash

          解決崩潰可能很困難。但是,如果您能夠確定崩潰的根本原因,則很可能可以找到解決方案。

          有很多情況可能會導(dǎo)致應(yīng)用程序崩潰。一些原因是顯而易見的,比如檢查一個空值或空字符串,而另外一些更微妙,比如將無效參數(shù)傳遞給API甚至是復(fù)雜的多線程交互。

          1.讀取堆棧信息

          解決App Crash,首先要找到在那些代碼發(fā)生的。你可以通過logcat或者play Console等輸出的堆棧信息進(jìn)行分析查看。

          Crash 堆棧信息

          上述Crash 堆棧信息包含 以下信息

          • 1.Crash app 包名

          • 2.Crash app PID

          • 3.引起Crash的異常信息(此異常時引起Crash的重要原因)

          • 4.引起Crash 的代碼位置,行號,哪個函數(shù)調(diào)用等等

          • 5.對于被調(diào)用的每個函數(shù),另一行顯示前面的調(diào)用站點(diǎn)(稱為棧幀)。

          通過走棧和檢查代碼,你可能會發(fā)現(xiàn)一個地方傳遞了一個不正確的值。如果您的代碼沒有出現(xiàn)在堆棧跟蹤中,則可能是在某處將異常操作傳遞給了一個無效的參數(shù)。您可以經(jīng)常通過檢查堆棧跟蹤的每一行,找到您使用的任何API類,并確認(rèn)您傳遞的參數(shù)是正確的,并且從允許的地方調(diào)用該類來判斷發(fā)生了什么。

          五、復(fù)現(xiàn)Crash 小提示

          您可能無法通過啟動模擬器或?qū)⒃O(shè)備連接到計(jì)算機(jī)來重現(xiàn)問題。開發(fā)環(huán)境傾向于擁有更多資源,例如帶寬,內(nèi)存和存儲。使用異常類型來確定稀缺資源,或者在Android版本,設(shè)備類型或應(yīng)用版本之間找到關(guān)聯(lián)。

          1. OutOfMemoryError 內(nèi)存錯誤

          如果你有一個OutOfMemoryError,那么你可以創(chuàng)建一個內(nèi)存容量較低的模擬器來開始,下圖顯示了您可以控制設(shè)備上的內(nèi)存量的AVD管理器設(shè)置。

          創(chuàng)建低 RAM模擬器復(fù)現(xiàn)低內(nèi)存問題

          2. Networking exceptions 網(wǎng)絡(luò)異常

          由于用戶經(jīng)常進(jìn)出移動或WiFi網(wǎng)絡(luò)覆蓋范圍,因此在應(yīng)用程序網(wǎng)絡(luò)中,例外情況通常不應(yīng)被視為錯誤,而應(yīng)視為意外發(fā)生的正常運(yùn)行狀況。

          如果您需要重現(xiàn)網(wǎng)絡(luò)異常(例如UnknownHostException),請嘗試在應(yīng)用程序嘗試使用網(wǎng)絡(luò)時打開飛行模式。

          另一個選擇是通過選擇網(wǎng)絡(luò)速度仿真和/或網(wǎng)絡(luò)延遲來降低仿真器中網(wǎng)絡(luò)的質(zhì)量。您可以使用AVD管理器上的速度和延遲設(shè)置,也可以使用-netdelay-netspeed標(biāo)志啟動模擬器,如以下命令行示例所示:

          emulator -avd [your-avd-image] -netdelay 20000 -netspeed gsm

          六、 Logcat 抓取復(fù)現(xiàn)問題Crash的Log

          Logcat是一個命令行工具,用于轉(zhuǎn)儲系統(tǒng)消息日志,其中包括設(shè)備引發(fā)錯誤時的堆疊追蹤以及從您的應(yīng)用使用Log類編寫的消息。

          1. 命令行語法

          [adb] logcat [

          Logcat 命令行選項(xiàng)

          2. 啟動 logcat

          [adb] logcat [

          3. 過濾日志輸出

          Log?類允許您在logcat?工具中顯示的代碼中創(chuàng)建日志條目。常用的日志記錄方法包括:

          • Log.v(String, String)(詳細(xì))

          • Log.d(String, String)(調(diào)試)

          • Log.i(String, String)(信息)

          • Log.w(String, String)(警告)

          • Log.e(String, String)(錯誤)

          4. Logcat 個人建議

          抓取Log之前請先清除緩存中的Log信息,防止干擾分析問題。

          • 清除緩存Log信息命令如下:

          adb logcat -c
          • 復(fù)現(xiàn)問題,抓取log方法如下

          adb logcat > 追加到指定文件中

          Logcat抓取Log個人建議

          至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請聯(lián)系小編刪除。同時感謝您的閱讀,期待您的關(guān)注。

          點(diǎn)個在看,方便您使用時快速查找!

          瀏覽 59
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚州国产三级精品视频 | 草逼com | 免费一级无码婬片A片APP直播 | 日本亚洲女人在线视频 | 天天日,天天干,天天射 |