專利名稱:一種檢驗應用模式適應性的裝置及方法
技術領域:
本發(fā)明涉及移動終端應用模式切換領域,特別是指一種檢驗應用模式適應性的裝 置及方法。
背景技術:
隨著社會信息化的不斷發(fā)展,移動終端例如手機也在向智能操作系統(tǒng)方向前進, 安致(Android)系統(tǒng)逐漸異軍突起,成為該領域的一股新生力量,越來越多的手機廠商加 入開發(fā)Android系統(tǒng)的行列。下面以在Android系統(tǒng)的移動終端上,U盤模式與其他模式進行切換為例,說明 Andr oid系統(tǒng)的移動終端在不同場景下的適應性,如圖1所示用戶通過應用線程退出當前的U盤模式,向U盤主線程(fSg_main_thread)發(fā) 送退出U盤模式的異常通知消息,所述應用線程用于提供用戶選擇操作的界面,所述fsg_ mairuthread用于實現U盤模式下,移動終端與個人電腦(PC)之間的數據通信,fsg_main_ thread接收應用線程發(fā)送的異常通知,清除移動終端中的U盤注冊信息,同時確認應用線 程中的標志位為終止,關閉自身的線程,調用void completion (struct completion^)函 數,向應用線程發(fā)送線程已退出的通知消息,所述標志位用于顯示當前fsg_main_thread 的狀態(tài),所述voidcompletion (struct completion^)是喚醒等待χ事物線程的函數,調用 此函數的線程輸入χ事物,產生通知消息。應用線程收到fsgjnairuthread發(fā)送的通知消息,然后調用void completion (struct completion氺χ)函數,向系統(tǒng)調用發(fā)送 f sg_main_thread 線禾呈已 退出的通知消息,系統(tǒng)調用卸載U盤模式對應的驅動。但是,由于Android系統(tǒng)本身的 特性,系統(tǒng)調用接收不到應用線程發(fā)送的fsgjnairuthread線程已退出的通知消息,導 致所述通知消息多余,又因為應用線程本身有等待函數wait_for_Completion (struct completion*》,這樣發(fā)送給系統(tǒng)調用的通知消息會被應用線程本身的等待函數獲取, 所述 wait_for_rcompletion (struct completion*x)用于等待線禾呈通過調用 void completion (struct completion^)發(fā)送的通知消息,并產生等待到通知消息的消息,與 void completion (struct completion*x)是一組對應的函數。用戶再次使用U盤模式,并要切換到其他模式例如模式B時,應用線程會創(chuàng)建新的 fsg_main_threadB,所述fsg_main_threadB用于在模式B下,移動終端與PC之間的數據通 信,這時,用戶要退出U盤模式,應用線程向fsgjnairuthread發(fā)送異常通知,因為應用線程 的等待函數接收到發(fā)送給系統(tǒng)調用但是未被系統(tǒng)調用接收的通知消息,會認為fsg_main_ thread線程已退出,然后創(chuàng)建模式B的fSg_main_threadB,同時應用線程的標志位由終止 變?yōu)樾陆?,fsgjnairuthread清除U盤注冊信息后,查詢應用線程中的標志位為新建,則U盤 模式無法正常退出,導致U盤模式無法正常使用,給使用者造成非常不好的用戶體驗。Android系統(tǒng)本身的一些特點,在開發(fā)過程中常常困擾著開發(fā)人員,影響移動終端 在不同場景下的適應性。解決移動終端在不同場景下適應性問題的方法是將應用線程調用void completion (struct completion^)函數發(fā)送通知消息給系統(tǒng)調用中的調用void completion (struct completion^)函數去掉,但該解決方法只適用于測試出手機出現應 用模式切換的問題時,對調用函數進行定位,然而手機的應用模式有很多,其調用函數也多 種多樣,如何盡早的在版本編譯階段定位此問題,避免在后續(xù)的測試過程中才暴露出來,是 解決問題的關鍵。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種檢驗應用模式適應性的裝置及方法,能在編譯階段解決Android系統(tǒng)中移動終端的U盤模式與其他模式自由切換問題,節(jié)省項 目開發(fā)的成本,提升用戶體驗。為達到上述目的,本發(fā)明的技術方案是這樣實現的本發(fā)明提供了一種檢驗應用模式適應性的裝置,包括編譯模塊,用于解析函數文檔,獲得需查詢函數及其對應的等待函數,并將解析出 的函數形成單向鏈表,發(fā)送給統(tǒng)計模塊;統(tǒng)計模塊,用于統(tǒng)計單向鏈表中的需查詢函數及其對應的等待函數在指定文件中 的使用次數;比較模塊,用于根據統(tǒng)計出的需查詢函數及其對應的等待函數的使用次數,確定 函數的匹配性。上述方案中,編譯模塊具體用于,將函數文檔中需查詢函數及其對應的等待函數 與自身預置的需查詢函數及其對應的等待函數列表進行比較,將與所述列表相符的需查詢 函數及其對應的等待函數標記序列號,并將需查詢函數及其對應的等待函數以及序列號形 成單向鏈表;將與所述列表不符的需查詢函數及其對應的等待函數,保存到指定的不支持 查詢函數文件中。上述方案中,統(tǒng)計模塊具體用于,將需查詢函數及其對應的等待函數與指定文件 中的代碼比較,記錄需查詢函數及其對應的等待函數的使用次數。上述方案中,比較模塊具體用于,將統(tǒng)計出的需查詢函數的使用次數與等待函數 的使用次數比較,兩者相同時,需查詢函數及其對應的等待函數匹配,將比較結果輸出到指 定的結果文件;兩者不同時,需查詢函數即對應的等待函數不匹配,輸出告警信息,并將比 較結果輸出到指定的結果文件。本發(fā)明還提供了一種檢驗應用模式適應性的方法,包括解析函數文檔,獲得需查詢函數及其對應的等待函數,并將解析出的函數形成單 向鏈表;統(tǒng)計單向鏈表中需查詢函數及其對應的等待函數在指定文件中的使用次數,根據 統(tǒng)計出的需查詢函數及其對應的等待函數的使用次數確定函數匹配性。上述方案中,所述將解析出的函數形成單向鏈表包括將函數文檔中需查詢函數 及其對應的等待函數與自身預置的需查詢函數及其對應的等待函數列表進行比較,將與所 述列表相符的需查詢函數及其對應的等待函數標記序列號,并將需查詢函數及其對應的等 待函數以及序列號形成單向鏈表;將與所述列表不相符的需查詢函數及其對應的等待函 數,保存到指定的不支持查詢函數文件中。
上述方案中,所述統(tǒng)計單向鏈表中需查詢函數及其對應的等待函數在指定文件中 的使用次數包括將單向鏈表中的需查詢函數及其對應的等待函數與指定文件中的代碼比 較,記錄需查詢函數及其對應的等待函數的使用次數。上述方案中,所述確定函數匹配性包括比較統(tǒng)計出的需查詢函數的使用次數及 其對應的等待函數的使用次數,若兩者相同,則需查詢函數與其對應的等待函數匹配,并將 比較結果輸出到指定的結果文件;若兩者不同,則需查詢函數與其對應的等待函數不匹配, 輸出告警信息,將比較結果輸出到指定的結果文件。由此可見,采用本發(fā)明所述的檢驗應用模式適應性的裝置及方法,在版本編譯過 程中統(tǒng)計函數的使用次數,根據函數中需查詢函數及其對應的等待函數使用次數是否相 同,確定不同應用模式切換時,線程調用函數的匹配性,從而能節(jié)省 項目開發(fā)的,提升了用 戶體驗。
圖1為現有技術中U盤模式與其他模式切換的過程示意圖;圖2為本發(fā)明檢驗應用模式適應性的裝置組成示意圖;圖3為本發(fā)明檢驗應用模式適應性的方法流程示意圖。
具體實施例方式本發(fā)明的基本思想是解析函數文檔,獲得需查詢函數及其對應的等待函數,并將 解析出的函數形成單向列表;統(tǒng)計單向鏈表中需查詢函數及其對應的等待函數在指定文件 中的使用次數;根據統(tǒng)計出的需查詢函數及其對應的等待函數的使用次數確定函數的匹配 性。下面通過具體實施例和附圖對本發(fā)明進行詳細說明。一種檢驗應用模式適應性的裝置,如圖2所示,該裝置包括編譯模塊201、統(tǒng)計模 塊202以及比較模塊203 編譯模塊201,用于解析函數文檔,獲得需查詢函數及其對應的等待函數,并將解 析出的函數形成單向鏈表,發(fā)送給統(tǒng)計模塊202 ;這里,所述解析函數文檔通過調用equalcheck指令完成,所述equalcheck指令 在系統(tǒng)驅動程序目錄b00t\build\C0re\main. mk中添加,用于解析函數文檔的內容,可位 于啟動鏡像(bootimage)指令之后,例如 bootimage $ (INSTALLED_BOOTIMAGE_TARGET) equalcheck,以便在開始編譯后自動執(zhí)行該指令;所述函數文檔為在系統(tǒng)驅動程序目錄 boot\build\core下建立的函數文檔,包括需查詢函數,例如void completion (struct completion^);以及與該需查詢函數對應的等待函數,例如wait_for_completion(struct completion^x);統(tǒng)計模塊202,用于統(tǒng)計單向鏈表中需查詢函數及其對應的等待函數在指定文件 中的使用次數,并將統(tǒng)計結果輸出給比較模塊203 ;其中,所述指定文件為預先設置在統(tǒng)計模塊202中的應用程序代碼所在的文件, 查詢此文件中需查詢函數及其對應的等待函數的使用次數,也就是,該應用程序所對應的 應用模塊調用需查詢函數、以及調用該需查詢函數對應的等待函數的次數;
比較模塊203,用于根據統(tǒng)計出的需查詢函數及其對應的等待函數的使用次數確 定函數的匹配性,并輸出到指定的結果文件。編譯模塊201具體用于,將解析出的函數文檔中需查詢函數及其對應的等待函 數,與自身預置的需查詢函數及其對應的等待函數列表進行比較,將與所述列表符合的需 查詢函數及其對應的等待函數標記序列號,之后由需查詢函數及其對應的等待函數、以及 序列號組成單向鏈表,每個需查詢函數及其對應的等待函數分別作為一組函數,是單向鏈 表的基本單元;將與所述列表不符的需查詢函數及其對應的等待函數保存在指定的不支持 查詢函數文件中,本發(fā)明中保存與所述列表不符的函數的文件為unsupportecLchecked. log文件,本發(fā)明中所述單向鏈表中內容的存儲格式包括但不限于以下格式I IndexlAl I Al+1 Next I — Index|A2|A2+1Next —其中,Index為序列號,Al為第一組中需查詢函數,Al+為第一組中與需查詢函數 對應的等待函數,Next指向下一組函數。統(tǒng)計模塊202具體用于,將需查詢函數及其對應的等待函數與指定文件中的代碼 比 較,這里,所述比較為若有與需查詢函數或其對應的等待函數一致的代碼,則說明需查 詢函數或其對應的等待函數出現一次;記錄需查詢函數及其對應的等待函數出現的次數, 即使用次數,并將函數名稱及函數的使用次數、所在文件名稱、序列號,輸出給比較模塊 203。比較模塊203具體用于,比較統(tǒng)計到的需查詢函數及其對應的等待函數的使用次 數,若兩者相同,則需查詢函數與其對應的等待函數匹配,將比較結果輸出到預先指定的結 果文件;這里,所述比較結果包括序列號、函數名稱以及使用次數、所在文件名稱;若兩者 不同,則需查詢函數及其對應的等待函數不匹配,輸出告警信息,所述告警信息為需查詢函 數與其對應的等待函數的結果不匹配的消息,將比較結果輸出到預先指定的結果文件?;谏鲜鰴z驗應用模式適應性的裝置,本發(fā)明還提供了 一種檢驗應用模式適應性 的方法,如圖3所示,包括以下步驟步驟301,解析函數文檔,獲得需查詢函數及其對應的等待函數,并將解析出的函 數形成單向鏈表;這里,所述解析函數文檔由編譯模塊調用equalcheck指令完成,所述equalcheck 指令在系統(tǒng)驅動程序目錄boot\build\COre\main. mk中添加,用于解析函數文檔的內 容,可位于啟動鏡像(bootimage)指令之后,例如 bootimage $ (INSTALLED_B00TIMAGE_ TARGET) equalcheck,以便在開始編譯后自動執(zhí)行該指令。所述函數文檔為在系統(tǒng)驅動程序目錄b00t\build\C0re下建立的函數文檔,包括 需查詢函數,例如,void completion (struct completion^);以及與需查詢函數對應的等 待函數,例如 wait_for_completion (struct completion*x)。所述解析過程具體包括編譯模塊將函數文檔的內容同自身預置的需查詢函數列 表比較,將需查詢函數及其對應的等待函數標記序列號,之后由需查詢函數及其對應的等 待函數、以及序列號組成單向鏈表,每個需查詢函數及其對應的等待函數分別作為一組函 數,是單向鏈表的基本單元;將不需查詢函數保存在指定的不支持查詢函數文件中,本發(fā)明 中保存不需查詢函數為unsupportecLchecked. log文件,所述單向鏈表中內容的存儲格式 為
IIndex|AlI Al+1 Next I — Index|A2|A2+1Next —其中,Index為序列號,Al為第一組中需查詢函數,Al+為第一組中與需查詢函數對應的等待函數,Next指向下一組函數。步驟302,統(tǒng)計單向鏈表中需查詢函數及其對應的等待函數在指定文件中的使用 次數;本步驟中,統(tǒng)計模塊接收編譯模塊發(fā)送來的單向鏈表中的內容,將需查詢函數及 其對應的等待函數與指定文件的代碼比較,所述比較為若有與需查詢函數或其對應的等 待函數一致的代碼,則說明需查詢函數或其對應的等待函數出現一次;所述指定文件為預 置在統(tǒng)計模塊中應用程序代碼所在的文件,查詢此文件中需查詢函數及其對應的等待函數 的使用次數,也就是,該應用程序所對應的應用模塊調用需查詢函數及其調用該函數對應 的等待函數的次數;記錄需查詢函數及其對應的等待函數的使用次數,并將函數名稱及函 數的使用次數、序列號、所在文件名稱發(fā)送給比較模塊。步驟303,根據所統(tǒng)計的需查詢的函數及其對應的等待函數的使用次數,確定函數 的匹配性。本步驟,比較統(tǒng)計出的需查詢函數的使用次數和其對應的等待函數的使用次數, 若兩者相同,則需查詢函數與其對應的等待函數匹配,將比較結果輸出到指定的結果文件, 所述比較結果包括序列號、函數名稱、函數的使用次數、所在文件名稱;若兩者不同,則需查 詢函數與其對應的等待函數不匹配,說明有需查詢函數或等待函數出現多余,輸出需查詢 函數與等待函數的結果不匹配的告警信息,將比較結果輸出到指定的結果文件。進一步的,開發(fā)人員可根據指定的結果文件中的內容修改代碼;也就是說,實際應 用中,可根據本發(fā)明對應用模式適應性的檢驗結果修改代碼,使應用模式的適應性得以改 進。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍,凡在 本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護 范圍之內。
權利要求
一種檢驗應用模式適應性的裝置,其特征在于,該裝置包括編譯模塊,用于解析函數文檔,獲得需查詢函數及其對應的等待函數,并將解析出的函數形成單向鏈表,發(fā)送給統(tǒng)計模塊;統(tǒng)計模塊,用于統(tǒng)計單向鏈表中的需查詢函數及其對應的等待函數在指定文件中的使用次數;比較模塊,用于根據統(tǒng)計出的需查詢函數及其對應的等待函數的使用次數,確定函數的匹配性。
2.根據權利要求1所述的裝置,其特征在于,編譯模塊具體用于,將函數文檔中需查詢函數及其對應的等待函數與自身預置的需查 詢函數及其對應的等待函數列表進行比較,將與所述列表相符的需查詢函數及其對應的等 待函數標記序列號,并將需查詢函數及其對應的等待函數以及序列號形成單向鏈表;將與 所述列表不符的需查詢函數及其對應的等待函數,保存到指定的不支持查詢函數文件中。
3.根據權利要求2所述的裝置,其特征在于,統(tǒng)計模塊具體用于,將需查詢函數及其對應的等待函數與指定文件中的代碼比較,記 錄需查詢函數及其對應的等待函數的使用次數。
4.根據權利要求3所述的裝置,其特征在于,比較模塊具體用于,將統(tǒng)計出的需查詢函數的使用次數與等待函數的使用次數比較, 兩者相同時,需查詢函數及其對應的等待函數匹配,將比較結果輸出到指定的結果文件;兩 者不同時,需查詢函數即對應的等待函數不匹配,輸出告警信息,并將比較結果輸出到指定 的結果文件。
5.一種檢驗應用模式適應性的方法,其特征在于,所述方法包括解析函數文檔,獲得需查詢函數及其對應的等待函數,并將解析出的函數形成單向鏈表;統(tǒng)計單向鏈表中需查詢函數及其對應的等待函數在指定文件中的使用次數,根據統(tǒng)計 出的需查詢函數及其對應的等待函數的使用次數確定函數匹配性。
6.根據權利要求5所述的方法,其特征在于,所述將解析出的函數形成單向鏈表包括 將函數文檔中需查詢函數及其對應的等待函數與自身預置的需查詢函數及其對應的等待函數列表進行比較,將與所述列表相符的需查詢函數及其對應的等待函數標記序列 號,并將需查詢函數及其對應的等待函數以及序列號形成單向鏈表;將與所述列表不相符 的需查詢函數及其對應的等待函數,保存到指定的不支持查詢函數文件中。
7.根據權利要求6所述的方法,其特征在于,所述統(tǒng)計單向鏈表中需查詢函數及其對 應的等待函數在指定文件中的使用次數包括將單向鏈表中的需查詢函數及其對應的等待函數與指定文件中的代碼比較,記錄需查 詢函數及其對應的等待函數的使用次數。
8.根據權利要求7所述的方法,其特征在于,所述確定函數匹配性包括比較統(tǒng)計出的需查詢函數的使用次數及其對應的等待函數的使用次數,若兩者相同, 則需查詢函數與其對應的等待函數匹配,并將比較結果輸出到指定的結果文件;若兩者不 同,則需查詢函數與其對應的等待函數不匹配,輸出告警信息,將比較結果輸出到指定的結 果文件。
全文摘要
本發(fā)明公開了一種檢驗應用模式適應性的裝置,包括編譯模塊,用于解析函數文檔,獲得需查詢函數及其對應的等待函數,并將解析出的函數形成單向鏈表,發(fā)送給統(tǒng)計模塊;統(tǒng)計模塊,用于統(tǒng)計單向鏈表中需查詢函數及其對應的等待函數在指定文件中的使用次數;比較模塊,用于根據統(tǒng)計出的統(tǒng)計出的需查詢函數及其對應的等待函數的使用次數,確定函數的匹配性。本發(fā)明還公開了一種檢驗應用模式適應性的方法,采用本發(fā)明所述的裝置及方法,節(jié)省了項目開發(fā)的成本,提升了用戶體驗。
文檔編號G06F9/48GK101866302SQ201010206648
公開日2010年10月20日 申請日期2010年6月12日 優(yōu)先權日2010年6月12日
發(fā)明者王海軍 申請人:中興通訊股份有限公司