一種對移動終端的資源進行管理的方法
【專利摘要】本發(fā)明公開了一種對移動終端的資源進行管理的方法,包括:依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用程序資源相關(guān)的類或者接口,并判斷類或者接口是否誤提取;對各個類或者接口的各個函數(shù)分析,建立與各個函數(shù)相對應(yīng)的完全順序圖;建立各個類或者接口的函數(shù)調(diào)用關(guān)系圖,對函數(shù)調(diào)用關(guān)系圖和完全順序圖進行跨函數(shù)分析,獲得生命周期流程圖;對生命周期流程圖進行挖掘,獲得資源管理規(guī)律。通過本發(fā)明公開的一種對移動終端的資源進行管理的方法,可以對應(yīng)用程序進行分析、挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理,從而提高了對智能移動終端平臺上的各種資源進行管理正確率。
【專利說明】一種對移動終端的資源進行管理的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動終端【技術(shù)領(lǐng)域】,尤其涉及一種對移動終端的資源進行管理的方法。
【背景技術(shù)】
[0002]智能移動終端上裝備了豐富的硬件和軟件資源,為用戶提供了各種各樣的功能和服務(wù),比如定位、網(wǎng)絡(luò)視頻、社交網(wǎng)絡(luò)等等。但是這些資源的錯誤使用會造成嚴(yán)重的后果,比如電池的快速消耗,甚至是系統(tǒng)崩潰。
[0003]在應(yīng)用程序中管理這些資源通常需要利用操作系統(tǒng)提供的接口,對接口的調(diào)用往往需要遵循一些隱含規(guī)律。例如,應(yīng)用程序(例如喚醒鎖wakelock)在獲得一個資源后,需要在使用完該資源之后釋放掉相應(yīng)資源。
[0004]目前,對智能移動終端平臺上的各種資源進行管理是一件困難且易于出錯的事情。首先,例如Android、IOS (蘋果公司開發(fā)的用于便攜式可移動智能設(shè)備的操作系統(tǒng)平臺)等智能移動終端的操作系統(tǒng)平臺,提供了資源管理的接口和相關(guān)的文檔,但是并沒有被明確說明調(diào)用這些資源管理接口所需要遵循的規(guī)律。其次,一種資源可能會遵循多條使用規(guī)律,開發(fā)人員在進行開發(fā)時可能會忽略掉一些規(guī)律或者是錯誤使用了某種規(guī)律。最后,在一個復(fù)雜的系統(tǒng)中,即使是經(jīng)驗豐富的開發(fā)人員也很難保證所有資源都被正確利用了。目前已有的工作或致力于幫助用戶定位哪一個應(yīng)用出現(xiàn)錯誤,或致力于解決特定的某種資源管理錯誤。尚沒有一種通用的管理智能移動終端資源的方法。由于智能移動終端應(yīng)用程序基于事件觸發(fā)的特性,用于普通程序的規(guī)律發(fā)現(xiàn)方法也不再適用。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實施例提供了一種對移動終端的資源進行管理的方法,以解決對移動終端的應(yīng)用程序資源進行管理,管理正確率較低的技術(shù)問題。
[0006]一方面,本發(fā)明實施例提供了一種對移動終端的資源進行管理的方法,包括:
[0007]依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口,并判斷所述類或者接口是否誤提?。?br>
[0008]對各個所述類或者接口的各個函數(shù)分析,建立與所述各個函數(shù)相對應(yīng)的完全順序圖;
[0009]建立所述各個類或者接口的函數(shù)調(diào)用關(guān)系圖,對所述函數(shù)調(diào)用關(guān)系圖和所述完全順序圖進行跨函數(shù)分析,獲得生命周期流程圖;
[0010]對所述生命周期流程圖進行挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理。
[0011]優(yōu)選地,所述依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口,并判斷所述類或者接口是否誤提取,具體包括,
[0012]依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口;
[0013]對與應(yīng)用應(yīng)用程序資源管理相關(guān)的所述類或者接口進行標(biāo)注;
[0014]依據(jù)所述類或者接口和所述標(biāo)注,訓(xùn)練一個決策樹模型;
[0015]依據(jù)所述決策樹對所述類或者接口進行分類,判斷所述類或者所述接口是否誤提取。
[0016]優(yōu)選地,所述預(yù)設(shè)的特征包括:第一個特征、第二個特征和第三個特征;
[0017]其中,所述第一個特征是所述類或者接口是否是公共的和抽象的;
[0018]所述第二個特征是所述類或者接口的名稱、所在的包名中是否包含預(yù)設(shè)的關(guān)鍵詞;
[0019]所述第三個特征是所述類或者接口中的成員函數(shù)或者數(shù)據(jù)成員滿足預(yù)設(shè)的模式。
[0020]優(yōu)選地,所述對各個所述類或者接口的各個函數(shù)進行分析,建立與所述各個函數(shù)相對應(yīng)的完全順序圖,具體包括:
[0021]通過利用JAVA字節(jié)碼分析工具對所述類或者接口的所述各個函數(shù)進行分析,獲得各個所述類或者所述接口的中間語言;
[0022]從所述中間語言出發(fā),建立控制流程圖,所述控制流程圖以程序語句為節(jié)點,語句之間的執(zhí)行順序為有向邊;
[0023]向所述控制流程圖中添加有向邊,并刪除所述控制流程圖中沒有調(diào)用函數(shù)的語句節(jié)點,以及和調(diào)用資源無關(guān)的系統(tǒng)函數(shù)的語句節(jié)點,獲得與所述各個函數(shù)對應(yīng)的所述完全順序圖。
[0024]優(yōu)選地,所述建立所述各個類或者接口的函數(shù)調(diào)用關(guān)系圖,對所述函數(shù)調(diào)用關(guān)系圖和所述完全順序圖進行跨函數(shù)分析,獲得生命周期流程圖的具體過程包括:
[0025]建立所述各個類或者接口的函數(shù)調(diào)用關(guān)系圖;
[0026]所述完全順序圖按照預(yù)設(shè)的代替次數(shù)代替所述函數(shù)調(diào)用關(guān)系圖中的節(jié)點,獲得所述生命周期流程圖。
[0027]優(yōu)選地,所述對所述生命周期流程圖進行挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理具體包括:
[0028]對所述生命周期流程圖進行封閉頻繁子圖挖掘,獲得封閉頻繁子圖;
[0029]去除所述封閉頻繁子圖中冗余的邊,獲得所述資源管理的規(guī)律。
[0030]本發(fā)明實施例提供的一種應(yīng)用程序資源對移動終端的資源進行管理的方法,具有如下有益效果:
[0031]對應(yīng)用程序進行分析、挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理,從而提高了對智能移動終端平臺上的應(yīng)用程序資源進行管理正確率。
【專利附圖】
【附圖說明】
[0032]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0033]圖1是本發(fā)明實施提供的一種應(yīng)用程序資源對移動終端的資源進行管理的方法的流程示意圖;
[0034]圖2是本發(fā)明實施提供的依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口,并判斷類或者接口是否誤提取的流程示意圖;
[0035]圖3是本發(fā)明實施提供的對各個類或者接口的各個函數(shù)進行分析,建立與各個函數(shù)相對應(yīng)的完全順序圖的流程示意圖;
[0036]圖4是本發(fā)明實施提供的建立各個類或者接口的函數(shù)調(diào)用關(guān)系圖,對函數(shù)調(diào)用關(guān)系圖和完全順序圖進行跨函數(shù)分析,獲得生命周期流程圖的流程示意圖;
[0037]圖5是本發(fā)明實施提供的對生命周期流程圖進行挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理的流程示意圖。
【具體實施方式】
[0038]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0039]本發(fā)明實施例公開的在一種應(yīng)用程序資源對移動終端的資源進行管理的方法可以運行于安裝有Android (谷歌公司開發(fā)的用于便攜式可移動智能設(shè)備的操作系統(tǒng)平臺)操作系統(tǒng)的移動終端中,該移動終端可以是移動電話、掌上電腦、平板電腦等等中的任意一種。
[0040]本發(fā)明實施例公開了一種應(yīng)用程序資源對移動終端的資源進行管理的方法,如圖1所示,包括:
[0041]步驟S101,依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口,并判斷類或者接口是否誤提取。
[0042]在步驟SlOl中,依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口,并判斷類或者接口是否誤提取,如圖2所示,具體包括,
[0043]步驟S1011,依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口;
[0044]需要進行說明的是,安裝文件可以是apk (Android Package, Android安裝包)。
[0045]在Android系統(tǒng)提供的應(yīng)用程序編程接口中包含了很多類,但是其中只有一部分類與資源管理相關(guān),另一部分類與資源管理無關(guān)。在本發(fā)明實施例一中依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口。
[0046]在本發(fā)明實施例中,預(yù)設(shè)的特征包括:第一個特征、第二個特征和第三個特征;
[0047]其中,第一個特征是類或者接口是否是公共的(public)和抽象的(abstract);
[0048]第二個特征是類或者接口的名稱、所在的包名中是否包含預(yù)設(shè)的關(guān)鍵詞;例如,WiFi (—個無線網(wǎng)路通信技術(shù)的品牌)、Bluetooth (藍牙)。
[0049]第三個特征是類或者接口中的成員函數(shù)或者數(shù)據(jù)成員滿足預(yù)設(shè)的模式。這些模式可以包括:*connect (),氺start (),氺dispose (),氺acquire (),氺register ()等。[0050]步驟S1012,對與應(yīng)用應(yīng)用程序資源管理相關(guān)的類或者接口進行標(biāo)注;
[0051]步驟S1013,依據(jù)類或者接口和標(biāo)注,訓(xùn)練一個決策樹模型;
[0052]步驟S1014,依據(jù)決策樹對類或者接口進行分類,判斷類或者接口是否誤提取。
[0053]需要進行說明的是,當(dāng)類或者所述接口不屬于決策樹中的分類時,該類或者接口為誤提??;當(dāng)類或者所述接口屬于決策樹中的分類時,該類或者接口為正確提取。
[0054]步驟S102,對各個類或者接口的各個函數(shù)進行分析,建立與各個函數(shù)相對應(yīng)的完全順序圖。
[0055]在步驟S102中對各個類或者接口的各個函數(shù)進行分析,建立與各個函數(shù)相對應(yīng)的完全順序圖,,具體步驟流程如圖3所示:
[0056]步驟S1021,通過利用JAVA字節(jié)碼分析工具對類或者接口的各個函數(shù)進行分析,獲得各個類或者接口的中間語言;
[0057]在步驟S1021中,中間語言是指一種應(yīng)用于抽象機器(abstract machine)的編程語言,使用中間語言可以讓最佳化的過程更簡單,也用于增進可移植性的能力,改進移植的方式則是利用中間語言的編譯器,可以編譯出許多中央處理器及操作系統(tǒng)可使用的機器碼,例如C語目。中間語目的復(fù)雜度,通常介于聞階語目及低級語目之間,例如匯編語目。
[0058]步驟1022,從中間語言出發(fā),建立控制流程圖,控制流程圖以程序語句為節(jié)點,語句之間的執(zhí)行順序為有向邊。
[0059]步驟1023,向所述控制流程圖中添加有向邊,并刪除所述控制流程圖中沒有調(diào)用函數(shù)的語句節(jié)點以及和調(diào)用資源無關(guān)的系統(tǒng)函數(shù)的語句節(jié)點,獲得與所述各個函數(shù)對應(yīng)的所述完全順序圖。
[0060]在步驟S1023中,如果可以從節(jié)點u出發(fā),可以沿著有向邊經(jīng)過多跳到達節(jié)點V,添加從節(jié)點u指向節(jié)點V的有向邊。
[0061]在步驟S1022中,控制語句可以包括if、switch、goto等改變程序運行順序的語句。
[0062]步驟S103,利用JAVA字節(jié)碼分析工具建立各個類或者接口的函數(shù)調(diào)用關(guān)系圖,對函數(shù)調(diào)用關(guān)系圖和完全順序圖進行跨函數(shù)分析,獲得生命周期流程圖。
[0063]在步驟S103中,利用JAVA字節(jié)碼分析工具建立各個類或者接口的函數(shù)調(diào)用關(guān)系圖,對函數(shù)調(diào)用關(guān)系圖和完全順序圖進行跨函數(shù)分析,獲得生命周期流程圖的具體過程,如圖4所示:
[0064]步驟S1031,利用JAVA字節(jié)碼分析工具建立各個類或者接口的函數(shù)調(diào)用關(guān)系圖。在函數(shù)調(diào)用關(guān)系圖中,每個函數(shù)調(diào)用語句都被鏈接到它所調(diào)用的函數(shù)。
[0065]步驟S1032,完全順序圖按照預(yù)設(shè)的代替次數(shù)代替函數(shù)調(diào)用關(guān)系圖中的節(jié)點,獲得生命周期流程圖。
[0066]其中,預(yù)設(shè)的代替次數(shù)可以是3次。
[0067]步驟S104,對生命周期流程圖進行挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理。
[0068]在步驟S104中對生命周期流程圖進行挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理具體過程如圖5所示:
[0069]步驟S1041,對生命周期流程圖進行封閉頻繁子圖挖掘,獲得封閉頻繁子圖。對。對生命周期流程圖進行封閉頻繁子圖挖掘可以采用gSpan (—種頻繁子圖挖掘算法)算法。
[0070]步驟S1042,去除封閉頻繁子圖中冗余的邊,獲得資源管理的規(guī)律。
[0071]同時,如果gl,g2是我們挖掘出的封閉頻繁子圖,同時&是&的子圖,并且
非常接近?的話,就說明遵循gi但沒有遵循g2的程序很可能犯了相關(guān)的錯誤。
[0072]通過本發(fā)明實施例公開的一種應(yīng)用程序資源對移動終端的資源進行管理的方法,可以對應(yīng)用程序進行分析、挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理,并尋找程序中沒有遵循管理規(guī)律的錯誤,從而提高了對智能移動終端平臺上的各種資源進行管理正確率。
[0073]顯然,本領(lǐng)域技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,他們可以用計算機裝置可執(zhí)行的程序代碼來實現(xiàn),從而可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件的結(jié)合。
[0074]以上僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,對于本領(lǐng)域技術(shù)人員而言,本發(fā)明可以有各種改動和變化。凡在本發(fā)明的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種對移動終端的應(yīng)用程序資源進行管理的方法,其特征在于,包括: 依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用程序資源管理相關(guān)的類或者接口,并判斷所述類或者接口是否誤提??; 對各個所述類或者接口的各個函數(shù)進行分析,建立與所述各個函數(shù)相對應(yīng)的完全順序圖; 利用JAVA字節(jié)碼分析工具建立所述各個類或者接口的函數(shù)調(diào)用關(guān)系圖,對所述函數(shù)調(diào)用關(guān)系圖和所述完全順序圖進行跨函數(shù)分析,獲得生命周期流程圖; 對所述生命周期流程圖進行挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理。
2.根據(jù)權(quán)利要求1所述的對移動終端的資源進行管理的方法,其特征在于,所述依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用程序資源管理相關(guān)的類或者接口,并判斷所述類或者接口是否誤提取,具體包括, 依據(jù)預(yù)設(shè)的特征從安裝文件和應(yīng)用程序編程接口文檔中提取與應(yīng)用程序資源管理相關(guān)的類或者接口; 對與應(yīng)用程序資源管理相關(guān)的所述類或者接口進行標(biāo)注; 依據(jù)所述類或者接口或者所述標(biāo)注,訓(xùn)練一個決策樹模型; 依據(jù)所述決策樹對所述類或者接口進行分類,判斷所述類或者所述接口是否誤提取。
3.根據(jù)權(quán)利要求1或2所述的對移動終端的應(yīng)用程序資源進行管理的方法,其特征在于,所述預(yù)設(shè)的特征包括:第一個`特征、第二個特征和第三個特征; 其中,所述第一個特征是所述類或者接口是否是公共的和抽象的; 所述第二個特征是所述類或者接口的名稱、所在的包名中是否包含預(yù)設(shè)的關(guān)鍵詞; 所述第三個特征是所述類或者接口中的成員函數(shù)或者數(shù)據(jù)成員滿足預(yù)設(shè)的模式。
4.根據(jù)權(quán)利要求1所述的對移動終端的應(yīng)用程序資源進行管理的方法,其特征在于,所述對各個所述類或者接口的各個函數(shù)進行分析,建立與所述各個函數(shù)相對應(yīng)的完全順序圖,具體包括: 通過利用JAVA字節(jié)碼分析工具對所述類或者接口的所述各個函數(shù)進行分析,獲得各個所述類或者所述接口的中間語言; 從所述中間語言出發(fā),建立控制流程圖,所述控制流程圖以程序語句為節(jié)點,語句之間的執(zhí)行順序為有向邊; 向所述控制流程圖中添加有向邊,并刪除所述控制流程圖中沒有調(diào)用函數(shù)的語句節(jié)點,以及和調(diào)用資源無關(guān)的系統(tǒng)函數(shù)的語句節(jié)點,獲得與所述各個函數(shù)對應(yīng)的所述完全順序圖。
5.根據(jù)權(quán)利要求1所述的對移動終端的資源進行管理的方法,其特征在于,所述建立所述各個類或者接口的函數(shù)調(diào)用關(guān)系圖,對所述函數(shù)調(diào)用關(guān)系圖和所述完全順序圖進行跨函數(shù)分析,獲得生命周期流程圖的具體過程包括: 建立所述各個類或者接口的函數(shù)調(diào)用關(guān)系圖; 所述完全順序圖按照預(yù)設(shè)的代替次數(shù)代替所述函數(shù)調(diào)用關(guān)系圖中的節(jié)點,獲得所述生命周期流程圖。
6.根據(jù)權(quán)利要求1所述的對移動終端的資源進行管理的方法,其特征在于,所述對所述生命周期流程圖進行挖掘,獲得資源管理的管理規(guī)律,依據(jù)所述管理規(guī)律對應(yīng)用程序資源進行管理具體包括: 對所述生命周期流程圖進行封閉頻繁子圖挖掘,獲得封閉頻繁子圖;去除所述封閉頻繁子圖中冗余的邊,獲得所述資源管`理的規(guī)律。
【文檔編號】G06F9/50GK103559094SQ201310590315
【公開日】2014年2月5日 申請日期:2013年11月20日 優(yōu)先權(quán)日:2013年11月20日
【發(fā)明者】康延榮, 苗欣, 劉云浩 申請人:無錫儒安科技有限公司