本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序的分析方法和裝置。
背景技術(shù):
目前,移動終端是移動互聯(lián)網(wǎng)的重要入口,移動終端中安裝的應(yīng)用程序也五花八門,種類日益繁多。因此對于用戶而言,有需要對移動終端中各類應(yīng)用程序進行監(jiān)控的需求,以對這些應(yīng)用程序進行管理。例如,移動終端的電池電量是有限的,需要對在移動終端中運行的應(yīng)用程序的耗電情況進行跟蹤分析。
目前的一種實施場景中,在針對移動終端中應(yīng)用程序的運行監(jiān)控時,需要將移動終端實時連接計算機,將移動終端的運行狀態(tài)保存成文件,然后再由人工對移動終端中的應(yīng)用程序進行分析。由于目前的一種實施場景中需要實時存儲文件,操作過程復(fù)雜,不能直接在移動終端上直接查看分析結(jié)果,導(dǎo)致對應(yīng)用程序的分析效率很低。并且目前的一種實施場景中在實時存儲文件之后,還需要依靠人工去分析代碼邏輯,并需要進行大量的測試后才能發(fā)現(xiàn)問題,耗時耗人工,效率低下。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種應(yīng)用程序的分析方法和裝置,用于通過移動終端本身進行應(yīng)用程序的分析,提高應(yīng)用程序分析的效率。
為解決上述技術(shù)問題,本發(fā)明實施例提供以下技術(shù)方案:
第一方面,本發(fā)明實施例提供一種應(yīng)用程序的分析方法,包括:
從移動終端中確定用戶需要監(jiān)控的應(yīng)用程序;
獲取所述應(yīng)用程序在所述移動終端中運行時調(diào)用的軟件和硬件的配置信息;
當所述應(yīng)用程序在所述移動終端中啟動時,根據(jù)所述軟件和硬件的配置 信息監(jiān)控所述應(yīng)用程序中配置的函數(shù)調(diào)用所述軟件和硬件的調(diào)用情況以及所述軟件和硬件根據(jù)所述函數(shù)運行的運行情況;
根據(jù)所述函數(shù)對所述軟件和硬件的調(diào)用情況、所述軟件和硬件根據(jù)所述函數(shù)運行的運行情況,對所述應(yīng)用程序進行分析。
第二方面,本發(fā)明實施例還提供一種應(yīng)用程序的分析裝置,包括:
程序確定模塊,用于從移動終端中確定用戶需要監(jiān)控的應(yīng)用程序;
配置獲取模塊,用于獲取所述應(yīng)用程序在所述移動終端中運行時調(diào)用的軟件和硬件的配置信息;
函數(shù)監(jiān)控模塊,用于當所述應(yīng)用程序在所述移動終端中啟動時,根據(jù)所述軟件和硬件的配置信息監(jiān)控所述應(yīng)用程序中配置的函數(shù)調(diào)用所述軟件和硬件的調(diào)用情況以及所述軟件和硬件根據(jù)所述函數(shù)運行的運行情況;
分析模塊,用于根據(jù)所述函數(shù)對所述軟件和硬件的調(diào)用情況、所述軟件和硬件根據(jù)所述函數(shù)運行的運行情況,對所述應(yīng)用程序進行分析。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
在本發(fā)明實施例中,首先從移動終端中確定用戶需要監(jiān)控的應(yīng)用程序,然后獲取應(yīng)用程序在移動終端中運行時調(diào)用的軟件和硬件的配置信息,當應(yīng)用程序在移動終端中啟動時,根據(jù)軟件和硬件的配置信息監(jiān)控應(yīng)用程序中配置的函數(shù)調(diào)用軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)該函數(shù)運行的運行情況,根據(jù)函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況,對應(yīng)用程序進行分析。本發(fā)明實施例中通過移動終端自身就可以完成應(yīng)用程序的分析,并且本發(fā)明實施例中可以對應(yīng)用程序中配置的函數(shù)進行監(jiān)控,實現(xiàn)從函數(shù)層次上的監(jiān)控,獲取到調(diào)用情況和運行情況也是針對應(yīng)用程序中底層配置的函數(shù),因此可以更精細的分析應(yīng)用程序,縮短應(yīng)用程序分析的時間,提高應(yīng)用程序分析的效率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的技術(shù)人員來講,還可以根據(jù)這些附圖獲得 其他的附圖。
圖1為本發(fā)明實施例提供的一種應(yīng)用程序的分析方法的流程方框示意圖;
圖2為本發(fā)明實施例提供的應(yīng)用程序的分析方法用于應(yīng)用程序的耗電定位分析的應(yīng)用流程示意圖;
圖3為本發(fā)明實施例提供的移動終端中正在運行的進程的實現(xiàn)場景示意圖;
圖4為本發(fā)明實施例提供的移動終端中代碼文件的存儲方式示意圖;
圖5-a為本發(fā)明實施例提供的對移動終端中應(yīng)用程序進行耗電分析的一種分析結(jié)果示意圖;
圖5-b為本發(fā)明實施例提供的對移動終端中應(yīng)用程序進行耗電分析的另一種分析結(jié)果示意圖;
圖5-c為本發(fā)明實施例提供的對移動終端中應(yīng)用程序進行耗電分析的另一種分析結(jié)果示意圖;
圖6-a為本發(fā)明實施例提供的一種應(yīng)用程序的分析裝置的組成結(jié)構(gòu)示意圖;
圖6-b為本發(fā)明實施例提供的一種函數(shù)監(jiān)控模塊的組成結(jié)構(gòu)示意圖;
圖7為本發(fā)明實施例提供的應(yīng)用程序的分析方法應(yīng)用于終端的組成結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明實施例提供了一種應(yīng)用程序的分析方法和裝置,用于通過移動終端本身進行應(yīng)用程序的分析,提高應(yīng)用程序分析的效率。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,下面所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部實施例?;诒景l(fā)明中的實施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的 過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。
以下分別進行詳細說明。
本發(fā)明應(yīng)用程序的分析方法的一個實施例,具體可以應(yīng)用于移動終端中應(yīng)用程序的自動分析過程中,請參閱圖1所示,本發(fā)明一個實施例提供的應(yīng)用程序的分析方法,可以包括如下步驟:
101、從移動終端中確定用戶需要監(jiān)控的應(yīng)用程序。
在本發(fā)明實施例中,移動終端由用戶操作,用戶可以確定在移動終端中哪個或者哪些應(yīng)用程序需要進行監(jiān)控,例如用戶操作移動終端,用戶點擊選取需要監(jiān)控的應(yīng)用程序,因此可以根據(jù)用戶的操作行為確定在移動終端中安裝的哪個應(yīng)用程序需要進行監(jiān)控。
102、獲取應(yīng)用程序在移動終端中運行時調(diào)用的軟件和硬件的配置信息。
在確定移動終端中需要監(jiān)控的應(yīng)用程序之后,根據(jù)該應(yīng)用程序的程序配置要求獲取該應(yīng)用程序在運行時需要調(diào)用移動終端中的哪些軟件和硬件,對于移動終端中安裝的不同應(yīng)用程序,在該應(yīng)用程序運行時需要調(diào)用不同的終端軟件和硬件配置。其中,本發(fā)明實施例中軟件和硬件的配置信息可以指的是移動終端中軟件和硬件的詳細配置、調(diào)用方式、存儲路徑等信息,對于移動終端中的不同軟件以及硬件,其對應(yīng)的配置信息可以具體配置。
在本發(fā)明的一些實施例中,步驟102中獲取到的軟件和硬件的配置信息,具體可以包括如下信息中的至少一種:中央處理器(英文全稱:centralprocessingunit,英文簡稱:cpu)的配置、全球定位系統(tǒng)(英文全稱:globalpositioningsystem,英文簡稱:gps)的配置、無線局域網(wǎng)(英文全稱:wirelessfidelity,英文簡稱:wifi)的配置、喚醒鎖屏(英文全稱:wakelock)程序的配置、感應(yīng)器(英文全稱:sensor)的配置、多媒體掃描程序的配置、藍牙的配置。例如,一個即時通訊工具的應(yīng)用程序在運行時需要調(diào)用移動終端中的cpu、wifi,還可能調(diào)用移動終端中的gps。又如,跑步健身的應(yīng)用程序在運行時需要調(diào)用移動終端中的cpu、重力感應(yīng)器??梢岳斫獾氖?,在本發(fā)明實施例中,對于需要監(jiān)控的應(yīng)用程序的不同,此處可以獲取到移動終端中的軟件和硬件的配置信息也是不同的,可以結(jié)合具體的應(yīng)用場景來確定應(yīng)用 程序需要調(diào)用的終端軟件和硬件,進而獲取到這些終端軟件和硬件的配置信息。
在本發(fā)明的一些實施例中,步驟102根據(jù)軟件和硬件的配置信息監(jiān)控應(yīng)用程序中配置的函數(shù)調(diào)用軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)函數(shù)運行的運行情況,具體可以包括如下步驟:
a1、確定應(yīng)用程序中配置的需要執(zhí)行的函數(shù);
a2、通過重配置應(yīng)用程序運行的虛擬機的方式修改需要執(zhí)行的函數(shù)的調(diào)用指針;
a3、根據(jù)修改后的調(diào)用指針在函數(shù)開始執(zhí)行之前啟動對函數(shù)的監(jiān)控,并且監(jiān)控函數(shù)從開始執(zhí)行直至執(zhí)行結(jié)束的整個執(zhí)行過程中對軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)函數(shù)運行的運行情況。
其中,首先確定出需要監(jiān)控應(yīng)用程序中配置的哪個函數(shù),例如可以根據(jù)應(yīng)用程序中配置所有函數(shù)的調(diào)用先后順序來確定,也可以根據(jù)預(yù)先配置的代碼區(qū)域范圍來確定需要監(jiān)控的函數(shù)。確定需要監(jiān)控的函數(shù)之后,該函數(shù)的執(zhí)行方式以及調(diào)用的具體軟件和硬件都可以確定下來,接下來對應(yīng)用程序運行的虛擬機進行重新配置,修改需要執(zhí)行的函數(shù)的調(diào)用指針,將該調(diào)用指針指向監(jiān)控流程的觸發(fā),根據(jù)修改后的調(diào)用指針在函數(shù)開始執(zhí)行之前啟動對函數(shù)的監(jiān)控,并且監(jiān)控函數(shù)從開始執(zhí)行直至執(zhí)行結(jié)束的整個執(zhí)行過程中對軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)函數(shù)運行的運行情況。例如,可以對應(yīng)用程序運行的java虛擬機進行重配置,在函數(shù)開始執(zhí)行之前先將調(diào)用指針指向監(jiān)控啟動,在監(jiān)控啟動之后,開始按照函數(shù)的配置要求調(diào)用具體的軟件和硬件,軟件和硬件被調(diào)用之后軟件和硬件根據(jù)函數(shù)的配置要求運行,此時函數(shù)的整個執(zhí)行過程都需要被監(jiān)控,以備后續(xù)步驟中對應(yīng)用程序配置的函數(shù)進行分析。
在本發(fā)明的另一些實施例中,步驟102根據(jù)軟件和硬件的配置信息監(jiān)控應(yīng)用程序中配置的函數(shù)調(diào)用軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)函數(shù)運行的運行情況,具體可以包括如下步驟:
b1、在函數(shù)執(zhí)行時,記錄函數(shù)調(diào)用的軟件和硬件的類型,函數(shù)運行的堆棧、函數(shù)開始執(zhí)行的時間和執(zhí)行結(jié)束的時間,并計算軟件和硬件根據(jù)函數(shù)運 行的運行時間和函數(shù)的運行總次數(shù)。
上述實現(xiàn)方式對監(jiān)控的具體實現(xiàn)流程進行詳細說明,例如在函數(shù)從開始執(zhí)行直至執(zhí)行結(jié)束的整個執(zhí)行過程中,記錄函數(shù)調(diào)用的軟件和硬件的類型,比如該函數(shù)調(diào)用了移動終端中的哪個軟件以及哪個軟件,并且還可以記錄下函數(shù)運行的堆棧,例如,記錄堆棧是調(diào)用系統(tǒng)的printstack方法來獲得,每個函數(shù)都有唯一的堆棧,運行堆??梢詭椭脩舳ㄎ坏骄唧w的代碼行。在函數(shù)執(zhí)行時還可以記錄函數(shù)的開始執(zhí)行的時間和執(zhí)行結(jié)束的時間,通過這兩個時間的差值,可以確定軟件和硬件根據(jù)函數(shù)運行的運行時間,通過函數(shù)的多個開始執(zhí)行的時間的統(tǒng)計,可以累加出函數(shù)的運行總次數(shù)??梢岳斫獾氖?,在對應(yīng)用程序需要進行不同功能的分析場景中,需要監(jiān)控的具體調(diào)用情況和運行請情況也可以相應(yīng)變化,具體此處不作為對本發(fā)明實施例的限定。
103、當應(yīng)用程序在移動終端中啟動時,根據(jù)軟件和硬件的配置信息監(jiān)控應(yīng)用程序中配置的函數(shù)調(diào)用軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)函數(shù)運行的運行情況。
在本發(fā)明實施例中,通過前述步驟獲取到需要監(jiān)控的應(yīng)用程序調(diào)用的軟件和硬件之后,還需要獲取到這些軟件和硬件的配置信息。接下來就可以對應(yīng)用程序進行監(jiān)控,本發(fā)明實施例中解析應(yīng)用程序可以得到該應(yīng)用程序配置的函數(shù),應(yīng)用程序在運行時最后都需要由具體的函數(shù)調(diào)用來執(zhí)行,本發(fā)明實施例中可以在函數(shù)層面上對應(yīng)用程序進行監(jiān)控,當應(yīng)用程序在移動終端中啟動時,根據(jù)軟件和硬件的配置信息對應(yīng)用程序中的函數(shù)進行監(jiān)控,監(jiān)控應(yīng)用程序中配置的函數(shù)調(diào)用軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)函數(shù)運行的運行情況。其中,需要監(jiān)控應(yīng)用程序中的哪個函數(shù)或者哪些函數(shù)可以根據(jù)具體的應(yīng)用場景來確定,舉例說明如下,一種可行的實現(xiàn)方式是可以監(jiān)控應(yīng)用程序中的所有函數(shù),即對應(yīng)用程序中配置的每個函數(shù),都監(jiān)控每個函數(shù)調(diào)用的軟件和硬件以及這些軟件和硬件根據(jù)每個函數(shù)的運行情況。另一種可行的實現(xiàn)方式是可以結(jié)合具體的函數(shù)配置算法來確定需要監(jiān)控應(yīng)用程序中的哪些函數(shù),例如為了減少監(jiān)控帶來的開銷只監(jiān)控應(yīng)用程序中配置的所有函數(shù)中一半的函數(shù),可以按照如下方式來確定選取的一半函數(shù),對于應(yīng)用程序中每隔一個函數(shù)就監(jiān)控一個函數(shù)。另一種可行的實現(xiàn)方式是可以按照應(yīng)用程序中 代碼行的保存位置,或者按照應(yīng)用程序中函數(shù)的功能分類來確定需要監(jiān)控的具體函數(shù)。需要說明的是,本發(fā)明實施例中是對應(yīng)用程序中底層的函數(shù)層面進行監(jiān)控,對函數(shù)調(diào)用的具體軟件和硬件進行監(jiān)控,對函數(shù)的監(jiān)控不影響到函數(shù)本身的執(zhí)行,因為監(jiān)控函數(shù)調(diào)用的軟件和硬件運行情況都是在移動終端的內(nèi)存中直接進行的,不需要保存為單獨的文件。
需要說明的是,本發(fā)明實施例中,步驟103中在應(yīng)用程序啟動時就開始監(jiān)控該應(yīng)用程序,從而對應(yīng)用程序的整個運行過程都可以做到全面實時監(jiān)控,在監(jiān)控應(yīng)用程序中配置的函數(shù)時,這些函數(shù)對軟件和硬件的調(diào)用情況以及這些軟件和硬件的運行情況都可以實時生成,其中函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況可以根據(jù)具體的應(yīng)用場景進行具體舉例說明,詳見后續(xù)實施例中對移動終端中調(diào)用情況和運行情況的舉例說明。
104、根據(jù)函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況,對應(yīng)用程序進行分析。
在本發(fā)明實施例中,通過步驟103對應(yīng)用程序中配置的函數(shù)進行監(jiān)控之后,可以得到函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況,通過步驟103中對應(yīng)用程序中函數(shù)的監(jiān)控可以進行應(yīng)用程序的分析,其中函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況中記載有應(yīng)用程序中函數(shù)的具體執(zhí)行過程,結(jié)合對軟件和硬件的具體對比標準可以定位出應(yīng)用程序中存在異常問題的具體函數(shù)。步驟104中根據(jù)上述調(diào)用情況和運行情況對應(yīng)用程序的分析可以有多種實現(xiàn)方式,但是通過對應(yīng)用程序中函數(shù)層級的分析,便于及時準確發(fā)現(xiàn)應(yīng)用程序中存在的問題,從而應(yīng)用程序開發(fā)人員就可以對應(yīng)用程序進行后續(xù)完善。本發(fā)明實施例中對函數(shù)層面的監(jiān)控可以準確定位到應(yīng)用程序中的具體代碼,適用于應(yīng)用程序開發(fā)人員對應(yīng)用程序的分析過程,降低應(yīng)用程序開發(fā)人員定位問題的難度。
在本發(fā)明的一些實施例中,在步驟b1執(zhí)行的實現(xiàn)場景中,步驟104中根據(jù)函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況,對應(yīng)用程序進行分析,具體可以包括如下步驟:
c1、根據(jù)函數(shù)運行的運行時間和函數(shù)的運行總次數(shù)分析出應(yīng)用程序中存在異常情況的函數(shù),并分析應(yīng)用程序中存在異常情況的函數(shù)對應(yīng)的堆棧。
其中,獲取到函數(shù)運行的運行時間和函數(shù)的運行總次數(shù)之后,根據(jù)函數(shù)運行的運行時間和函數(shù)的運行總次數(shù)分析出應(yīng)用程序中哪個函數(shù)存在異常情況。例如,異常情況可以根據(jù)函數(shù)的不同類型指定對應(yīng)的對比標準,判斷應(yīng)用程序中函數(shù)的運行時間和運行總次數(shù)是否會超過預(yù)先配置的對比標準,對于超對對比標準的函數(shù),可以確定該函數(shù)是應(yīng)用程序中存在異常情況的函數(shù),由前述步驟b1的說明可知,記錄有函數(shù)運行的堆棧,則對于存在異常情況的函數(shù),可以分析該函數(shù)對應(yīng)的堆棧,由堆??梢灾苯佣ㄎ怀龃嬖诋惓G闆r的代碼行。需要說明的是,應(yīng)用程序中函數(shù)存在異常情況可以指的是函數(shù)的耗電情況存在異常,或者函數(shù)的執(zhí)行會產(chǎn)生惡意后果,例如偷取用戶的終端流量或者盜取用戶的賬戶信息等。
進一步的,在本發(fā)明的另一些實施例中,步驟c1根據(jù)函數(shù)運行的運行時間和函數(shù)的運行總次數(shù)分析出應(yīng)用程序中存在異常情況的函數(shù),并分析應(yīng)用程序中存在異常情況的函數(shù)對應(yīng)的堆棧,具體可以包括如下步驟:
c11、計算應(yīng)用程序從移動終端的前臺系統(tǒng)切換到移動終端的后臺系統(tǒng)直至應(yīng)用程序從后臺系統(tǒng)切換回前臺系統(tǒng)之間的程序靜默周期;
c12、若在程序靜默周期內(nèi)移動終端中有函數(shù)執(zhí)行,確定應(yīng)用程序中在程序靜默周期內(nèi)執(zhí)行的函數(shù)存在異常情況,并分析存在異常情況的函數(shù)對應(yīng)的堆棧。
其中,以應(yīng)用程序在移動終端的前臺系統(tǒng)和后臺系統(tǒng)的切換為例來判斷存在異常情況的函數(shù),先記錄下應(yīng)用程序從移動終端的前臺系統(tǒng)切換到移動終端的后臺系統(tǒng)的第一時間點t1,此時應(yīng)用程序從退到了移動終端的后臺系統(tǒng),此時應(yīng)用程序在后臺系統(tǒng)保留,不應(yīng)該會有太多的消耗系統(tǒng)資源的行為,當該應(yīng)用程序切回到前臺系統(tǒng)時再記錄下當前的第二時間點t2,則通過第二時間點和第一時間點之間的時間差就可以計算出應(yīng)用程序在后臺停留的時間段,即該應(yīng)用程序的程序靜默周期為(t1、t2),由于本發(fā)明實施例中是對應(yīng)用程序中函數(shù)的運行進行監(jiān)控的,因此可以判斷應(yīng)用程序中哪個函數(shù)在該程序靜默周期(t1、t2)之間執(zhí)行了,在程序靜默周期(t1、t2)之間執(zhí)行的函數(shù)就可以認為是在應(yīng)用程序退出到后臺系統(tǒng)時執(zhí)行的異常函數(shù),該異常函數(shù)對應(yīng)的堆??梢杂糜诜治鲈摦惓:瘮?shù)的異常行為,應(yīng)用程序開發(fā)人員可以對 該異常函數(shù)進行調(diào)試分析。
在本發(fā)明的一些實施例中,本發(fā)明實施例提供的應(yīng)用程序的分析方法還可以將移動終端實時連接計算機,實時分析移動終端中的cpu、gps、wifi等運行時調(diào)用的函數(shù)。例如可以將用戶用移動終端連接計算機,由安裝在計算機中的終端監(jiān)控工具進行分析。例如,在計算機中安裝dalvik虛擬機調(diào)試監(jiān)控服務(wù)(英文全稱:dalvikdebugmonitorservice,英文簡稱:ddms)工具,用戶操作ddms工具,ddms會按照用戶的要求向移動終端發(fā)送命令,然后ddms工具開始記錄cpu、gps、wifi等運行時調(diào)用的函數(shù),實時獲取移動終端的運行狀態(tài)所需要運行的函數(shù),然后再根據(jù)函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況,對應(yīng)用程序進行分析,詳見前述實施例的內(nèi)容說明,此處不再贅述。
通過以上實施例對本發(fā)明實施例的描述可知,首先從移動終端中確定用戶需要監(jiān)控的應(yīng)用程序,然后獲取應(yīng)用程序在移動終端中運行時調(diào)用的軟件和硬件的配置信息,當應(yīng)用程序在移動終端中啟動時,根據(jù)軟件和硬件的配置信息監(jiān)控應(yīng)用程序中配置的函數(shù)調(diào)用軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)該函數(shù)運行的運行情況,根據(jù)函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況,對應(yīng)用程序進行分析。本發(fā)明實施例中通過移動終端自身就可以完成應(yīng)用程序的分析,并且本發(fā)明實施例中可以對應(yīng)用程序中配置的函數(shù)進行監(jiān)控,實現(xiàn)從函數(shù)層次上的監(jiān)控,獲取到調(diào)用情況和運行情況也是針對應(yīng)用程序中底層配置的函數(shù),因此可以更精細的分析應(yīng)用程序,縮短應(yīng)用程序分析的時間,提高應(yīng)用程序分析的效率。
為便于更好的理解和實施本發(fā)明實施例的上述方案,下面舉例相應(yīng)的應(yīng)用場景來進行具體說明。接下來以本發(fā)明實施例提供的應(yīng)用程序的分析方法應(yīng)用于程序的耗電自動分析中為例,本發(fā)明實施例能夠抓取應(yīng)用程序的狀態(tài)信息,并能根據(jù)策略,自動分析出程序耗電的問題,并給出對應(yīng)程序代碼的運行地址,方便應(yīng)用程序開發(fā)人員定位問題。本發(fā)明實施例能夠在不影響用戶使用的情況下獲取目標程序的耗電原因,定位到具體代碼,便于開發(fā)人員重新優(yōu)化該耗電問題。
本發(fā)明實施例提供的應(yīng)用程序的分析方法可以通過在移動終端側(cè)實現(xiàn)的 監(jiān)控模塊來完成,這個監(jiān)控模塊能夠通過修改虛擬機達到監(jiān)控第三方應(yīng)用程序運行流程的作用。通過獲取移動終端中軟件和硬件的運行及調(diào)用將調(diào)用分類:cpu調(diào)用,喚醒系統(tǒng)調(diào)用,gps使用,wifi掃描,多媒體掃描,藍牙掃描等。根據(jù)各個分類,對比標準,標準是根據(jù)平時用戶數(shù)據(jù)和工作經(jīng)驗而來,比如喚醒系統(tǒng)是滅屏后仍然喚醒狀態(tài)達到5分鐘,認為是超出標準。對超出標準的項目預(yù)警提示,開發(fā)人員根據(jù)超標的項目可以觀察運行的調(diào)用關(guān)系,從而能夠很輕松的定位異常問題代碼實現(xiàn)位置。
請參閱如圖2所示,圖2為本發(fā)明實施例提供的應(yīng)用程序的分析方法用于應(yīng)用程序的耗電定位分析的應(yīng)用流程示意圖,主要可以包括如下流程:
1:用戶指定需要監(jiān)控的應(yīng)用程序。
首先可以列出移動終端中所有正在運行的進程,請參閱如圖3所示,圖3為本發(fā)明實施例提供的移動終端中正在運行的進程的實現(xiàn)場景示意圖,用戶勾選需要監(jiān)控的應(yīng)用程序,監(jiān)控結(jié)束后進行展示,可以知道所有類型調(diào)用總的運行次數(shù)和時間。
舉例說明如下,某個應(yīng)用程序的部分代碼如下:
在上述的應(yīng)用程序的代碼中,確定需要hook的目標類和需要hook的目標函數(shù)。例如需要監(jiān)控的函數(shù)如下:android.hardware.legacysensormanager、registerlegacylistener、unregisterlegacylistener。
接下來確定需要應(yīng)用程序調(diào)用的軟件和硬件分類,目前分了cpu,gps、wifi等類別。
2:通過ptrace將監(jiān)控模塊的動態(tài)庫(英文名稱:so)注入給第三方應(yīng)用程序。
3:啟動bridge去加載監(jiān)控模塊。
4:監(jiān)控模塊獲取需要監(jiān)控的cpu、gps、wifi等配置。
5:讀取監(jiān)控模塊的配置。
6:監(jiān)控模塊對cpu、gps、wifi等進行監(jiān)控開始。
其中,移動終端中安裝的所有應(yīng)用程序最后運行都需要由函數(shù)調(diào)用來執(zhí)行,因此可以在最底層的函數(shù)調(diào)用地方進行劫持,由之前的直接調(diào)用函數(shù)a()變成了,現(xiàn)在的先執(zhí)行before()再執(zhí)行a(),最后執(zhí)行after()。在before的地方記錄開始時間和運行調(diào)用堆棧,在結(jié)束的時候記錄完成時間,當用戶需要查看監(jiān)控結(jié)果的時候就是把這些數(shù)據(jù)整理并展示。
監(jiān)控第三方應(yīng)用程序的實現(xiàn)方式舉例說明如下:通過ptrace技術(shù),可以將自己的動態(tài)庫注入到第三方應(yīng)用程序中,使動態(tài)庫運行在第三方應(yīng)用程序的進程里,然后通過動態(tài)庫拉起bridgejar包,在bridge里面會讀取需要監(jiān)控的配置,然后按照配置修改第三方應(yīng)用程序運行的java虛擬機,改變第三方程序函數(shù)的調(diào)用指針,將指針指向了bridge里面的方法,從而達到了監(jiān)控函數(shù)運行的目的。其中,bridge中的鉤取(英文名稱:hook)操作流程包括:原函數(shù)調(diào)用->指針被bridge修改->調(diào)用了bridge的方法,即執(zhí)行如下操作流程:1.beforehook,2.原函數(shù)調(diào)用,3.afterhook。在beforcehook記錄原函數(shù)調(diào)用開始時間和調(diào)用堆棧(例如可以通過打印stack),在afterhook記錄結(jié)束時間, 這兩個時間之間的差值可以確定原函數(shù)調(diào)用的總耗時。
7:任何上述配置的應(yīng)用程序運行都會被記錄運行時間以及運行調(diào)用關(guān)系。
8:用戶需要獲取監(jiān)控結(jié)果。
9:將監(jiān)控數(shù)據(jù)打包,存儲在本地目錄。
10:通知監(jiān)控模塊獲取數(shù)據(jù)。
11:根據(jù)cpu、gps等類別進行展示。
其中,展示各類別的運行情況之后,可以分析出哪些函數(shù)存在異常情況。例如,異常運行被定義為在程序后臺運行時候的操作,因為程序都在后臺運行,理論上不應(yīng)該有太多的操作消耗系統(tǒng)資源,從而導(dǎo)致不應(yīng)該的耗電。用戶不能感知的應(yīng)用程序運行導(dǎo)致不必要的耗電,這種不必要的操作被認為是異常。例如,有個程序自己開了一個后臺程序,但是用戶并不知道,這個程序就被認定是異常的。但是用戶主動打開了一個導(dǎo)航軟件,但是這是用戶需要的,因此就不是異常的應(yīng)用程序。又如,當程序退到后臺的時候記錄當前時間a,在從后臺到前臺的時候再記錄一個時間b,根據(jù)原函數(shù)調(diào)用的開始時間,發(fā)現(xiàn)該時間在(a,b)區(qū)間內(nèi),被認定為可疑的耗電,需要用戶通過堆棧進行分析。
舉例說明如下,cpu是通過掃描目標程序來知道的,請參閱如圖4所示,圖4為本發(fā)明實施例提供的移動終端中代碼文件的存儲方式示意圖,android里面的代碼文件是存儲在應(yīng)用程序里面,解壓應(yīng)用程序里面有一個dex文件,dex文件是所有class文件的壓縮文件,通過android提供的方法可以讀取dex里面的所有class,然后根據(jù)所有的class可以遍歷出所有的class對應(yīng)的函數(shù),從而將這些函數(shù)全部hook。
接下來對本發(fā)明實施例中cpu、gps、wifi、sensor、wakelock的時間及次數(shù)計算進行舉例說明。cpu跟其他的不一樣,其他的都一樣算法。例如,cpu算法中,由于前面說明任何一個被hook了的函數(shù)都變成了before()->目標函數(shù)->after(),那么cpu運行時間就是所有after減去before的時間,就是目標函數(shù)的運行時間次數(shù)就是目標函數(shù)的運行次數(shù)總和。由于除cpu外都計算方式一樣,接下來以對sensor的計算為例,需要知道sensor的開啟時間, 所以根據(jù)上面的配置需要hookregisterlegacylistener(開始啟用sensor),unregisterlegacylistener(結(jié)束啟用sensor),就是before()->registerlegacylistener->after(),before()->unregisterlegacylistener->after()。這個時間相當于(unregisterlegacylistener的before)減去(registerlegacylistener的before)從而知道該應(yīng)用程序開啟了多久的sensor,次數(shù)就是一個開關(guān)的周期。
12:針對在后臺運行的情況進行特別標注。
13:觀看運行異常情況。
首先請參閱如圖5-a所示,圖5-a為本發(fā)明實施例提供的對移動終端中應(yīng)用程序進行耗電分析(英文名稱:powerdiagnosis)的一種分析結(jié)果示意圖,以cpu、sensor,wakelock、gps、wifiscan、mediascan這六個類型的分析為例,分別計算出每個軟件和硬件的運行時間(英文名稱:totaltime)和運行總次數(shù)(英文名稱:totalcount),進一步的,對圖5-a中的sensor類型進一步的打開,請參閱如圖5-b所示,圖5-b為本發(fā)明實施例提供的對移動終端中應(yīng)用程序進行耗電分析的另一種分析結(jié)果示意圖,詳細展示了多個sensorid的運行時間和運行總次數(shù)。分析監(jiān)控結(jié)果之后,可以得到相應(yīng)的分析結(jié)果,如圖5-c所示,圖5-c為本發(fā)明實施例提供的對移動終端中應(yīng)用程序進行耗電分析的另一種分析結(jié)果示意圖,定位出有異常情況的函數(shù)。
14:對程序進行優(yōu)化。
15:重復(fù)以上過程。
本發(fā)明實施例可以通過便于開發(fā)者定位問題的監(jiān)控模塊來實現(xiàn),所以面向的對象偏向于軟件開發(fā)者或者測試人員。利用該監(jiān)控模塊發(fā)現(xiàn)問題,定位問題,方便解決問題。在基于linux系統(tǒng)的移動設(shè)備上,因為運行在linux的程序的運行單位是“進程”,可以通過ptrace的方式將監(jiān)控模塊的代碼邏輯注入到目標進程的maps表里面,從而在目標進程里面執(zhí)行了監(jiān)控模塊的代碼,相當于hook操作了。利用這種hook,把需要監(jiān)控的函數(shù)狀態(tài),包括cpu、sensor、wakelock等都統(tǒng)計起來(包括運行時間,運行次數(shù),函數(shù)調(diào)用堆棧),當用戶需要查看的時候把這些數(shù)據(jù)發(fā)送給需要查看的應(yīng)用程序,給用戶展示。從而能夠大大降低開發(fā)人員定位問題難度,能夠縮短定位問題的時間,能夠及時暴露問題,并且從代碼層次上來展示。對應(yīng)用程序的性能影響不大,因 為沒有在運行的時候存文件,并且在虛擬機層面上工作。
不限定的是,本發(fā)明的前述舉例是以定位耗電問題進行舉例說明,但是本發(fā)明實施例不僅僅可以定位耗電問題,也可以定位類似防止第三方惡意軟件破壞程序邏輯,因為本發(fā)明提供的方法能夠監(jiān)控目標進程,發(fā)現(xiàn)有非法的函數(shù)調(diào)用則報警,達到防止惡意破壞的目的。例如,用戶調(diào)試應(yīng)用程序時,有的程序不知道什么原因運行出錯了,按照本發(fā)明確定應(yīng)用程序出錯時候的狀況,函數(shù)的調(diào)用流程,從而可以分析出問題的原因。還可以分析沒有源代碼的應(yīng)用程序的工作邏輯。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
為便于更好的實施本發(fā)明實施例的上述方案,下面還提供用于實施上述方案的相關(guān)裝置。
請參閱圖6-a所示,本發(fā)明實施例提供的一種應(yīng)用程序的分析裝置600,可以包括:程序確定模塊601、配置獲取模塊602、函數(shù)監(jiān)控模塊603、分析模塊604,其中,
程序確定模塊601,用于從移動終端中確定用戶需要監(jiān)控的應(yīng)用程序;
配置獲取模塊602,用于獲取所述應(yīng)用程序在所述移動終端中運行時調(diào)用的軟件和硬件的配置信息;
函數(shù)監(jiān)控模塊603,用于當所述應(yīng)用程序在所述移動終端中啟動時,根據(jù)所述軟件和硬件的配置信息監(jiān)控所述應(yīng)用程序中配置的函數(shù)調(diào)用所述軟件和硬件的調(diào)用情況以及所述軟件和硬件根據(jù)所述函數(shù)運行的運行情況;
分析模塊604,用于根據(jù)所述函數(shù)對所述軟件和硬件的調(diào)用情況、所述軟件和硬件根據(jù)所述函數(shù)運行的運行情況,對所述應(yīng)用程序進行分析。
在本發(fā)明的一些實施例中,請參閱如圖6-b所示,所述函數(shù)監(jiān)控模塊603,包括:
函數(shù)確定子模塊6031,用于確定所述應(yīng)用程序中配置的需要執(zhí)行的函數(shù);
指針修改子模塊6032,用于通過重配置所述應(yīng)用程序運行的虛擬機的方式修改所述需要執(zhí)行的函數(shù)的調(diào)用指針;
監(jiān)控執(zhí)行子模塊6033,用于根據(jù)修改后的所述調(diào)用指針在所述函數(shù)開始執(zhí)行之前啟動對所述函數(shù)的監(jiān)控,并且監(jiān)控所述函數(shù)從開始執(zhí)行直至執(zhí)行結(jié)束的整個執(zhí)行過程中對所述軟件和硬件的調(diào)用情況以及所述軟件和硬件根據(jù)所述函數(shù)運行的運行情況。
在本發(fā)明的一些實施例中,所述函數(shù)監(jiān)控模塊603,具體用于在所述函數(shù)執(zhí)行時,記錄所述函數(shù)調(diào)用的所述軟件和硬件的類型,所述函數(shù)運行的堆棧、所述函數(shù)開始執(zhí)行的時間和執(zhí)行結(jié)束的時間,并計算所述軟件和硬件根據(jù)所述函數(shù)運行的運行時間和所述函數(shù)的運行總次數(shù)。
在本發(fā)明的一些實施例中,所述分析模塊604,具體用于根據(jù)所述函數(shù)運行的運行時間和所述函數(shù)的運行總次數(shù)分析出所述應(yīng)用程序中存在異常情況的函數(shù),并分析所述應(yīng)用程序中存在異常情況的函數(shù)對應(yīng)的堆棧。
在本發(fā)明的一些實施例中,所述分析模塊604,具體用于計算所述應(yīng)用程序從所述移動終端的前臺系統(tǒng)切換到所述移動終端的后臺系統(tǒng)直至所述應(yīng)用程序從所述后臺系統(tǒng)切換回所述前臺系統(tǒng)之間的程序靜默周期;若在所述程序靜默周期內(nèi)所述移動終端中有函數(shù)執(zhí)行,確定所述應(yīng)用程序中在所述程序靜默周期內(nèi)執(zhí)行的函數(shù)存在異常情況,并分析存在異常情況的函數(shù)對應(yīng)的堆棧。
在本發(fā)明的一些實施例中,所述軟件和硬件的配置信息,包括如下信息中的至少一種:中央處理器cpu的配置、全球定位系統(tǒng)gps的配置、無線局域網(wǎng)wifi的配置、喚醒鎖屏wakelock程序的配置、感應(yīng)器sensor的配置、多媒體掃描程序的配置、藍牙的配置。
通過以上實施例對本發(fā)明實施例的描述可知,首先從移動終端中確定用戶需要監(jiān)控的應(yīng)用程序,然后獲取應(yīng)用程序在移動終端中運行時調(diào)用的軟件和硬件的配置信息,當應(yīng)用程序在移動終端中啟動時,根據(jù)軟件和硬件的配置信息監(jiān)控應(yīng)用程序中配置的函數(shù)調(diào)用軟件和硬件的調(diào)用情況以及軟件和硬件根據(jù)該函數(shù)運行的運行情況,根據(jù)函數(shù)對軟件和硬件的調(diào)用情況、軟件和硬件根據(jù)函數(shù)運行的運行情況,對應(yīng)用程序進行分析。本發(fā)明實施例中通過 移動終端自身就可以完成應(yīng)用程序的分析,并且本發(fā)明實施例中可以對應(yīng)用程序中配置的函數(shù)進行監(jiān)控,實現(xiàn)從函數(shù)層次上的監(jiān)控,獲取到調(diào)用情況和運行情況也是針對應(yīng)用程序中底層配置的函數(shù),因此可以更精細的分析應(yīng)用程序,縮短應(yīng)用程序分析的時間,提高應(yīng)用程序分析的效率。
本發(fā)明實施例還提供了另一種終端,如圖7所示,為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分,具體技術(shù)細節(jié)未揭示的,請參照本發(fā)明實施例方法部分。該終端可以為包括手機、平板電腦、pda(personaldigitalassistant,個人數(shù)字助理)、pos(pointofsales,銷售終端)、車載電腦等任意終端設(shè)備,以終端為手機為例:
圖7示出的是與本發(fā)明實施例提供的終端相關(guān)的手機的部分結(jié)構(gòu)的框圖。參考圖7,手機包括:射頻(radiofrequency,rf)電路77、存儲器720、輸入單元730、顯示單元740、傳感器750、音頻電路760、無線保真(wirelessfidelity,wifi)模塊770、處理器780、以及電源790等部件。本領(lǐng)域技術(shù)人員可以理解,圖7中示出的手機結(jié)構(gòu)并不構(gòu)成對手機的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
下面結(jié)合圖7對手機的各個構(gòu)成部件進行具體的介紹:
rf電路77可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器780處理;另外,將設(shè)計上行的數(shù)據(jù)發(fā)送給基站。通常,rf電路77包括但不限于天線、至少一個放大器、收發(fā)信機、耦合器、低噪聲放大器(lownoiseamplifier,lna)、雙工器等。此外,rf電路77還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。上述無線通信可以使用任一通信標準或協(xié)議,包括但不限于全球移動通訊系統(tǒng)(globalsystemofmobilecommunication,gsm)、通用分組無線服務(wù)(generalpacketradioservice,gprs)、碼分多址(codedivisionmultipleaccess,cdma)、寬帶碼分多址(widebandcodedivisionmultipleaccess,wcdma)、長期演進(longtermevolution,lte)、電子郵件、短消息服務(wù)(shortmessagingservice,sms)等。
存儲器720可用于存儲軟件程序以及模塊,處理器780通過運行存儲在存儲器720的軟件程序以及模塊,從而執(zhí)行手機的各種功能應(yīng)用以及數(shù)據(jù)處 理。存儲器720可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器720可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。
輸入單元730可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機的用戶設(shè)置以及功能控制有關(guān)的鍵信號輸入。具體地,輸入單元730可包括觸控面板731以及其他輸入設(shè)備732。觸控面板731,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板731上或在觸控面板731附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置。可選的,觸控面板731可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標,再送給處理器780,并能接收處理器780發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸控面板731。除了觸控面板731,輸入單元730還可以包括其他輸入設(shè)備732。具體地,其他輸入設(shè)備732可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標、操作桿等中的一種或多種。
顯示單元740可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機的各種菜單。顯示單元740可包括顯示面板741,可選的,可以采用液晶顯示器(liquidcrystaldisplay,lcd)、有機發(fā)光二極管(organiclight-emittingdiode,oled)等形式來配置顯示面板741。進一步的,觸控面板731可覆蓋顯示面板741,當觸控面板731檢測到在其上或附近的觸摸操作后,傳送給處理器780以確定觸摸事件的類型,隨后處理器780根據(jù)觸摸事件的類型在顯示面板741上提供相應(yīng)的視覺輸出。雖然在圖7中,觸控面板731與顯示面板741是作為兩個獨立的部件來實現(xiàn)手機的輸入和輸入功能,但是在某些實施例中,可以將觸控面板731與顯示面板741集成而實現(xiàn)手機的輸入和輸出 功能。
手機還可包括至少一種傳感器750,比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板741的亮度,接近傳感器可在手機移動到耳邊時,關(guān)閉顯示面板741和/或背光。作為運動傳感器的一種,加速計傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計姿態(tài)校準)、振動識別相關(guān)功能(比如計步器、敲擊)等;至于手機還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路760、揚聲器761,傳聲器762可提供用戶與手機之間的音頻接口。音頻電路760可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P聲器761,由揚聲器761轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器762將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路760接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器780處理后,經(jīng)rf電路77以發(fā)送給比如另一手機,或者將音頻數(shù)據(jù)輸出至存儲器720以便進一步處理。
wifi屬于短距離無線傳輸技術(shù),手機通過wifi模塊770可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖7示出了wifi模塊770,但是可以理解的是,其并不屬于手機的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器780是手機的控制中心,利用各種接口和線路連接整個手機的各個部分,通過運行或執(zhí)行存儲在存儲器720內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器720內(nèi)的數(shù)據(jù),執(zhí)行手機的各種功能和處理數(shù)據(jù),從而對手機進行整體監(jiān)控??蛇x的,處理器780可包括一個或多個處理單元;優(yōu)選的,處理器780可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器780中。
手機還包括給各個部件供電的電源790(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器780邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理 充電、放電、以及功耗管理等功能。
盡管未示出,手機還可以包括攝像頭、藍牙模塊等,在此不再贅述。
在本發(fā)明實施例中,該終端所包括的處理器780還具有控制執(zhí)行以上由終端執(zhí)行的應(yīng)用程序的分析方法流程。
另外需說明的是,以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。另外,本發(fā)明提供的裝置實施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實現(xiàn)為一條或多條通信總線或信號線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當然也可以通過專用硬件包括專用集成電路、專用cpu、專用存儲器、專用元器件等來實現(xiàn)。一般情況下,凡由計算機程序完成的功能都可以很容易地用相應(yīng)的硬件來實現(xiàn),而且,用來實現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返?。但是,對本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對目前的一種實施場景做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機的軟盤,u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
綜上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照上述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對上述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案 的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。