1. 耗電量原始測試方法
1.1 方法原理:
根據iPhone手機右上角的電池百分比變化來計算耗電量。
1.2實際操作:
在iOS通用設置中打開電池百分比數值顯示,然后操作30分鍾,60分鍾,90分鍾,看開始時和結束時電池百分比數值的差值。
1.3 優缺點分析:
1、電池百分比數據非常粗略,並且電池從90%掉電至80%與80%掉電至70%不一定相等
2、測試時需要關閉手機所有后台應用除待測應用外,但統計的耗電量仍然把亮屏耗電、通訊模塊耗電都統計進去,因此會發現OLED和LCD屏幕的手機耗電量不一樣,使用wifi模塊和3G網絡的耗電量不一樣
綜上所述:如果耗電量是看整個手機的耗電情況,那么受影響的因素比較多,干擾大,無法准確得出被測應用的真實耗電數據。
2. 耗電量文藝測試方法
2.1方法原理:
從iOS8系統開始,iPhone手機在電量選項中會看到前后台運行時長和電池消耗占比數據(如下圖所示),這些數據會自動收集在iPhone手機數據庫里,並會上報給蘋果服務器,因此通過HTTP劫持工具可以截獲手機上報的這些數據。
2.2實際操作:
步驟1:在iMac機上安裝HTTP劫持工具mitmproxy,打開iMac機上的終端命令輸入界面,然后輸入以下命令:
sudo easy_install php
sudo pip install mitmproxy
注:使用mitmproxy原因是支持手機端,並且有Mac版本,比Fiddler、HttpWatch要方便很多。
步驟2:將解析HTTP請求並保存文件的capture.py腳本放置在iMac機上,然后運行命令:
mitmdump -s “capture.py --bat”
步驟3:將待測手機和iMac都連接到同一個wifi網絡下,然后打開手機中的wifi設置,設置手機的HTTP代理服務器IP為iMac的IP,端口為8080(如下圖所示)
步驟4:打開iPhone手機上的Safari,輸入http://mitm.it,選擇蘋果圖標並安裝mitm證書,證書只需首次測試時需要安裝。
步驟5:回到Safari瀏覽器,輸入diags://進入iOS診斷信息界面,在報告編號中輸入:123456,點擊擴展測試(如圖1所示),待該界面左上角出現“完成”后,在capture.py的相同目錄會出現power-YYYYMMDD-hhmmss.tar.gz的壓縮文件(如圖2所示)。
圖1
圖2
步驟6:雙擊ID開頭的文件,會出現以PLSQL結尾的文件,可以通過MesaSQLite打開,切換到“SQL Query”選項頁,輸入SQL語句即可。
以上紅框的記錄表明:2015年10月23號,com.qq.tencent.dailybuild進程在8:00至9:00在3600秒時間內耗電量為436.9832mW/h。
查看后台運行時長的SQL語句:
select datetime(timestamp, unixepoch','localtime') AS Time,* from PLAppTimeService_Aggregate_AppRunTime where BundleID= 'com.tencent.qq.dailybuild';
查看耗電量的SQL語句:
select datetime(timestamp,'unixepoch','localtime') as time, * from PLBLMAccountingService_Aggregate_BLMAppEnergyBreakdown where BLMAppName='com.tencent.qq.dailybuild';
查看溫度的SQL語句:
select datetime(timestamp,'unixepoch','localtime') as time, * from PLBatteryAgent_EventBackward_Battery;
更多數據表說明見:http://www.lyonanderson.org/blog/2014/11/05/ios-diagnostics-part-2/
2.3 優缺點分析:
優點:
1)此方法獲取的數據即iOS系統統計的數據,因此數據具備較強的說服力;
2)能夠獲取應用的耗電量數據,不再是統計整機的耗電量。
缺點:最短只能統計1個小時內的耗電量數據,對於響應時間較快操作的耗電量建議還是用powermonitor進行測試。
3. 常見問題
問題:在mitmdump運行capture.py出現command not found提示怎么辦?
解答:出現mitmdump指令查找不到說明mitmproxy安裝有問題,需要運行sudo pip install mitmproxy重新進行mitmproxy的安裝。
問題:在安裝mitmproxy出現libxml/xmlversion.h file not found提示,怎么解決?
解答:這是在安裝依賴包lxml報錯,首先根據警告執行下圖紅框的命令,然后再執行xcode-select --install命令
問題:為什么在手機的QQ瀏覽器或UC瀏覽器中輸入http://mitm.it沒有看到mitm證書安裝界面?
解答:必須要在iPhone手機的Safari瀏覽器中輸入地址,同理diags://也必須要在Safari瀏覽器中輸入。