国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2016-11-09 01:11楊紅麗秦勝潮
關(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)用的能耗漏洞問(wèn)題受到研究者的廣泛關(guān)注。研究者們已經(jīng)提出并實(shí)現(xiàn)了很多分析技術(shù)和相關(guān)工具。針對(duì)Android應(yīng)用能耗漏洞分析,對(duì)相關(guān)研究方法和工具作了綜述,概括了現(xiàn)有研究工作中的問(wè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),如工作和娛樂(lè)。目前市場(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)用與用戶交互的過(guò)程會(huì)時(shí)刻占用系統(tǒng)硬件資源,如果應(yīng)用誤調(diào)用系統(tǒng)接口導(dǎo)致資源管理不當(dāng),就會(huì)引發(fā)能耗問(wèn)題。這些造成電池壽命下降的現(xiàn)象被稱為能耗漏洞[3],這些漏洞會(huì)造成系統(tǒng)不必要的能源開銷,使得電池電量很快耗盡。為了改善應(yīng)用能耗問(wèn)題,越來(lái)越多的研究者開始關(guān)注Android應(yīng)用能耗研究,檢測(cè)能耗問(wèn)題并提出相應(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ì)通過(guò)GPS導(dǎo)航系統(tǒng)進(jìn)行地理位置追蹤;指南針應(yīng)用會(huì)使用方向傳感器確定方向;新聞應(yīng)用會(huì)通過(guò)WiFi、3G、4G網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)刻更新當(dāng)前新聞消息等。Abhijeet等人[4]通過(guò)解析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)用高耗電問(wèn)題的有效措施。

圖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)。能耗漏洞問(wèn)題嚴(yán)重影響了用戶體驗(yàn),并成為開發(fā)者們關(guān)注的焦點(diǎn)。如果應(yīng)用在運(yùn)行過(guò)程中使得手機(jī)能耗大幅度上漲,那么該應(yīng)用潛在或存在某種能耗漏洞。在現(xiàn)有的研究工作中,能耗漏洞可以分為能耗熱點(diǎn)和能耗泄漏兩大類[4-8]。

2.1能耗熱點(diǎn)

能耗熱點(diǎn)指的是應(yīng)用運(yùn)行過(guò)程中造成能源熱點(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)過(guò)早或者在應(yīng)用退出時(shí)釋放過(guò)晚會(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) 過(guò)多的數(shù)據(jù)操作:過(guò)多的數(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顯示指定布局。布局在顯示的過(guò)程中需要系統(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í)沒(méi)有釋放相應(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é)束之后沒(méi)有及時(shí)釋放WakeLock對(duì)象占用的資源,導(dǎo)致CPU、LCD無(wú)法進(jìn)入休眠狀態(tài)而持續(xù)消費(fèi)能源。

(2) 資源泄漏:WiFi、多媒體等資源有可能在應(yīng)用執(zhí)行過(guò)程中獲取,但是未能在應(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)存泄漏的問(wèn)題對(duì)于資源有限的嵌入式設(shè)備來(lái)說(shuō)十分嚴(yán)重[11]。常見(jiàn)的內(nèi)存泄漏問(wèn)題,有位圖對(duì)象內(nèi)存泄漏、監(jiān)聽(tīng)器泄漏等。

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è)能耗泄漏問(wèn)題。該方法通過(guò)字節(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é)碼的分析。因此,一些研究方法通過(guò)將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è)

在能耗泄漏問(wèn)題中,研究方法可以將系統(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)證模型是否存在資源泄露問(wèn)題。Song等人[35]使用模型檢測(cè)的方法識(shí)別用戶信息泄漏情況,文章雖然關(guān)注安全問(wèn)題,但是模型檢測(cè)的方法同樣可以借鑒到能耗分析中。

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

符號(hào)執(zhí)行的方法通常使用在路徑敏感的程序分析中。對(duì)于能耗問(wèn)題的靜態(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]通過(guò)改造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)建需要通過(guò)其他工具完成,分別為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)行過(guò)程中,框架在記錄事件序列的同時(shí),還需要跟蹤并記錄交互過(guò)程中系統(tǒng)資源API的調(diào)用情況,并通過(guò)Yokogawa WT210[19]測(cè)量?jī)x器給出精確的應(yīng)用能耗信息??蚣芨鶕?jù)能耗信息可以計(jì)算特定組件的能耗情況,該值越高則代表應(yīng)用耗電越嚴(yán)重。因此,在應(yīng)用執(zhí)行過(guò)程中出現(xiàn)能耗過(guò)高的情況則代表應(yīng)用出現(xiàn)能耗熱點(diǎn)問(wèn)題。應(yīng)用退出時(shí),能耗過(guò)高則代表能耗泄漏問(wèn)題。框架對(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ò)散過(guò)程,最后通過(guò)一定的檢測(cè)規(guī)則查找軟件中的漏洞。TaintDroid[21]是Android平臺(tái)的擴(kuò)展工具,用于檢測(cè)敏感數(shù)據(jù)在不信任應(yīng)用中泄漏的安全問(wèn)題。它自動(dòng)標(biāo)記涉及到敏感數(shù)據(jù)的變量、文件、進(jìn)程間的消息,當(dāng)污點(diǎn)數(shù)據(jù)通過(guò)網(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)聽(tīng)下載數(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)用定位能源使用效率低下的問(wèn)題。Flowdroid[25]是一個(gè)Android應(yīng)用靜態(tài)污點(diǎn)分析工具,工具在Soot[26]和Heros[27]的基礎(chǔ)上進(jìn)行精確的數(shù)據(jù)流分析,整個(gè)分析過(guò)程與數(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)行過(guò)程中的狀態(tài)變量變化信息以及執(zhí)行路徑信息(如函數(shù)執(zhí)行順序、調(diào)用關(guān)系等)。插樁分析不能直接檢測(cè)應(yīng)用的能耗問(wèn)題,但是該方法可以有效地理解應(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)資源泄漏問(wèn)題的正確性。

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

通過(guò)以上介紹,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í)行過(guò)程中方法之間的層級(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)存問(wèn)題的工具,同時(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)有工作中的問(wèn)題

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

(1) 在靜態(tài)分析過(guò)程中,為了全局分析類之間或者函數(shù)之間的交互、依賴關(guān)系,經(jīng)常采用構(gòu)建函數(shù)摘要的方法。函數(shù)摘要是對(duì)函數(shù)信息的抽象,能耗分析中的函數(shù)摘要不僅要關(guān)注函數(shù)的輸入變量、輸出變量信息,還需要包含函數(shù)內(nèi)部是否調(diào)用了資源相關(guān)的API。然而函數(shù)摘要的定義并沒(méi)有統(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è)出潛在的能耗問(wèn)題,然而這些問(wèn)題是否能夠給手機(jī)能耗帶來(lái)影響,還需要進(jìn)行人工確認(rèn)。一方面通過(guò)插樁的方式檢測(cè)問(wèn)題是否能夠被觸發(fā),另一方面需要監(jiān)控能耗的使用信息來(lái)判定問(wèn)題的真實(shí)性。

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

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

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

(3) 針對(duì)能耗問(wèn)題進(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)方法的不斷演變,能耗問(wèn)題將會(huì)以不同形式展現(xiàn),并且應(yīng)用開發(fā)者在開發(fā)過(guò)程中會(huì)將主要精力放在功能實(shí)現(xiàn)而忽略能耗優(yōu)化,因此現(xiàn)階段研究并不能說(shuō)明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)分析都是通過(guò)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ù)的控制流圖;通過(guò)過(guò)程內(nèi)與過(guò)程間的分析獲取應(yīng)用組件的狀態(tài),檢測(cè)組件的狀態(tài)是否在每條可執(zhí)行路徑結(jié)束時(shí)都處于釋放狀態(tài),從而判斷應(yīng)用是否存在能耗漏洞。因此從整個(gè)過(guò)程來(lái)看,分析方法需要在信息流構(gòu)建、過(guò)程內(nèi)以及過(guò)程間進(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é)果的不確定性可以通過(guò)動(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è)試過(guò)程中的路徑覆蓋信息。將這些信息和靜態(tài)分析結(jié)果的問(wèn)題路徑信息進(jìn)行比較,可以有效地驗(yàn)證靜態(tài)分析的準(zhǔn)確性。

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

圖4 通過(guò)動(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ò)濾規(guī)則,對(duì)在線開發(fā)文檔進(jìn)行API信息的抓取。如圖5所示,在開發(fā)文檔頁(yè)面的html頁(yè)面中,可以針對(duì)Android組件所屬的包名以及版本號(hào)進(jìn)行分類過(guò)濾,然后通過(guò)包名所在的頁(yè)面獲取該包中的類型信息,以及每個(gè)類中所有方法的信息。例如通過(guò)抓取可以收集到WakeLock類在Android5.0中加入了帶參數(shù)的release方法,而Camera類在Android5.0中已經(jīng)被Camera2替換。

圖5 通過(guò)網(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è)并記錄。研究方法可以一方面通過(guò)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)用是否潛在能耗問(wèn)題。因此對(duì)于用戶來(lái)說(shuō),構(gòu)建有效的、智能化的能耗分析、解決方案,將是Android應(yīng)用能耗分析的前景。

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

現(xiàn)有工作對(duì)應(yīng)用的本地代碼研究相對(duì)較少。Android系統(tǒng)通過(guò)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)用在本地方法中沒(méi)有有效控制渲染幀率,或者沒(méi)有及時(shí)釋放無(wú)用的幀緩存,那么手機(jī)將會(huì)加速耗電?,F(xiàn)有工作中對(duì)NDK中能耗問(wèn)題的探測(cè)相對(duì)較少,因此這是一個(gè)值得關(guān)注的領(lǐng)域。

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

布局在呈現(xiàn)的過(guò)程中需要系統(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控件中布局指示器和繪制指示器均顯示為黑色,表示該控件在視圖樹加載過(guò)程中執(zhí)行緩慢。究其緩慢的原因是該FrameLayout控件所包含的子控件數(shù)目很多,層次較為復(fù)雜。Android系統(tǒng)繪制應(yīng)用布局需要經(jīng)過(guò)測(cè)量過(guò)程和繪制過(guò)程,如果視圖樹中層次復(fù)雜,節(jié)點(diǎn)數(shù)目過(guò)多,那么布局加載的過(guò)程就會(huì)需要更多時(shí)間以及更大內(nèi)存。因此在檢測(cè)布局性能問(wèn)題時(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) 新特性中潛在的能耗問(wèn)題

目前Android5.0系統(tǒng)為改善能耗提出新的特性,包括系統(tǒng)以及API兩個(gè)方面。因此開發(fā)者應(yīng)該遵循這些“新規(guī)則”構(gòu)建出更為省電的應(yīng)用,這就導(dǎo)致現(xiàn)有應(yīng)用不得不經(jīng)過(guò)舊版本移植的過(guò)程。并且伴隨新特性,新應(yīng)用開發(fā)過(guò)程中出現(xiàn)的新問(wè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)用中的能耗問(wèn)題。例如所有的資源釋放操作都可以提前到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)用中能耗問(wèn)題的成因。然后對(duì)現(xiàn)有研究中發(fā)現(xiàn)的能耗漏洞進(jìn)行分類,并對(duì)每種能耗漏洞的子問(wèn)題進(jìn)行描述。接著詳細(xì)描述了能耗漏洞的現(xiàn)有分析方法以及相關(guān)工具,并概括了現(xiàn)有工作中的不足。最后根據(jù)現(xiàn)有工作存在的問(wè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í)踐
無(wú)人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
能耗雙控下,漲價(jià)潮再度來(lái)襲!
探討如何設(shè)計(jì)零能耗住宅
新型碎邊剪刀盤組件
U盾外殼組件注塑模具設(shè)計(jì)
日本先進(jìn)的“零能耗住宅”
三明:“兩票制”堵住加價(jià)漏洞
漏洞在哪兒
龙川县| 辉县市| 酒泉市| 博野县| 宁安市| 花莲市| 千阳县| 天长市| 平陆县| 平南县| 酉阳| 广汉市| 开鲁县| 崇州市| 锦屏县| 扎鲁特旗| 阜阳市| 桦南县| 牙克石市| 屏南县| 红安县| 嘉鱼县| 浦东新区| 惠来县| 渝北区| 迁安市| 荆州市| 明溪县| 图木舒克市| 沧州市| 弥勒县| 丹阳市| 威宁| 青田县| 轮台县| 武川县| 邳州市| 朔州市| 木兰县| 许昌县| 中山市|