做測試工程師十多年,手機測試接觸太少,請叫我小白吧。當我們拿到一個趨於成熟的安卓應用程序APP,老板發話了:幫我監控下這個APP的運行情況,我要知道這個APP短時間內執行某些操作,在手機上的內存、CPU占比情況,並做成曲線圖。平常我們抱着手機玩的時候,有哪位朋友會一直關注自己手機APP的性能呢,答案就是:老板。帶着這個問題,小白的我也是摸摸頭腦,想想辦法吧。
試過了幾種不同的方法:
1、直接在手機上安裝**監控應用,但效果不理想,果斷放棄;
2、在電腦上安裝了DDMS(Dalvik Debug Monitor Service),並成功連接手機,打開應用,終於看到連接進來了,有點小開心

選擇相應的應用,然后點擊Cause GC之后就可以看到我們應用的內存情況,如下圖:

雖然看到了內存的使用情況,但是沒辦法時時自動變化,形成曲線圖,而且也沒有顯示CPU占比,好吧,只能再次放棄了。
3、繼續尋找其他的辦法,就想到了使用adb shell,最終成功解決了,以下詳細介紹如何使用。
一、電腦要先安裝adb環境
安裝過程詳見我以往寫的博客https://www.cnblogs.com/bzdmz/p/10358152.html
確保adb命令可以正常使用。
二、打開APP進行監控
1、打開電腦運行cmd,打開運行窗口
2、進入shell腳本模式
D:\android>adb shell
3、打開APP,並在步驟2的窗口運行以下命令
PD1616B:/ $ top -d 1 |grep com.test.cc > /sdcard/test_01.log
-d 1:代表每1秒取一次數據
com.test.cc 為應用程序的包名,即只監控這個應用程序
也可以PD1616B:/ $ top -d 1 -p 8398> /sdcard/test_01.log
-p 8398:即這個APP的進程號,不管你用哪種方法,只要確認監控的包沒錯即可。
> /sdcard/test_01.log:將結果輸入到/sdcard/路徑下的test_01.log文件里
4、結束抓包,直接用ctrl + c
5、退出shell模式
PD1616B:/ $ exit
6、回到命令窗口,將文件導出到電腦
D:\android>adb pull /sdcard/test_01.log
[100%] /sdcard/test_01.log
7、在excel打開,並對數據進行過濾,再做成圖表

注意這里使用分隔符號

第二步使用空格隔開

第三步,可根據需要,把一些不需要的列,跳過即可
導進來的數據很亂,可進行整改,最后可調成為如下:

最后再將CPU和MEM做成圖表的形勢:
選中列數據,然后插入圖表,搞定。


8、如果覺得第7步操作太麻煩,而且很浪費時間,可以使用以下方法做成圖表:
1)將文件上傳到linux機器上
2)使用命令將CPU和內存數值讀取出來,然后再放到excel,做成曲線圖,完美,是不是感覺有點火箭般的速度了,
當然小白也是吃過苦的,因為前面第7步,要做表格的整理,實在太慢了,所以想到這個方法。
獲取內存%值:
cat test_01.log |grep '8398' |awk '{print $10}'
獲取CPU%值:
cat test_01.log |grep '8398' |awk '{print $9}'
整個過程就是這么的辛酸,所以總結了一下,然后對大家有所幫助,如有高手還有其他更快捷的方法,歡迎留言賜教!
備注:此博客為本人原創,如有轉載請注明出處。
