• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Android 應(yīng)用能耗漏洞分析技術(shù)綜述

    2016-11-09 01:11:23楊紅麗秦勝潮
    關(guān)鍵詞:漏洞組件能耗

    楊紅麗 姜 皓 秦勝潮 張 健 嚴(yán) 俊

    1(北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 北京 100124)2(深圳大學(xué)計(jì)算機(jī)與軟件學(xué)院 廣東 深圳 518060)3(中國(guó)科學(xué)院軟件研究所 北京 100190)

    ?

    Android 應(yīng)用能耗漏洞分析技術(shù)綜述

    楊紅麗1姜皓1秦勝潮2張健3嚴(yán)俊3

    1(北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院北京 100124)2(深圳大學(xué)計(jì)算機(jī)與軟件學(xué)院廣東 深圳 518060)3(中國(guó)科學(xué)院軟件研究所北京 100190)

    隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,Android手機(jī)以其強(qiáng)大的功能為人們的日常生活提供便捷的服務(wù)。然而Android手機(jī)的電池能源非常有限,應(yīng)用耗電行為將直接影響其電池的使用壽命,因此Android應(yīng)用的能耗漏洞問題受到研究者的廣泛關(guān)注。研究者們已經(jīng)提出并實(shí)現(xiàn)了很多分析技術(shù)和相關(guān)工具。針對(duì)Android應(yīng)用能耗漏洞分析,對(duì)相關(guān)研究方法和工具作了綜述,概括了現(xiàn)有研究工作中的問題,討論了未來(lái)研究方向。

    Android應(yīng)用能耗漏洞程序分析移動(dòng)互聯(lián)網(wǎng)

    0 引 言

    隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,諸如智能手機(jī)和平板電腦這樣的移動(dòng)設(shè)備已經(jīng)進(jìn)入人們的生活,幫助人們開展日?;顒?dòng),如工作和娛樂。目前市場(chǎng)流行的移動(dòng)設(shè)備操作系統(tǒng)分別是Android、iOS以及Windows。然而在Strategy Analytics[1]公布的2014年第二季度智能設(shè)備操作系統(tǒng)市場(chǎng)份額報(bào)表中,Android操作系統(tǒng)的全球市場(chǎng)份額已達(dá)84.6%,占據(jù)著市場(chǎng)主導(dǎo)地位。另外,Android應(yīng)用市場(chǎng)為用戶們提供了層出不窮的Android應(yīng)用。截止到2014年,Google Play已經(jīng)發(fā)布了近1 430 000個(gè)應(yīng)用[2]。為了提高用戶體驗(yàn),Android系統(tǒng)為應(yīng)用提供了多樣化的組件,例如傳感器、多媒體服務(wù)以及文件讀取的IO組件等。因此,Android應(yīng)用可以為人們帶來(lái)豐富而又便捷的服務(wù),改變?nèi)藗兊纳罘绞?。Android系統(tǒng)為應(yīng)用開發(fā)提供充分的系統(tǒng)接口支持,吸引了廣大的應(yīng)用開發(fā)者。

    由于有限的電池容量、CPU使用率和內(nèi)存空間等眾多因素限制,移動(dòng)設(shè)備的資源顯得及其重要,尤其是手機(jī)。Android應(yīng)用與用戶交互的過程會(huì)時(shí)刻占用系統(tǒng)硬件資源,如果應(yīng)用誤調(diào)用系統(tǒng)接口導(dǎo)致資源管理不當(dāng),就會(huì)引發(fā)能耗問題。這些造成電池壽命下降的現(xiàn)象被稱為能耗漏洞[3],這些漏洞會(huì)造成系統(tǒng)不必要的能源開銷,使得電池電量很快耗盡。為了改善應(yīng)用能耗問題,越來(lái)越多的研究者開始關(guān)注Android應(yīng)用能耗研究,檢測(cè)能耗問題并提出相應(yīng)的分析方法。本文以Android平臺(tái)為背景,針對(duì)Android應(yīng)用中的能耗漏洞概括并總結(jié)現(xiàn)有的研究工作,提出進(jìn)一步的研究展望。

    1 Android應(yīng)用能耗成因

    Android系統(tǒng)以其豐富的功能改變了世界,但是隨著其功能的逐漸強(qiáng)大,系統(tǒng)能耗的代價(jià)也逐漸上升。Android手機(jī)存在大量的組件、傳感器以及服務(wù), 例如GPS、Camera、WiFi、Screen、Bluetooth等,然而每一個(gè)組件或服務(wù)的使用都會(huì)消耗電池能源。手機(jī)的能耗與其組件的使用情況有直接關(guān)系。例如,地圖應(yīng)用會(huì)通過GPS導(dǎo)航系統(tǒng)進(jìn)行地理位置追蹤;指南針應(yīng)用會(huì)使用方向傳感器確定方向;新聞應(yīng)用會(huì)通過WiFi、3G、4G網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)刻更新當(dāng)前新聞消息等。Abhijeet等人[4]通過解析Android手機(jī)中的power_profile.xml文件獲取手機(jī)組件在不同狀態(tài)下的耗電情況,如圖1所示,可以看出屏幕、GPS、Wifi等組件都是高耗電組件。不同類別的應(yīng)用會(huì)根據(jù)業(yè)務(wù)需求使用不同的組件,不同使用場(chǎng)景導(dǎo)致了手機(jī)不同程度的耗電現(xiàn)象。因此,如何在電池能源有限的情況下提高Android手機(jī)的能源使用效率,避免不必要的耗電現(xiàn)象,成為了提高用戶體驗(yàn)的重要因素,也是解決應(yīng)用高耗電問題的有效措施。

    圖1 LG L3 E400手機(jī)組件能耗圖

    2 Android應(yīng)用能耗漏洞分類

    在能源極其有限的Android手機(jī)中,系統(tǒng)資源需要被合理使用。系統(tǒng)資源被合理使用時(shí),能耗會(huì)呈現(xiàn)平穩(wěn)趨勢(shì),在釋放階段逐漸下降直到系統(tǒng)回到休眠狀態(tài),如圖2(a)所示。如果應(yīng)用出現(xiàn)能耗漏洞,那么系統(tǒng)能源將會(huì)被嚴(yán)重消耗,手機(jī)電量也將會(huì)被迅速耗盡。在應(yīng)用市場(chǎng)中,很多應(yīng)用因?yàn)殄e(cuò)誤的設(shè)計(jì)導(dǎo)致能耗漏洞的出現(xiàn)。能耗漏洞問題嚴(yán)重影響了用戶體驗(yàn),并成為開發(fā)者們關(guān)注的焦點(diǎn)。如果應(yīng)用在運(yùn)行過程中使得手機(jī)能耗大幅度上漲,那么該應(yīng)用潛在或存在某種能耗漏洞。在現(xiàn)有的研究工作中,能耗漏洞可以分為能耗熱點(diǎn)和能耗泄漏兩大類[4-8]。

    2.1能耗熱點(diǎn)

    能耗熱點(diǎn)指的是應(yīng)用運(yùn)行過程中造成能源熱點(diǎn)消耗。在圖2(b)中可以明顯看出,應(yīng)用處于資源使用階段時(shí),能耗出現(xiàn)大幅度增長(zhǎng)的趨勢(shì)。在現(xiàn)有研究工作中,能耗熱點(diǎn)主要包括以下幾種情況:

    (1) 資源申請(qǐng)與釋放時(shí)機(jī)錯(cuò)誤:資源在應(yīng)用使用時(shí)申請(qǐng)過早或者在應(yīng)用退出時(shí)釋放過晚會(huì)消耗更多的能源。

    (2) 高能耗的后臺(tái)服務(wù):為了提高用戶體驗(yàn),應(yīng)用會(huì)嘗試使用高能耗的服務(wù),例如提高GPS的位置更新頻率。然而不必要的高頻率更新會(huì)造成能源的異常消耗。

    (3) 循環(huán)能耗:循環(huán)或者迭代的方式代表應(yīng)用程序中不斷重復(fù)執(zhí)行的行為,由循環(huán)產(chǎn)生的漏洞可能出現(xiàn)在某些特定場(chǎng)景中。例如作為客戶端的Android應(yīng)用向一個(gè)不可達(dá)的服務(wù)器發(fā)送連接請(qǐng)求,周期性請(qǐng)求連接的行為將會(huì)產(chǎn)生大量能源的消耗。

    (4) 無(wú)用代碼:表示源碼中定義或者聲明卻未被使用的代碼,甚至可以是分支結(jié)構(gòu)中永遠(yuǎn)不可到達(dá)的代碼塊。虛擬機(jī)運(yùn)行程序機(jī)器指令時(shí)同樣會(huì)將這些無(wú)用代碼加載到內(nèi)存中執(zhí)行,造成多余的能源耗費(fèi)。

    (5) 過多的數(shù)據(jù)操作:過多的數(shù)據(jù)移動(dòng)或儲(chǔ)存如頻繁的I/O讀寫、SQLite數(shù)據(jù)庫(kù)操作將會(huì)嚴(yán)重消耗內(nèi)存使用[9]。

    (6) 應(yīng)用的布局加載:在應(yīng)用啟動(dòng)時(shí),需要將布局文件與相應(yīng)的Activity進(jìn)行綁定,即調(diào)用setContentView方法為此Activity顯示指定布局。布局在顯示的過程中需要系統(tǒng)讀取并解析布局文件,在布局文件相當(dāng)復(fù)雜時(shí),系統(tǒng)不得不消耗更多內(nèi)存以及更長(zhǎng)時(shí)間展開布局。

    2.2能耗泄漏

    能耗泄漏指的是應(yīng)用的某些行為阻礙手機(jī)進(jìn)入空閑狀態(tài),導(dǎo)致能源的持續(xù)消耗。如圖2(c)所示,雖然應(yīng)用在資源使用階段處于平穩(wěn)的狀態(tài),但是應(yīng)用進(jìn)入后臺(tái)或者應(yīng)用進(jìn)程結(jié)束時(shí)沒有釋放相應(yīng)的資源,使得資源不能及時(shí)釋放,導(dǎo)致應(yīng)用在資源釋放階段仍持續(xù)耗電。相關(guān)的能耗泄漏包括以下幾種情況:

    (1) 無(wú)休眠(No-Sleep)漏洞:指應(yīng)用獲取WakeLock對(duì)象使得CPU、屏幕保持在活動(dòng)狀態(tài),而在任務(wù)結(jié)束之后沒有及時(shí)釋放WakeLock對(duì)象占用的資源,導(dǎo)致CPU、LCD無(wú)法進(jìn)入休眠狀態(tài)而持續(xù)消費(fèi)能源。

    (2) 資源泄漏:WiFi、多媒體等資源有可能在應(yīng)用執(zhí)行過程中獲取,但是未能在應(yīng)用結(jié)束時(shí)進(jìn)行釋放,導(dǎo)致硬件資源處于開啟狀態(tài),造成能耗泄漏。

    (3) 自啟動(dòng)漏洞:指應(yīng)用進(jìn)程被銷毀之后在后臺(tái)再次創(chuàng)建,使得手機(jī)無(wú)休止地為該進(jìn)程消耗能源。該漏洞多數(shù)情況下由后臺(tái)的服務(wù)監(jiān)控,當(dāng)收到進(jìn)程銷毀的消息后,喚醒系統(tǒng)開啟新的進(jìn)程實(shí)例[10]。

    (4) 內(nèi)存泄漏:所有應(yīng)用程序都可能出現(xiàn)的一種能耗漏洞,指在程序運(yùn)行時(shí)系統(tǒng)不斷為程序分配內(nèi)存空間,或是由于疏忽和錯(cuò)誤導(dǎo)致程序關(guān)閉時(shí)未能釋放相應(yīng)的內(nèi)存空間。內(nèi)存泄漏的問題對(duì)于資源有限的嵌入式設(shè)備來(lái)說十分嚴(yán)重[11]。常見的內(nèi)存泄漏問題,有位圖對(duì)象內(nèi)存泄漏、監(jiān)聽器泄漏等。

    3 Android應(yīng)用能耗漏洞分析方法

    為了能夠檢測(cè)應(yīng)用中潛在的能耗漏洞,采用有效的程序分析、測(cè)試方法可以盡可能多地幫助應(yīng)用發(fā)現(xiàn)這些錯(cuò)誤,提高應(yīng)用的可靠性和健壯性。

    3.1靜態(tài)分析方法

    3.1.1信息流分析

    信息流分析分為控制流分析和數(shù)據(jù)流分析。控制流分析基于應(yīng)用程序的代碼層,將程序劃分為一個(gè)個(gè)基本塊(連續(xù)的線性代碼的語(yǔ)句序列),靜態(tài)分析基本塊之間的控制結(jié)構(gòu),以控制流圖的形式表示應(yīng)用程序執(zhí)行路徑。Michael等人[12]構(gòu)建了一般應(yīng)用程序的控制流圖,根據(jù)Manifest文件定義每個(gè)組件的入口點(diǎn)(如MainActivity的onCreate方法),并加入Android應(yīng)用的回調(diào)機(jī)制等特性(如廣播的onReceive方法),逐步完善控制流圖的構(gòu)建。Guo[13]等人采用控制流圖的方法檢測(cè)能耗泄漏問題。該方法通過字節(jié)碼的分析構(gòu)建函數(shù)調(diào)用關(guān)系圖以及每個(gè)函數(shù)的控制流圖,并對(duì)函數(shù)調(diào)用關(guān)系圖和控制流圖等結(jié)構(gòu)進(jìn)行深度遍歷,檢測(cè)應(yīng)用中的喚醒鎖、傳感器等資源是否出現(xiàn)能耗泄漏。Abhinav等人[14]用數(shù)據(jù)流分析方法檢測(cè)無(wú)休眠漏洞。該方法以控制流圖為基礎(chǔ),在控制流圖中基本塊的入口處以及出口處收集程序的語(yǔ)義信息,利用數(shù)據(jù)流方程對(duì)程序中數(shù)據(jù)的使用、定義及數(shù)據(jù)之間的依賴關(guān)系等方面的信息進(jìn)行分析,從而對(duì)Wakelock對(duì)象以及Camera對(duì)象的申請(qǐng)與釋放狀態(tài)進(jìn)行檢測(cè)。Panagiotis等人[15]使用控制流與數(shù)據(jù)流相結(jié)合的分析方法對(duì)328個(gè)Android應(yīng)用進(jìn)行No-sleep漏洞的檢測(cè),發(fā)現(xiàn)其中145個(gè)應(yīng)用存在該漏洞。

    3.1.2中間語(yǔ)言轉(zhuǎn)換

    由于Dalvik字節(jié)碼不同于Java字節(jié)碼,導(dǎo)致Soot[26]、WALA[28]等工具無(wú)法支持對(duì)Dalvik字節(jié)碼的分析。因此,一些研究方法通過將Dalvik字節(jié)碼進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換為Java字節(jié)碼或中間表示語(yǔ)言,從而可以采用更加通用的Java程序分析方法以及工具進(jìn)行分析。Damien[29]等人提出Dare工具將Android應(yīng)用程序作為輸入(輸入包括dex、apk以及class文件),生成應(yīng)用的Java字節(jié)碼。同樣地,Dexpler工具[30]可以將Dalvik字節(jié)轉(zhuǎn)換為Jimple語(yǔ)言表示。Jimple語(yǔ)言是Soot工具支持的中間表示語(yǔ)言,因此可以利用Soot工具對(duì)Jimple文件進(jìn)行分析。

    3.1.3模型檢測(cè)

    在能耗泄漏問題中,研究方法可以將系統(tǒng)資源的使用情況作為應(yīng)用的狀態(tài),對(duì)應(yīng)用的具體實(shí)現(xiàn)進(jìn)行抽象,用狀態(tài)遷移系統(tǒng)建立應(yīng)用資源狀態(tài)的轉(zhuǎn)換模型,并用相應(yīng)的模態(tài)邏輯公式與時(shí)態(tài)邏輯公式驗(yàn)證模型是否存在資源泄露問題。Song等人[35]使用模型檢測(cè)的方法識(shí)別用戶信息泄漏情況,文章雖然關(guān)注安全問題,但是模型檢測(cè)的方法同樣可以借鑒到能耗分析中。

    3.1.4符號(hào)執(zhí)行

    符號(hào)執(zhí)行的方法通常使用在路徑敏感的程序分析中。對(duì)于能耗問題的靜態(tài)分析,利用符號(hào)執(zhí)行的方法可以精確地模擬應(yīng)用的執(zhí)行,并在每一條分支結(jié)構(gòu)下,收集目標(biāo)變量的可能取值。因此,研究方法可以將應(yīng)用所使用的資源作為目標(biāo)變量進(jìn)行跟蹤,對(duì)每條執(zhí)行路徑中資源變量的取值狀態(tài)進(jìn)行分析。現(xiàn)有工作中使用符號(hào)執(zhí)行方法的能耗研究相對(duì)較少,Nariman等人[34]通過改造Java Path Finder工具使應(yīng)用可以運(yùn)行于JVM虛擬機(jī),并提出符號(hào)執(zhí)行的方法生成測(cè)試用例并對(duì)應(yīng)用進(jìn)行動(dòng)態(tài)測(cè)試。

    3.2動(dòng)態(tài)分析方法

    3.2.1事件流分析

    為了能夠?qū)崟r(shí)監(jiān)控應(yīng)用執(zhí)行中出現(xiàn)的能耗漏洞,Abhijeet等人[4]提出了基于事件流圖的測(cè)試框架,動(dòng)態(tài)分析應(yīng)用程序的行為。該框架可以檢測(cè)能耗熱點(diǎn)以及能耗泄漏。事件流圖基于Android UI模型[16],而流圖的構(gòu)建需要通過其他工具完成,分別為Hierarchy Viewer[17]和Dynodroid[18]。前者提供應(yīng)用布局中UI控件元素信息,而后者可以針對(duì)控件能夠觸發(fā)的事件自動(dòng)化生成事件序列。序列中的每個(gè)節(jié)點(diǎn)代表一個(gè)具體的執(zhí)行動(dòng)作(例如點(diǎn)擊應(yīng)用中的播放按鈕執(zhí)行音頻文件的播放),而節(jié)點(diǎn)之間的邊代表事件間的轉(zhuǎn)移。在應(yīng)用程序運(yùn)行過程中,框架在記錄事件序列的同時(shí),還需要跟蹤并記錄交互過程中系統(tǒng)資源API的調(diào)用情況,并通過Yokogawa WT210[19]測(cè)量?jī)x器給出精確的應(yīng)用能耗信息。框架根據(jù)能耗信息可以計(jì)算特定組件的能耗情況,該值越高則代表應(yīng)用耗電越嚴(yán)重。因此,在應(yīng)用執(zhí)行過程中出現(xiàn)能耗過高的情況則代表應(yīng)用出現(xiàn)能耗熱點(diǎn)問題。應(yīng)用退出時(shí),能耗過高則代表能耗泄漏問題??蚣軐?duì)30個(gè)應(yīng)用進(jìn)行檢測(cè),并準(zhǔn)確發(fā)現(xiàn)潛在的能耗熱點(diǎn)與能耗泄漏。

    3.2.2污點(diǎn)檢測(cè)

    污點(diǎn)檢測(cè)[20]將來(lái)自于可疑渠道的數(shù)據(jù)標(biāo)記為“被污染”,跟蹤污點(diǎn)數(shù)據(jù)在程序中的擴(kuò)散過程,最后通過一定的檢測(cè)規(guī)則查找軟件中的漏洞。TaintDroid[21]是Android平臺(tái)的擴(kuò)展工具,用于檢測(cè)敏感數(shù)據(jù)在不信任應(yīng)用中泄漏的安全問題。它自動(dòng)標(biāo)記涉及到敏感數(shù)據(jù)的變量、文件、進(jìn)程間的消息,當(dāng)污點(diǎn)數(shù)據(jù)通過網(wǎng)絡(luò)傳播離開手機(jī)時(shí)報(bào)告給用戶以及安全服務(wù)商。而Zhang等人[22]基于TaintDroid的方法提出ADEL工具,用來(lái)檢測(cè)能耗熱點(diǎn),例如下載無(wú)用網(wǎng)絡(luò)數(shù)據(jù)或數(shù)據(jù)頻繁更新。工具在網(wǎng)絡(luò)端口監(jiān)聽下載數(shù)據(jù),將下載的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行分類并將每類數(shù)據(jù)對(duì)象標(biāo)記唯一的ID標(biāo)簽作為污點(diǎn)數(shù)據(jù),用堆棧結(jié)構(gòu)存儲(chǔ)標(biāo)簽信息以及該標(biāo)簽的數(shù)據(jù)對(duì)象。Liu[23]提出的GreenDroid工具利用污點(diǎn)分析的方法分析傳感器數(shù)據(jù)的利用率。該工具構(gòu)建基于Java Path Finder[24],使Android應(yīng)用程序可以運(yùn)行在JVM虛擬機(jī)。該工具可以幫助應(yīng)用定位能源使用效率低下的問題。Flowdroid[25]是一個(gè)Android應(yīng)用靜態(tài)污點(diǎn)分析工具,工具在Soot[26]和Heros[27]的基礎(chǔ)上進(jìn)行精確的數(shù)據(jù)流分析,整個(gè)分析過程與數(shù)據(jù)流執(zhí)行順序相關(guān)。該方法分為向前、向后兩種方向的分析,向前的污點(diǎn)分析用于找出污點(diǎn)變量、引用的傳播位置;而向后的污點(diǎn)分析用于查找污點(diǎn)數(shù)據(jù)生成之前所依賴的其他數(shù)據(jù),這些數(shù)據(jù)存在于堆棧中。

    3.2.3程序插樁分析

    程序插樁技術(shù)是將代碼片段(如日志信息輸出語(yǔ)句)植入目標(biāo)應(yīng)用中,然后運(yùn)行應(yīng)用,收集應(yīng)用在動(dòng)態(tài)運(yùn)行過程中的狀態(tài)變量變化信息以及執(zhí)行路徑信息(如函數(shù)執(zhí)行順序、調(diào)用關(guān)系等)。插樁分析不能直接檢測(cè)應(yīng)用的能耗問題,但是該方法可以有效地理解應(yīng)用的動(dòng)態(tài)行為,從而驗(yàn)證應(yīng)用是否滿足某些性質(zhì)或規(guī)則。Guo[13]等人利用插樁分析方法收集應(yīng)用動(dòng)態(tài)執(zhí)行的路徑覆蓋信息,從而驗(yàn)證靜態(tài)分析中系統(tǒng)資源泄漏問題的正確性。

    3.3現(xiàn)有工作總結(jié)

    通過以上介紹,Android應(yīng)用能耗漏洞的分析方法可分為靜態(tài)、動(dòng)態(tài)分析兩類。從表1中可以看到每種方法的特點(diǎn)。

    表1 能耗漏洞分析方法總結(jié)

    3.4相關(guān)工具

    探究應(yīng)用性能及能耗的相關(guān)工具有很多,分別從應(yīng)用的調(diào)試方面、測(cè)試方面和分析方面幫助開發(fā)者進(jìn)行檢測(cè)。

    在應(yīng)用開發(fā)與調(diào)試方面,Google在Android2.3中增加的StrictMode接口[36]可以檢測(cè)代碼質(zhì)量。Android提供的TraceView工具[37]可以圖形化顯示應(yīng)用在每個(gè)線程中所調(diào)用函數(shù)的執(zhí)行時(shí)間與執(zhí)行次數(shù)。SDK中提供的Dmtracedump工具[38]可以分析應(yīng)用執(zhí)行過程中方法之間的層級(jí)調(diào)用關(guān)系。Apktool[40]是一個(gè)應(yīng)用的逆向工具,該工具可以對(duì)APK文件進(jìn)行逆向工程,生成smali格式的字節(jié)碼文件。結(jié)合dex2jar工具[41]可以將smali字節(jié)碼轉(zhuǎn)為Java代碼,便于分析第三方應(yīng)用。Androguard工具[39]同樣采用逆向工程的方法分析APK文件,可以獲取應(yīng)用中的相關(guān)組件、權(quán)限等信息并生成相應(yīng)的方法調(diào)用關(guān)系圖、控制流圖。Relda[13]是一個(gè)基于Androguard的Android應(yīng)用的靜態(tài)分析工具,該工具可以檢測(cè)應(yīng)用中存在的資源泄漏,并給出詳細(xì)的分析報(bào)告。 MAT工具[33]是Eclipse平臺(tái)提供的用于分析Java程序內(nèi)存問題的工具,同時(shí)支持Android應(yīng)用的內(nèi)存分析。Hierarchy Viewer工具[17]適用于查看與分析應(yīng)用布局中各個(gè)控件的層次結(jié)構(gòu),可以進(jìn)一步分析布局中的性能瓶頸。

    在應(yīng)用測(cè)試方面,Android提供的Instrumentation框架[42]基于Junit框架[43],增加Android應(yīng)用特性。Robotium框架[32]是一個(gè)開源的Android自動(dòng)化測(cè)試庫(kù),該框架進(jìn)一步封裝了Instrumentation框架,實(shí)現(xiàn)了應(yīng)用的集成測(cè)試。Monkey[44]和MonkeyRunner[31]是黑盒測(cè)試工具,通常用于測(cè)試第三方應(yīng)用的壓力、可靠性、運(yùn)行錯(cuò)誤與異常。

    4 現(xiàn)有工作中的問題

    4.1靜態(tài)分析中的問題

    (1) 在靜態(tài)分析過程中,為了全局分析類之間或者函數(shù)之間的交互、依賴關(guān)系,經(jīng)常采用構(gòu)建函數(shù)摘要的方法。函數(shù)摘要是對(duì)函數(shù)信息的抽象,能耗分析中的函數(shù)摘要不僅要關(guān)注函數(shù)的輸入變量、輸出變量信息,還需要包含函數(shù)內(nèi)部是否調(diào)用了資源相關(guān)的API。然而函數(shù)摘要的定義并沒有統(tǒng)一的標(biāo)準(zhǔn),如果為了提高分析效率而將函數(shù)摘要定義得非常簡(jiǎn)單,那么分析的準(zhǔn)確度將會(huì)降低。例如某個(gè)函數(shù)摘要中定義了返回值的類型,在主調(diào)函數(shù)中該類型根據(jù)多態(tài)特性發(fā)生類型轉(zhuǎn)換,導(dǎo)致無(wú)法確定該返回值的實(shí)際類型。

    (2) Android應(yīng)用是基于事件驅(qū)動(dòng)的,靜態(tài)分析需要將事件觸發(fā)時(shí)的回調(diào)機(jī)制考慮全面。然而Android版本升級(jí)頻率很高,每一次版本升級(jí)必然加入了新的API,分析方法需要定期將新的API回調(diào)規(guī)則以及錯(cuò)誤模式進(jìn)行升級(jí)。

    (3) 目前的應(yīng)用能耗靜態(tài)分析還存在較多誤報(bào)情況,這是由于分析的精確程度不同而導(dǎo)致的。例如分析方法未能將Android的回調(diào)特性考慮全面,或是無(wú)法識(shí)別多態(tài)類型的轉(zhuǎn)換導(dǎo)致變量的實(shí)際類型無(wú)法確認(rèn)。另外,為了提高分析效率而簡(jiǎn)化循環(huán)、遞歸結(jié)構(gòu)的處理同樣會(huì)導(dǎo)致分析結(jié)果的不準(zhǔn)確。

    (4) 靜態(tài)分析往往能夠檢測(cè)出潛在的能耗問題,然而這些問題是否能夠給手機(jī)能耗帶來(lái)影響,還需要進(jìn)行人工確認(rèn)。一方面通過插樁的方式檢測(cè)問題是否能夠被觸發(fā),另一方面需要監(jiān)控能耗的使用信息來(lái)判定問題的真實(shí)性。

    4.2動(dòng)態(tài)分析中的問題

    (1) 動(dòng)態(tài)分析不需要針對(duì)應(yīng)用的代碼進(jìn)行分析,而是在應(yīng)用運(yùn)行過程中檢測(cè)能耗漏洞。因此,動(dòng)態(tài)分析需要生成有效的測(cè)試用例并保證測(cè)試用例能夠覆蓋應(yīng)用運(yùn)行過程中的所有狀態(tài),這樣才足以觸發(fā)并檢測(cè)到應(yīng)用的能耗問題,否則將會(huì)產(chǎn)生漏報(bào)情況。因此,如何保證測(cè)試用例的覆蓋率是動(dòng)態(tài)分析需要解決并改進(jìn)的問題。

    (2) 應(yīng)用的運(yùn)行過程與用戶的行為密切相關(guān),用戶會(huì)根據(jù)經(jīng)驗(yàn)改變應(yīng)用的各種狀態(tài),因此生成測(cè)試用例時(shí)如果能夠?qū)⒂脩舻男袨榱?xí)慣作為約束條件,那么動(dòng)態(tài)分析的效率將會(huì)更高。

    (3) 針對(duì)能耗問題進(jìn)行動(dòng)態(tài)分析需要運(yùn)行真實(shí)應(yīng)用并監(jiān)控手機(jī)的能耗情況?,F(xiàn)有研究中通常利用外部?jī)x器對(duì)手機(jī)能耗信息進(jìn)行監(jiān)控,這就為動(dòng)態(tài)分析的環(huán)境構(gòu)建帶來(lái)不便因素。

    5 Android應(yīng)用能耗研究展望與趨勢(shì)

    Android應(yīng)用能耗相關(guān)研究自數(shù)年前開始得到廣泛關(guān)注,不論從能耗測(cè)量的角度或者能耗漏洞檢測(cè)的角度,大量的研究方法都證明了能耗研究在理論研究和實(shí)踐探索中都取得了較為突出的成果。然而隨著應(yīng)用程序?qū)崿F(xiàn)方法的不斷演變,能耗問題將會(huì)以不同形式展現(xiàn),并且應(yīng)用開發(fā)者在開發(fā)過程中會(huì)將主要精力放在功能實(shí)現(xiàn)而忽略能耗優(yōu)化,因此現(xiàn)階段研究并不能說明Android應(yīng)用能耗研究已經(jīng)達(dá)到完備。相反,現(xiàn)有研究并不充分,并且隨著系統(tǒng)的發(fā)展,仍有更多的研究領(lǐng)域值得廣泛關(guān)注。

    (1) 改進(jìn)靜態(tài)分析方法

    目前應(yīng)用的靜態(tài)分析需要提高分析的精確度。如圖3所示,很多研究工作的靜態(tài)分析都是通過Android應(yīng)用源碼或反編譯后的Dalvik字節(jié)碼,并根據(jù)動(dòng)態(tài)回調(diào)機(jī)制,生成應(yīng)用的組件間關(guān)系調(diào)用圖、函數(shù)調(diào)用關(guān)系圖,以及每個(gè)函數(shù)的控制流圖;通過過程內(nèi)與過程間的分析獲取應(yīng)用組件的狀態(tài),檢測(cè)組件的狀態(tài)是否在每條可執(zhí)行路徑結(jié)束時(shí)都處于釋放狀態(tài),從而判斷應(yīng)用是否存在能耗漏洞。因此從整個(gè)過程來(lái)看,分析方法需要在信息流構(gòu)建、過程內(nèi)以及過程間進(jìn)行改進(jìn),例如細(xì)化函數(shù)摘要的定義;并且盡可能全面地考慮Android的動(dòng)態(tài)回調(diào)機(jī)制,例如AsyncTask對(duì)象執(zhí)行execute()方法后要先后調(diào)用onPreExecute()、doInBackground()、onProgressUpdate()和onPostExecute()四個(gè)回調(diào)函數(shù)。因此可以將回調(diào)規(guī)則建立為相應(yīng)的鍵值映射結(jié)構(gòu),當(dāng)識(shí)別這些含有回調(diào)機(jī)制的指令時(shí),根據(jù)鍵值映射結(jié)構(gòu)以及對(duì)象所屬類型可以找到相應(yīng)的回調(diào)函數(shù)塊進(jìn)行分析。而靜態(tài)分析結(jié)果的不確定性可以通過動(dòng)態(tài)分析確認(rèn),并將不確定的信息交由動(dòng)態(tài)分析精化。如圖4所示,可以對(duì)應(yīng)用代碼進(jìn)行插樁或者添加某些日志消息輸出的指令,然后使用Monkey工具進(jìn)行自動(dòng)化壓力測(cè)試,收集應(yīng)用測(cè)試過程中的路徑覆蓋信息。將這些信息和靜態(tài)分析結(jié)果的問題路徑信息進(jìn)行比較,可以有效地驗(yàn)證靜態(tài)分析的準(zhǔn)確性。

    圖3 Android應(yīng)用靜態(tài)分析流程

    圖4 通過動(dòng)態(tài)分析確定靜態(tài)分析結(jié)果

    當(dāng)Android版本更新,分析方法需要收集新的組件API規(guī)則以及定義新的能耗錯(cuò)誤模式?,F(xiàn)有工作通常是參照Android開發(fā)文檔進(jìn)行人工整理,通常會(huì)花費(fèi)大量時(shí)間。為了提高效率,研究工作可以利用網(wǎng)絡(luò)爬蟲技術(shù),制定相應(yīng)的過濾規(guī)則,對(duì)在線開發(fā)文檔進(jìn)行API信息的抓取。如圖5所示,在開發(fā)文檔頁(yè)面的html頁(yè)面中,可以針對(duì)Android組件所屬的包名以及版本號(hào)進(jìn)行分類過濾,然后通過包名所在的頁(yè)面獲取該包中的類型信息,以及每個(gè)類中所有方法的信息。例如通過抓取可以收集到WakeLock類在Android5.0中加入了帶參數(shù)的release方法,而Camera類在Android5.0中已經(jīng)被Camera2替換。

    圖5 通過網(wǎng)絡(luò)爬蟲對(duì)開發(fā)文檔API信息進(jìn)行分類抓取

    (2) 構(gòu)建智能化的動(dòng)態(tài)分析方法

    現(xiàn)有能耗研究的方法以及技術(shù)已較為完善,然而Android應(yīng)用的運(yùn)行和用戶的使用行為密切相關(guān),因此在系統(tǒng)和應(yīng)用方面都需要智能化動(dòng)態(tài)感知能耗漏洞,自適應(yīng)使用環(huán)境的變化,甚至可以根據(jù)環(huán)境采取相應(yīng)的措施來(lái)堵塞漏洞的發(fā)生。例如,當(dāng)手機(jī)處于低電量狀態(tài),用戶通常希望GPS、WiFi等高耗電組件處于關(guān)閉狀態(tài)。這時(shí)如果某個(gè)應(yīng)用在后臺(tái)啟動(dòng)這些組件,那么組件的啟動(dòng)行為應(yīng)該被檢測(cè)并記錄。研究方法可以一方面通過Android API獲取電量信息以及組件使用情況,如ConnectivityManager類可以判別當(dāng)前網(wǎng)絡(luò)連接類型,LocationManager類可以判別GPS是否開啟等;另一方面獲取Android文件系統(tǒng)中的能耗信息,這些信息保存在/proc目錄下,例如/proc/stat文件記錄了系統(tǒng)CPU使用信息,/proc/meminfo記錄了系統(tǒng)內(nèi)存使用信息等。根據(jù)電量以及組件使用信息,可以構(gòu)建Android服務(wù),在手機(jī)電量低的情況下對(duì)組件使用情況進(jìn)行動(dòng)態(tài)檢測(cè),將組件的能耗信息進(jìn)行統(tǒng)計(jì)并反饋給用戶,讓用戶了解手機(jī)中的應(yīng)用是否潛在能耗問題。因此對(duì)于用戶來(lái)說,構(gòu)建有效的、智能化的能耗分析、解決方案,將是Android應(yīng)用能耗分析的前景。

    (3) 應(yīng)用本地庫(kù)代碼中的能耗分析

    現(xiàn)有工作對(duì)應(yīng)用的本地代碼研究相對(duì)較少。Android系統(tǒng)通過NDK可以得到C/C++代碼支持,目前大部分的開源庫(kù)是C/C++代碼開發(fā),應(yīng)用需要構(gòu)建本地方法調(diào)用第三方開源庫(kù)。然而本地方法的錯(cuò)誤使用同樣會(huì)導(dǎo)致能耗漏洞的出現(xiàn)。例如很多應(yīng)用會(huì)使用OpenGL ES進(jìn)行三維圖形的渲染,如果應(yīng)用在本地方法中沒有有效控制渲染幀率,或者沒有及時(shí)釋放無(wú)用的幀緩存,那么手機(jī)將會(huì)加速耗電?,F(xiàn)有工作中對(duì)NDK中能耗問題的探測(cè)相對(duì)較少,因此這是一個(gè)值得關(guān)注的領(lǐng)域。

    (4) 應(yīng)用布局的性能分析

    布局在呈現(xiàn)的過程中需要系統(tǒng)讀取并解析布局文件。當(dāng)布局文件相當(dāng)復(fù)雜時(shí),系統(tǒng)會(huì)消耗更多內(nèi)存以及更長(zhǎng)時(shí)間展開布局,造成布局的加載出現(xiàn)卡頓現(xiàn)象,大大降低了用戶體驗(yàn)。圖6為Hierarchy View工具對(duì)布局的分析示例,左邊的FrameLayout控件中布局指示器和繪制指示器均顯示為黑色,表示該控件在視圖樹加載過程中執(zhí)行緩慢。究其緩慢的原因是該FrameLayout控件所包含的子控件數(shù)目很多,層次較為復(fù)雜。Android系統(tǒng)繪制應(yīng)用布局需要經(jīng)過測(cè)量過程和繪制過程,如果視圖樹中層次復(fù)雜,節(jié)點(diǎn)數(shù)目過多,那么布局加載的過程就會(huì)需要更多時(shí)間以及更大內(nèi)存。因此在檢測(cè)布局性能問題時(shí),研究方法可以關(guān)注布局中視圖樹的復(fù)雜程度,可以根據(jù)某些規(guī)則,減小視圖樹的層次。例如同一層次的ImageView控件和TextView控件可以合并為一個(gè)TextView控件,而利用TextView的drawable屬性就可以完成圖片的填充。目前應(yīng)用布局性能分析的研究工作相對(duì)較少,因此如何減少布局帶來(lái)的系統(tǒng)開銷需要更廣泛的關(guān)注和研究。

    圖6 Hierarchy Viewer工具分析布局加載的性能

    (5) 新特性中潛在的能耗問題

    目前Android5.0系統(tǒng)為改善能耗提出新的特性,包括系統(tǒng)以及API兩個(gè)方面。因此開發(fā)者應(yīng)該遵循這些“新規(guī)則”構(gòu)建出更為省電的應(yīng)用,這就導(dǎo)致現(xiàn)有應(yīng)用不得不經(jīng)過舊版本移植的過程。并且伴隨新特性,新應(yīng)用開發(fā)過程中出現(xiàn)的新問題也將會(huì)存在更多的研究空間。

    (6) 應(yīng)用能耗優(yōu)化分析

    現(xiàn)有的研究工作多是針對(duì)能耗的分析與檢測(cè)。然而為了避免漏洞的出現(xiàn),研究工作可以從優(yōu)化方法的角度出發(fā),對(duì)存在能耗漏洞的應(yīng)用給出合理的優(yōu)化建議和優(yōu)化方案,這樣可以更加有效地幫助開發(fā)者改善應(yīng)用中的能耗問題。例如所有的資源釋放操作都可以提前到Activity的onPause方法中進(jìn)行,也就是當(dāng)應(yīng)用處于暫停狀態(tài)下釋放相應(yīng)的資源,關(guān)閉高耗電組件。

    6 結(jié) 語(yǔ)

    本文對(duì)Android應(yīng)用能耗分析技術(shù)進(jìn)行綜述。首先介紹Android應(yīng)用中能耗問題的成因。然后對(duì)現(xiàn)有研究中發(fā)現(xiàn)的能耗漏洞進(jìn)行分類,并對(duì)每種能耗漏洞的子問題進(jìn)行描述。接著詳細(xì)描述了能耗漏洞的現(xiàn)有分析方法以及相關(guān)工具,并概括了現(xiàn)有工作中的不足。最后根據(jù)現(xiàn)有工作存在的問題以及Android應(yīng)用能耗研究的發(fā)展對(duì)未來(lái)研究工作進(jìn)行展望。

    [1] Android Captures Record 85% share of Global Smartphone shipments in Q2 2014[OL].[2014-7-30].http://www.strategyanalytics.com/default.aspx?mod=reportabstractviewer&a0=9921.

    [2] GooglePlay[OL].[2015-4-2]. http://en.wikipedia.org/wiki/Google_Play.

    [3] Jack Z, Ayemi M, Wei L. A Comparison of Energy Bugs for Smartphone Platforms[C]//The International Workshop on Engineering of Mobile-Enabled Systems. San Francisco: IEEE, 2013:25-30.

    [4] Abhijeet B, Lee K C, Sudipta C, et al. Detecting energy bugs and hotspots in mobile apps[C]//The 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering(FSE 2014). New York: ACM, 2014:588-598.

    [5] Marion G, Mirco J, Jan J, et al. Removing Energy Code Smells with Reengineering Services[J].GI-Jahrestagung,LNI,2012, 208:441-455.

    [6] Pathak A,Hu Y C, Zhang M. Bootstrapping Energy Debugging on Smartphones: A First Look at Energy Bugs in Mobile Devices[C]//The 10th ACM Workshop on Hot Topics in Networks Article(Hotnets’11).New York:ACM,2011:1-6.

    [7] étienne P, Fausto S. Static analysis of Android programs[C]//The 23rd international conference on Automated deduction(CADE2011).Berlin:Springer,2011:439-445.

    [8] Li D, Halfond W G J. An Investigation into Energy-Saving Programming Practices for Android Smartphone App Development[C]//The 3rd International Workshop on Green and Sustainable Software(GREENS’2014). New York: ACM, 2014:46-53.

    [9] Hagen H, Christian B. Towards an energy-consumption based complexity classification for resource substitution strategies[C]//The CEUR Workshop Proceedings,CEUR-WS(GvD Workshop’10). Bad Helmstedt: 2010,581.

    [10] Android Service[OL].[2015-3-19].http://developer.android.com/reference/android/app/Service.html.

    [11] Jihyun P, Byoungju C. Automated Memory Leakage Detection in Android Based Systems[J].International Journal of Control and Automation, 2012,5(2):35-42.

    [12] Grace M, Zhou Y J, Wang Z, et al. Systematic Detection of Capability Leaks in Stock Android Smartphones[C]//The 19th Network and Distributed System Security Symposium(NDSS 2012).San Diego: NDSS, 2012:1-15.

    [13] Guo Chaorong,Zhang Jian,Yan Jun, et al. Characterizing and Detecting Resource Leaks in Android Applications[C]//The 28th International Conference on Automated Software Engineering(ASE 2013).Silicon Valley: IEEE, 2013:389-398.

    [14] Abhinav P, Abhilash J, Hu Y C, et al. What is keeping my phone awake?: characterizing and detecting no-sleep energy bugs in smartphone apps[C]//The 10th international conference on Mobile systems, applications and services(MobiSys’12).New York: ACM, 2012:267-280.

    [15] Panagiotis V, Ranjit J, Sorin L, et al. Towards verifying android apps for the absence of no-sleep energy bugs[C]//The 2012 USENIX conference on Power-Aware Computing and Systems(HotPower’12). Berkeley: USENIX Association, 2012:3.

    [16] Atif M, Ishan B, Adithya N. GUI Ripping: Reverse Engineering of Graphical User Interface for Testing[C]//The 10th Working Conference on Reverse Engineering(WCRE’03).IEEE, 2003:260-269.

    [17] Hierarchy Viewer[OL]. [2015-4-2].http://developer.android.com/tools/help/hierarchy-viewer.html.

    [18] Aravind M, Rohan T, Mayur N. Dynodroid: An Input Generation System for Android Apps[C]//The 9th Joint Meeting on Foundations of Software Engineering(ESEC/FSE 2013).New York: ACM, 2013:224-234.

    [19] Yokogawa WT210[OL].[2013-5-12].http://tmi.yokogawa.com/discontinued-products/digital-power-analyzers/digital-power-analyzers/wt210wt230-digital-power-meters/#tm-wt210_01.htm.

    [20] Taint Checking[OL].[2014-1-7]. http://en.wikipedia.org/wiki/Taint_checking.

    [21] William E, Peter G, Byung C, et al. TaintDroid: An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones[C]//The 9th USENIX Symposium on Operating Systems Design and Implementation(OSDI’10),2010:1-15.

    [22] Zhang L, Gordon M S,Dick R P, et al. ADEL: an automatic detector of energy leaks for smartphone applications[C]//The 8th ACM international conference on Hardware/software codesign and system synthesis(CODES+ISSS’12). New York: ACM, 2012:363-372.

    [23] Liu Yepang, Xu Chang, Cheung S C. Where Has My Battery Gone? Finding Sensor Related Energy Black Holes in Smartphone Applications[C]//The 2013 IEEE International Conference on Pervasive Computing and Communications (PerCom).San Diego: IEEE, 2013:2-10.

    [24] Java Path Finder[OL].[2007-10-30]. http://babelfish.arc.nasa.gov/trac/jpf/.

    [25] Steven A, Siegfried R, Christian F, et al. FlowDroid: Precise Context, Flow, Field, Object-sensitive and Lifecycle-aware Taint Analysis for Android Apps[C]//The 35th ACM SIGPLAN Conference on Programming Language Design and Implementation(PLDI’14).New York: ACM, 2014:259-269.

    [26] SOOT[OL].[2008-9-22]. http://www.bodden.de/2008/09/22/soot-intra.

    [27] Heros[OL]. [2015-1-27]. https://github.com/Sable/heros.

    [28] WALA[OL].[2013-7-17]. http://wala.sourceforge.net/wiki/index.php/Main_Page.

    [29] Damien O, Somesh J, Patrick M. Retargeting Android Applications to Java Bytecode[C]//The ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering(FSE’12). New York: ACM, 2012:1-11.

    [30] Alexandre B, Jacques K, Yves L T, et al. Dexpler: converting Android Dalvik bytecode to Jimple for static analysis with Soot[C]//The ACM SIGPLAN International Workshop on State of the Art in Java Program analysis(SOAP’12). New York: ACM, 2012:27-38.

    [31] MonkeyRunner[OL].[2015-2-16].http://developer.android.com/tools/help/MonkeyRunner.html.

    [32] Robotium[OL].[2015-3-10].https://code.google.com/p/robotium/wiki/RobotiumTutorials.

    [33] MAT[OL]. [2014-6-25]. http://www.eclipse.org/mat/.

    [34] Nariman M, Sam M, Corina S P, et al. Testing Android Apps Through Symbolic Execution[J].ACM SIGSOFT Software Engineering Notes,2012,37(6):1-5.[35] Song F, Touili T. Model-Checking for Android Malware Detection[J].Programming Languages and Systems, 2014:216-235.

    [36] StrictMode[OL].[2015-4-2].http://developer.android.com/reference/android/os/StrictMode.html.

    [37] Traceview[OL].[2015-4-2].http://developer.android.com/tools/help/traceview.html.

    [38] dmtracedump[OL].[2015-4-2].http://developer.android.com/tools/help/dmtracedump.html.

    [39] Androguard[OL].[2015-4-2]. https://code.google.com/p/androguard/.

    [40] Apktool[OL].[2015-3-18]. http://ibotpeaches.github.io/Apktool/.

    [41] dex2jar[OL]. [2012-10-25]. http://code.google.com/p/dex2jar.

    [42] Instrumentation[OL].[2015-4-2].http://developer.android.com/reference/android/app/Instrumentation.html.

    [43] Junit[OL]. [2014-12-4]. http://junit.org/.

    [44] Monkey[OL].[2015-2-16].http://developer.android.com/tools/help/monkey.html.

    SURVEY ON ENERGY BUG ANALYSIS TECHNOLOGY OF ANDROID APPLICATIONS

    Yang Hongli1Jiang Hao1Qin Shengchao2Zhang Jian3Yan Jun3

    1(College of Computer Science, Beijing University of Technology, Beijing 100124, China)2(CollegeofComputerScienceandSoftwareEngineering,ShenzhenUniversity,Shenzhen518060,Guangdong,China)3(InstituteofSoftware,ChineseAcademyofSciences,Beijing100190,China)

    With the rapid development of mobile Internet technology, Android smart phone provides convenient services for people’s daily life with its powerful functions. However, the energy resource of Android applications is very limited. The energy consumption of Android applications will directly affect battery life. Therefore, the energy bugs of Android applications are greatly concerned by the researchers, and quite a few of technologies and correlated tools have been proposed and developed. This paper outlines the correlated research methods and tools for energy bugs analysis of Android applications and summarises the problems in recent studies, as well as discusses the research directions in the future.

    Android applicationsEnergy bugProgram analysisMobile internet

    2015-06-07。國(guó)家自然科學(xué)基金項(xiàng)目(61373033)。楊紅麗,副教授,主研領(lǐng)域:Android應(yīng)用能耗分析,程序分析與驗(yàn)證。姜皓,碩士。秦勝潮,教授。張健,研究員。嚴(yán)俊,副研究員。

    TP3

    A

    10.3969/j.issn.1000-386x.2016.09.001

    猜你喜歡
    漏洞組件能耗
    漏洞
    120t轉(zhuǎn)爐降低工序能耗生產(chǎn)實(shí)踐
    昆鋼科技(2022年2期)2022-07-08 06:36:14
    無(wú)人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
    能源工程(2022年2期)2022-05-23 13:51:50
    能耗雙控下,漲價(jià)潮再度來(lái)襲!
    探討如何設(shè)計(jì)零能耗住宅
    新型碎邊剪刀盤組件
    U盾外殼組件注塑模具設(shè)計(jì)
    日本先進(jìn)的“零能耗住宅”
    三明:“兩票制”堵住加價(jià)漏洞
    漏洞在哪兒
    国产精品98久久久久久宅男小说| 成人18禁高潮啪啪吃奶动态图| 亚洲av美国av| 曰老女人黄片| 国产精品一区二区免费欧美| 免费在线观看亚洲国产| 视频在线观看一区二区三区| 久久人妻福利社区极品人妻图片| 国产不卡一卡二| √禁漫天堂资源中文www| 两个人视频免费观看高清| 精品乱码久久久久久99久播| 精品国产亚洲在线| 中文字幕av电影在线播放| 久久久国产成人免费| 天堂动漫精品| 神马国产精品三级电影在线观看 | 亚洲av电影在线进入| 夜夜看夜夜爽夜夜摸| 怎么达到女性高潮| 国产国语露脸激情在线看| 成人午夜高清在线视频 | 男人操女人黄网站| a级毛片a级免费在线| 成人三级黄色视频| 成人国产综合亚洲| 欧美国产日韩亚洲一区| 一本一本综合久久| 女性生殖器流出的白浆| 久久人人精品亚洲av| 亚洲欧美精品综合一区二区三区| 看片在线看免费视频| 亚洲免费av在线视频| 亚洲精品国产精品久久久不卡| 亚洲精品在线美女| 欧美不卡视频在线免费观看 | av片东京热男人的天堂| 黄片大片在线免费观看| 亚洲人成77777在线视频| 国产高清激情床上av| 免费看a级黄色片| 亚洲中文字幕日韩| 免费在线观看视频国产中文字幕亚洲| 日韩欧美在线二视频| 久久午夜亚洲精品久久| 叶爱在线成人免费视频播放| 国产又色又爽无遮挡免费看| 国产成人欧美| 日本成人三级电影网站| 夜夜躁狠狠躁天天躁| 欧美+亚洲+日韩+国产| 精品久久久久久久久久免费视频| 夜夜夜夜夜久久久久| 18禁裸乳无遮挡免费网站照片 | 日韩有码中文字幕| 大型av网站在线播放| 天天添夜夜摸| 国产三级黄色录像| 国产精品九九99| 国产成年人精品一区二区| 丰满的人妻完整版| 香蕉av资源在线| 久久精品国产亚洲av香蕉五月| 99久久久亚洲精品蜜臀av| 99国产精品一区二区三区| 啦啦啦观看免费观看视频高清| 精品欧美一区二区三区在线| 在线观看午夜福利视频| 国产黄色小视频在线观看| 淫秽高清视频在线观看| av中文乱码字幕在线| 不卡av一区二区三区| 黄色毛片三级朝国网站| 国产人伦9x9x在线观看| av片东京热男人的天堂| 欧美色视频一区免费| 69av精品久久久久久| 视频区欧美日本亚洲| 欧美国产精品va在线观看不卡| 在线播放国产精品三级| av片东京热男人的天堂| 亚洲一卡2卡3卡4卡5卡精品中文| av超薄肉色丝袜交足视频| 久久久国产精品麻豆| 亚洲av美国av| 久久精品夜夜夜夜夜久久蜜豆 | 成年女人毛片免费观看观看9| 日本撒尿小便嘘嘘汇集6| 好男人在线观看高清免费视频 | 中文资源天堂在线| 日本一本二区三区精品| 人妻久久中文字幕网| 99精品久久久久人妻精品| 午夜福利视频1000在线观看| 满18在线观看网站| 极品教师在线免费播放| 露出奶头的视频| 国产av不卡久久| 欧美在线黄色| 91成人精品电影| 婷婷精品国产亚洲av在线| 丁香欧美五月| 亚洲熟妇熟女久久| 免费高清视频大片| 黄频高清免费视频| 亚洲黑人精品在线| 欧美日韩福利视频一区二区| 国产成人一区二区三区免费视频网站| 亚洲成人久久爱视频| 18禁黄网站禁片午夜丰满| 99久久精品国产亚洲精品| 国产视频内射| 成熟少妇高潮喷水视频| 亚洲av电影不卡..在线观看| 国产精品亚洲av一区麻豆| 欧美色欧美亚洲另类二区| 十分钟在线观看高清视频www| 男人的好看免费观看在线视频 | 久久亚洲精品不卡| 久久精品国产清高在天天线| 在线天堂中文资源库| 国产一区二区三区在线臀色熟女| 免费看美女性在线毛片视频| 美女高潮喷水抽搐中文字幕| 亚洲第一青青草原| 亚洲成人国产一区在线观看| 久久亚洲精品不卡| 97碰自拍视频| 嫩草影视91久久| 少妇 在线观看| 在线观看免费视频日本深夜| 亚洲欧美精品综合一区二区三区| 国产伦在线观看视频一区| 免费一级毛片在线播放高清视频| 午夜免费鲁丝| 在线国产一区二区在线| 欧美性长视频在线观看| 一本大道久久a久久精品| 国产成人av激情在线播放| 一进一出抽搐动态| a在线观看视频网站| 国产伦人伦偷精品视频| 国产一区二区激情短视频| 国产一区在线观看成人免费| 神马国产精品三级电影在线观看 | 国产精品 国内视频| 久久久国产精品麻豆| 丰满的人妻完整版| 黄色女人牲交| 免费在线观看完整版高清| 在线免费观看的www视频| 国产蜜桃级精品一区二区三区| av中文乱码字幕在线| 嫩草影视91久久| 999久久久精品免费观看国产| 国产乱人伦免费视频| 亚洲精品一卡2卡三卡4卡5卡| 好看av亚洲va欧美ⅴa在| 国产人伦9x9x在线观看| 久久草成人影院| www.精华液| 亚洲av电影不卡..在线观看| 久久国产精品人妻蜜桃| 欧美成人免费av一区二区三区| 少妇的丰满在线观看| 老司机午夜福利在线观看视频| 特大巨黑吊av在线直播 | av在线播放免费不卡| 国产精品影院久久| 国产不卡一卡二| 1024香蕉在线观看| 亚洲狠狠婷婷综合久久图片| 69av精品久久久久久| 欧美人与性动交α欧美精品济南到| 色av中文字幕| 精品日产1卡2卡| 女人被狂操c到高潮| 免费在线观看日本一区| 亚洲va日本ⅴa欧美va伊人久久| 动漫黄色视频在线观看| 欧美在线黄色| 亚洲av电影在线进入| 成人av一区二区三区在线看| 欧美成人午夜精品| 国产蜜桃级精品一区二区三区| 免费搜索国产男女视频| 在线播放国产精品三级| 亚洲电影在线观看av| 草草在线视频免费看| 午夜福利在线观看吧| 人人妻人人澡人人看| 99久久综合精品五月天人人| 中文字幕久久专区| 亚洲午夜精品一区,二区,三区| 999久久久精品免费观看国产| 久久人人精品亚洲av| 亚洲av美国av| 亚洲七黄色美女视频| 91国产中文字幕| www.熟女人妻精品国产| 一区二区三区激情视频| 免费电影在线观看免费观看| 国产亚洲精品久久久久5区| 少妇的丰满在线观看| 欧美不卡视频在线免费观看 | 久久香蕉精品热| 一a级毛片在线观看| 国产成人精品无人区| 香蕉国产在线看| 欧美中文日本在线观看视频| 最近最新中文字幕大全电影3 | 亚洲精品国产区一区二| av中文乱码字幕在线| avwww免费| 18禁国产床啪视频网站| 成人午夜高清在线视频 | 中文字幕精品免费在线观看视频| 国产精品乱码一区二三区的特点| 精品不卡国产一区二区三区| 亚洲自拍偷在线| 黄色女人牲交| 19禁男女啪啪无遮挡网站| 99国产精品一区二区蜜桃av| 91国产中文字幕| 很黄的视频免费| 色尼玛亚洲综合影院| 精品国内亚洲2022精品成人| 男男h啪啪无遮挡| 色老头精品视频在线观看| 国产一区二区三区视频了| 亚洲第一av免费看| 亚洲av电影在线进入| 一边摸一边抽搐一进一小说| 精品日产1卡2卡| 精品国产乱子伦一区二区三区| 欧美国产精品va在线观看不卡| 午夜影院日韩av| 在线天堂中文资源库| av超薄肉色丝袜交足视频| 两性夫妻黄色片| 婷婷丁香在线五月| 丁香六月欧美| 成人特级黄色片久久久久久久| 18禁黄网站禁片免费观看直播| 久久99热这里只有精品18| 精品乱码久久久久久99久播| 亚洲精品中文字幕一二三四区| 十八禁人妻一区二区| 一级作爱视频免费观看| 无人区码免费观看不卡| 欧美丝袜亚洲另类 | 黄色视频不卡| 亚洲精品粉嫩美女一区| 国产精品精品国产色婷婷| 亚洲av熟女| 久久精品成人免费网站| 国产视频内射| 人人澡人人妻人| 国产亚洲精品综合一区在线观看 | 法律面前人人平等表现在哪些方面| 欧美最黄视频在线播放免费| 欧美乱色亚洲激情| 国产精品综合久久久久久久免费| 村上凉子中文字幕在线| 日本精品一区二区三区蜜桃| 嫩草影院精品99| 亚洲国产欧美一区二区综合| 女警被强在线播放| 免费看日本二区| 久久人妻av系列| 亚洲av成人一区二区三| 美女国产高潮福利片在线看| 淫妇啪啪啪对白视频| 国产精品一区二区免费欧美| 精品卡一卡二卡四卡免费| 天天一区二区日本电影三级| 日本黄色视频三级网站网址| 99国产极品粉嫩在线观看| 香蕉av资源在线| 91成年电影在线观看| 精品久久久久久久末码| 女警被强在线播放| 午夜久久久在线观看| 国产久久久一区二区三区| 日日爽夜夜爽网站| 在线十欧美十亚洲十日本专区| 亚洲熟女毛片儿| 一级a爱片免费观看的视频| 波多野结衣高清作品| 性色av乱码一区二区三区2| 香蕉国产在线看| 欧美成人免费av一区二区三区| 日本在线视频免费播放| 中文字幕av电影在线播放| 老熟妇乱子伦视频在线观看| 99久久久亚洲精品蜜臀av| av在线播放免费不卡| 啦啦啦 在线观看视频| 制服丝袜大香蕉在线| 免费搜索国产男女视频| xxxwww97欧美| 人人澡人人妻人| 亚洲国产精品合色在线| 此物有八面人人有两片| 久久精品夜夜夜夜夜久久蜜豆 | 可以在线观看毛片的网站| 757午夜福利合集在线观看| 精品电影一区二区在线| 一区二区日韩欧美中文字幕| 亚洲av日韩精品久久久久久密| 99国产精品一区二区蜜桃av| 久99久视频精品免费| 99久久综合精品五月天人人| 精品久久久久久久人妻蜜臀av| 色老头精品视频在线观看| 国产精品影院久久| 天堂动漫精品| 亚洲av熟女| 美女 人体艺术 gogo| 欧美日韩亚洲国产一区二区在线观看| 男女那种视频在线观看| 亚洲va日本ⅴa欧美va伊人久久| 老熟妇仑乱视频hdxx| 日本 av在线| 一个人免费在线观看的高清视频| 久久精品国产亚洲av高清一级| 国产真实乱freesex| 欧美中文综合在线视频| 99久久99久久久精品蜜桃| 亚洲中文字幕日韩| 国产又色又爽无遮挡免费看| 久久久久久国产a免费观看| 一边摸一边抽搐一进一小说| 狂野欧美激情性xxxx| 啦啦啦韩国在线观看视频| 国产亚洲精品久久久久久毛片| 波多野结衣av一区二区av| 久久香蕉国产精品| 久久天躁狠狠躁夜夜2o2o| 成人国语在线视频| 九色国产91popny在线| 美女国产高潮福利片在线看| 午夜影院日韩av| 波多野结衣高清作品| av超薄肉色丝袜交足视频| 国产日本99.免费观看| 我的亚洲天堂| 中文亚洲av片在线观看爽| 在线视频色国产色| 琪琪午夜伦伦电影理论片6080| 亚洲黑人精品在线| 首页视频小说图片口味搜索| 日本一本二区三区精品| 一级黄色大片毛片| 亚洲自拍偷在线| 欧美性猛交黑人性爽| 男人操女人黄网站| 91大片在线观看| 婷婷精品国产亚洲av| 日本 av在线| 老鸭窝网址在线观看| 欧美中文日本在线观看视频| 男男h啪啪无遮挡| 夜夜看夜夜爽夜夜摸| 男女下面进入的视频免费午夜 | 狠狠狠狠99中文字幕| 午夜老司机福利片| 日韩大尺度精品在线看网址| 久久婷婷成人综合色麻豆| 美女午夜性视频免费| 国产亚洲精品久久久久5区| 午夜激情福利司机影院| 亚洲欧美日韩高清在线视频| 精品国产国语对白av| 日韩免费av在线播放| 日本免费a在线| 亚洲精品国产一区二区精华液| 国产精品乱码一区二三区的特点| 天天躁狠狠躁夜夜躁狠狠躁| 久久久久久久午夜电影| 俺也久久电影网| 99热这里只有精品一区 | 又紧又爽又黄一区二区| 欧美黑人精品巨大| 成人午夜高清在线视频 | 精品欧美国产一区二区三| √禁漫天堂资源中文www| 99国产精品一区二区三区| 久久国产乱子伦精品免费另类| 日韩视频一区二区在线观看| 日韩有码中文字幕| 免费一级毛片在线播放高清视频| 国产成人欧美| 亚洲熟妇中文字幕五十中出| 香蕉国产在线看| 免费在线观看日本一区| 成人av一区二区三区在线看| 亚洲精品美女久久av网站| 麻豆国产av国片精品| 亚洲人成网站高清观看| 女性被躁到高潮视频| 男女下面进入的视频免费午夜 | 男人的好看免费观看在线视频 | 精品欧美一区二区三区在线| 欧美日韩瑟瑟在线播放| av在线播放免费不卡| 国产精品久久视频播放| 级片在线观看| 成人特级黄色片久久久久久久| 久久久久久久久久黄片| 欧美色视频一区免费| 亚洲 欧美一区二区三区| 悠悠久久av| 女性生殖器流出的白浆| 亚洲成人久久爱视频| 黑人操中国人逼视频| 午夜免费成人在线视频| videosex国产| 精品熟女少妇八av免费久了| 看黄色毛片网站| 久久久国产欧美日韩av| 日本免费a在线| www.熟女人妻精品国产| 老司机靠b影院| a级毛片a级免费在线| 国产视频内射| 精品一区二区三区视频在线观看免费| 俄罗斯特黄特色一大片| 亚洲第一欧美日韩一区二区三区| 久久久久国产精品人妻aⅴ院| 国产不卡一卡二| 三级毛片av免费| 亚洲熟女毛片儿| cao死你这个sao货| 在线国产一区二区在线| 美女高潮喷水抽搐中文字幕| 少妇的丰满在线观看| 不卡一级毛片| 国产精品久久久久久人妻精品电影| 国产在线精品亚洲第一网站| 欧美一区二区精品小视频在线| 免费搜索国产男女视频| 中文字幕高清在线视频| 在线视频色国产色| 嫁个100分男人电影在线观看| 一本综合久久免费| 国产欧美日韩精品亚洲av| 高清在线国产一区| 美女大奶头视频| 三级毛片av免费| 欧美日韩黄片免| 国产精品久久视频播放| 一级毛片高清免费大全| 午夜免费观看网址| 最新在线观看一区二区三区| 自线自在国产av| 嫁个100分男人电影在线观看| 国产精品99久久99久久久不卡| 亚洲黑人精品在线| 老汉色∧v一级毛片| aaaaa片日本免费| 亚洲国产精品sss在线观看| 狂野欧美激情性xxxx| 欧美日韩黄片免| 久久这里只有精品19| 精品久久久久久,| 欧美国产日韩亚洲一区| 啦啦啦 在线观看视频| 一本综合久久免费| 欧美成人一区二区免费高清观看 | 在线播放国产精品三级| 国产午夜精品久久久久久| 美国免费a级毛片| 亚洲精华国产精华精| 免费在线观看影片大全网站| 国产精品亚洲av一区麻豆| 久久婷婷人人爽人人干人人爱| 50天的宝宝边吃奶边哭怎么回事| 日韩视频一区二区在线观看| 国产精品98久久久久久宅男小说| 国产真实乱freesex| 日韩成人在线观看一区二区三区| 国产精品 欧美亚洲| 亚洲男人天堂网一区| 一级毛片高清免费大全| 亚洲aⅴ乱码一区二区在线播放 | 岛国视频午夜一区免费看| 热re99久久国产66热| 久久精品国产亚洲av高清一级| 中文亚洲av片在线观看爽| 黄色片一级片一级黄色片| www日本黄色视频网| 成人18禁高潮啪啪吃奶动态图| 国产午夜精品久久久久久| 欧美绝顶高潮抽搐喷水| 久久性视频一级片| 国产野战对白在线观看| 久久午夜综合久久蜜桃| 天天添夜夜摸| 黑人巨大精品欧美一区二区mp4| av福利片在线| 一a级毛片在线观看| 高潮久久久久久久久久久不卡| 丝袜美腿诱惑在线| 麻豆成人av在线观看| 国产国语露脸激情在线看| 午夜福利欧美成人| 欧美最黄视频在线播放免费| 国产高清有码在线观看视频 | 波多野结衣高清无吗| 亚洲精品国产一区二区精华液| 亚洲熟妇中文字幕五十中出| 超碰成人久久| 国产av又大| 国产亚洲精品第一综合不卡| 天堂影院成人在线观看| 日韩视频一区二区在线观看| 亚洲五月色婷婷综合| 99热6这里只有精品| 日本 av在线| 黄色毛片三级朝国网站| 日韩av在线大香蕉| 日本免费一区二区三区高清不卡| 精品日产1卡2卡| 久久精品影院6| 亚洲最大成人中文| 麻豆国产av国片精品| 一级a爱片免费观看的视频| 我的亚洲天堂| 欧美激情极品国产一区二区三区| 看黄色毛片网站| 黄色视频,在线免费观看| 国产成+人综合+亚洲专区| 少妇裸体淫交视频免费看高清 | 色av中文字幕| 久久精品夜夜夜夜夜久久蜜豆 | 操出白浆在线播放| 精品电影一区二区在线| 99久久国产精品久久久| 欧美又色又爽又黄视频| 狂野欧美激情性xxxx| 亚洲国产看品久久| 久久久久久亚洲精品国产蜜桃av| 免费在线观看影片大全网站| 欧美日韩一级在线毛片| 欧美又色又爽又黄视频| 露出奶头的视频| 亚洲一区二区三区不卡视频| 一夜夜www| 国产精品1区2区在线观看.| 国产成人影院久久av| 国产成人欧美| 精品无人区乱码1区二区| 亚洲国产毛片av蜜桃av| 国产精品久久电影中文字幕| 国产蜜桃级精品一区二区三区| 两个人看的免费小视频| 亚洲熟妇中文字幕五十中出| 成人精品一区二区免费| 国产精品爽爽va在线观看网站 | 亚洲成人精品中文字幕电影| 99精品久久久久人妻精品| 国产亚洲av高清不卡| 久久午夜亚洲精品久久| 久久精品91蜜桃| 欧美黑人巨大hd| 亚洲最大成人中文| 久久久久国内视频| 黄色 视频免费看| 老司机午夜十八禁免费视频| 国产一区在线观看成人免费| 亚洲国产中文字幕在线视频| 精品国产美女av久久久久小说| 黄片播放在线免费| 午夜亚洲福利在线播放| 国产高清视频在线播放一区| svipshipincom国产片| 听说在线观看完整版免费高清| 动漫黄色视频在线观看| 午夜福利成人在线免费观看| 成人亚洲精品一区在线观看| 国产亚洲精品久久久久久毛片| 亚洲成国产人片在线观看| 亚洲精品美女久久av网站| 国语自产精品视频在线第100页| 免费在线观看成人毛片| 免费电影在线观看免费观看| 欧美国产精品va在线观看不卡| 久99久视频精品免费| 欧美午夜高清在线| 欧美 亚洲 国产 日韩一| 精品熟女少妇八av免费久了| 国产免费av片在线观看野外av| 国产亚洲精品一区二区www| 男人操女人黄网站| 久热这里只有精品99| 香蕉久久夜色| 麻豆成人午夜福利视频| 黄色女人牲交| 搞女人的毛片| 可以在线观看的亚洲视频| 午夜免费观看网址| 少妇熟女aⅴ在线视频| 黄色片一级片一级黄色片| 亚洲第一青青草原| 欧美激情久久久久久爽电影| 免费在线观看成人毛片| 亚洲熟妇中文字幕五十中出| av免费在线观看网站| 欧美黄色淫秽网站| 精品乱码久久久久久99久播| 一级毛片高清免费大全| 日日干狠狠操夜夜爽| 精品国产亚洲在线| 国产国语露脸激情在线看|