一種安卓目標應用崩潰統(tǒng)計方法和裝置的制造方法
【技術領域】
[0001 ]本發(fā)明涉及計算機技術領域,特別是涉及一種安卓目標應用崩潰統(tǒng)計方法和一種安卓目標應用崩潰統(tǒng)計裝置。
【背景技術】
[0002]隨著智能手機的發(fā)展,出現(xiàn)了多種支持智能手機的系統(tǒng)。比如Android(安卓)系統(tǒng)。Android是一種以Linux為基礎的開放源碼操作系統(tǒng),主要使用于手機等移動終端。Android平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成。
[0003]隨著Android系統(tǒng)的市場占有率的增加,越來越多的開發(fā)者基于Android系統(tǒng)開發(fā)APP(Applicat1n,應用),使用戶使用Android手機更方便。
[0004]對于開發(fā)者而言,需要統(tǒng)計各APP的崩潰情況,以獲取發(fā)生崩潰的原因,進一步地提高相應APP的性能。
[0005]先有的APP崩潰統(tǒng)計方法是在創(chuàng)建APP時,通過Hook(鉤子)thread類(線程類)的UncaughtExcept1n函數(shù),抓取APP的崩潰信息。但是這種方法只能檢測出部分APP的崩潰信息,對于自身已經(jīng)實現(xiàn)了UncaughtExcept1nHandler的APP的異常統(tǒng)計,即在該APP內(nèi)部就已經(jīng)存在對異常進行統(tǒng)計的邏輯,利用上述Hook thread類的UncaughtExcept1n函數(shù)方法,就無法檢測并抓取崩潰?目息。由此可見,在先技術中的APP崩潰統(tǒng)計方法可能無法檢測并獲取Android系統(tǒng)中某些APP的崩潰信息,適用性不強。
【發(fā)明內(nèi)容】
[0006]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種安卓目標應用崩潰統(tǒng)計方法和相應的一種安卓目標應用崩潰統(tǒng)計裝置。
[0007]依據(jù)本發(fā)明的一個方面,提供了一種安卓目標應用崩潰統(tǒng)計方法,包括:
[0008]監(jiān)控目標應用的Activity的窗口啟用函數(shù)是否調(diào)用異常捕獲函數(shù);
[0009]如果Activity的窗口啟用函數(shù)調(diào)用異常捕獲函數(shù),則通過鉤子函數(shù)鉤取所述異常捕獲函數(shù);
[0010]通過所述異常捕獲函數(shù)獲取異常消息;
[0011 ]將所述異常消息進行統(tǒng)計。
[0012]優(yōu)選地,所述將所述異常捕獲函數(shù)獲取的異常消息的步驟之后,還包括:
[0013]判斷是否有重復的異常消息;
[0014]如果有重復的異常消息,則對重復的異常消息進行歸并。
[0015]優(yōu)選地,所述判斷是否有重復的異常消息的步驟,包括:
[0016]判斷是否存在時間戳相同的異常消息;如果存在時間戳相同的異常消息,則進入對重復的異常消息進行歸并的步驟。
[0017]優(yōu)選地,在監(jiān)控目標應用的Activity的窗口啟用函數(shù)是否調(diào)用異常捕獲函數(shù)的步驟之前,還包括:
[0018]將所述鉤子函數(shù)注入所述目標應用的應用進程中。
[0019]優(yōu)選地,所述將所述鉤子函數(shù)注入所述目標應用的應用進程中的步驟,包括:
[0020]在系統(tǒng)啟動時,將系統(tǒng)自帶的初始孵化進程替換為預定的第一孵化進程;
[0021 ] 通過所述第一孵化進程將所述鉤子函數(shù)注入所述目標應用的應用進程中。
[0022]優(yōu)選地,所述通過所述第一孵化進程將所述鉤子函數(shù)注入所述目標應用的應用進程中的步驟,包括:
[0023]通過所述第一孵化進程監(jiān)控所述目標應用的目標應用進程是否開始啟動;
[0024]如果所述目標應用的目標應用進程開始啟動,則將所述鉤子函數(shù)注入所述目標應用的應用進程,完成目標應用進程的啟動。
[0025]根據(jù)本發(fā)明的另一方面,提供了一種安卓目標應用崩潰統(tǒng)計裝置,包括:
[0026]監(jiān)控模塊,適于監(jiān)控目標應用的Activity的窗口啟用函數(shù)是否調(diào)用異常捕獲函數(shù);如果Activity的窗口啟用函數(shù)調(diào)用異常捕獲函數(shù),則進入鉤取模塊;
[0027]鉤取模塊,適于通過鉤子函數(shù)鉤取所述異常捕獲函數(shù);
[0028]獲取模塊,適于通過所述異常捕獲函數(shù)獲取異常消息;
[0029]統(tǒng)計模塊,適于將所述異常消息進行統(tǒng)計。
[0030]優(yōu)選地,所述獲取模塊之后,還包括:
[0031]判斷模塊,適于判斷是否有重復的異常消息;如果有重復的異常消息,則進入歸并模塊;
[0032]歸并模塊,適于對重復的異常消息進行歸并。
[0033]優(yōu)選地,所述判斷模塊,包括:
[0034]判斷子模塊,適于判斷是否存在時間戳相同的異常消息;如果存在時間戳相同的異常消息,則進入歸并模塊。
[0035]優(yōu)選地,在監(jiān)控模塊之前,還包括:
[0036]注入模塊,適于將所述鉤子函數(shù)注入所述目標應用的應用進程中。
[0037]優(yōu)選地,所述注入模塊,包括:
[0038]孵化進程替換子模塊,適于在系統(tǒng)啟動時,將系統(tǒng)自帶的初始孵化進程替換為預定的第一孵化進程;
[0039]注入子模塊,適于通過所述第一孵化進程將所述鉤子函數(shù)注入所述目標應用的應用進程中。
[0040]優(yōu)選地,所述注入子模塊,包括:
[0041 ]啟動監(jiān)控子模塊,適于通過所述第一孵化進程監(jiān)控所述目標應用的目標應用進程是否開始啟動;
[0042]鉤子函數(shù)注入子模塊,適于如果所述目標應用的目標應用進程開始啟動,則將所述鉤子函數(shù)注入所述目標應用的應用進程,完成目標應用進程的啟動。
[0043]根據(jù)本發(fā)明的另一方面,提供了一種安卓目標應用崩潰統(tǒng)計設備,包括:
[0044]存儲器,加載有多條可執(zhí)行指令;
[0045]處理器,執(zhí)行所述多條可執(zhí)行指令;所述多條可執(zhí)行指令包括執(zhí)行以下步驟的方法:
[0046]監(jiān)控目標應用的Activity的窗口啟用函數(shù)是否調(diào)用異常捕獲函數(shù);
[0047]如果Activity的窗口啟用函數(shù)調(diào)用異常捕獲函數(shù),則通過鉤子函數(shù)鉤取所述異常捕獲函數(shù);
[0048]通過所述異常捕獲函數(shù)獲取異常消息;
[0049]將所述異常消息進行統(tǒng)計。
[0050]根據(jù)本發(fā)明的安卓目標應用崩潰統(tǒng)計方法可以監(jiān)控目標應用的Activity的窗口啟用函數(shù)是否調(diào)用異常捕獲函數(shù),如果Activity的窗口啟用函數(shù)調(diào)用異常捕獲函數(shù),則通過鉤子函數(shù)鉤取所述異常捕獲函數(shù),通過所述異常捕獲函數(shù)獲取異常消息,并將所述異常消息進行統(tǒng)計,由此解決了先技術中的應用崩潰統(tǒng)計方法可能無法檢測并獲取Android系統(tǒng)中某些目標應用的崩潰信息,適用性不強等問題,取得了提高檢測并獲取Android中目標應用崩潰信息的全面性和適用性的有益效果。
[0051]上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【附圖說明】
[0052]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0053]圖1示出了根據(jù)本發(fā)明一個實施例的一種安卓目標應用崩潰統(tǒng)計方法實施例的步驟流程圖;
[0054]圖2示出了根據(jù)本發(fā)明一個實施例的一種安卓目標應用崩潰統(tǒng)計方法實施例的步驟流程圖;
[0055]圖3示出了根據(jù)本發(fā)明一個實施例的一種安卓目標應用崩潰統(tǒng)計裝置實施例的結構框圖;
[0056]圖4示出了根據(jù)本發(fā)明一個實施例的一種安卓目標應用崩潰統(tǒng)計裝置實施例的結構框圖;
[0057]圖5示出了根據(jù)本發(fā)明一個實施例的一種安卓目標應用崩潰統(tǒng)計設備實施例的結構框圖。
【具體實施方式】
[0058]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0059]實施例一
[0060]參照圖1,示出了根據(jù)本發(fā)明一個實施例的一種安卓目標應用崩潰統(tǒng)計方法實施例的步驟流程圖,具體可以包括如下步驟:
[0061]步驟110,監(jiān)控目標應用的Activity的窗口啟用函數(shù)是否調(diào)用異常捕獲函數(shù);如果Activity的窗口啟用函數(shù)調(diào)用異常捕獲函數(shù),則進入步驟120。
[0062]上述的目標應用可以包括在Android系統(tǒng)中運行的需要獲取崩潰信息的各應用,如360安全衛(wèi)士、360安全瀏覽器等。
[0063]Activity是Android組件中最基本也是最為常見用的四大組件之一,Activity是一個應用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務。在一個Android應用中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監(jiān)聽并處理用戶的事件做出響應。在實際應用中,一個應用中至少包含一個Activity。
[0064]異常捕獲函數(shù),即UncaughtExcept1n函數(shù),是用于獲取對應目標應用崩潰的異常消息的函數(shù),在實際應用中,異常消息可以包括導致目標應用崩潰原因、具體在應用程序中的位置等。在本發(fā)明實施例中,以Activity為單位,監(jiān)控目標應用的Activity的窗口啟用函數(shù)是否調(diào)用異常捕獲函數(shù)。如果目標應用的Activity的窗口啟用函數(shù)調(diào)用異常捕獲函數(shù),則可以進入步驟120,而如果目標應用的Activity的窗口啟用函數(shù)未調(diào)用異常捕獲函數(shù),則不執(zhí)行任何步驟。
[0065]在實際應用中,對于一個APP,如果要啟動該APP的一個Activity,那么需要先調(diào)用系統(tǒng)的Activity啟動函數(shù),S卩OnCreate函數(shù),然后執(zhí)行后續(xù)操作。OnCreate函數(shù)是一個消息響應函數(shù),是響應WM_CREATE消息的一個函數(shù),而WM_CRE ATE消息是由Cr e a t e函數(shù)調(diào)用的。OnCreate函數(shù)主要做這個Activity啟動時一些必要的