一般android app的測試過程,常用的monkey選項如同官網中所列,但如果看monkey源代碼或則通過 monkey --help,還是能找到一些有意思的東西。
其中,有2個網頁中沒有提到的選項。
--bugreport
--hprof
bugreport 其實對應的是一個叫做bugreport的工具,可以運作adb bugreport觀察,它提供了那個時刻系統非常多的資訊,從meminfo,cpuinfo,vmstat到dmesg,buildprop等資訊,多到想不到。有興趣的,可以google之。
當這個标簽在monkey的運作中辨別的時候,每當monkey運作時發現appcrash,anr,system not responding的時候,monkey就會自動記錄錯誤時的資訊。
可以在 /mnt/sdcard裡面找到類似于app_crashnet.crimoon.pm.a91_2014-07-29_01_01_22.990_.txt 這樣的檔案。每個問價有15mb到20mb大小,内容翔實,乃是開發debug之寶。
hprof的作用就是,在monkey開始之前和結束之後(正常結束,被kill的不算),會調用如下代碼
這個代碼的作用,就是對于所有persistent的process,擷取它的hprof資訊,類似于對于所有的persistent應用 kill -10 pid。它的好處也不言而喻,hprof檔案出來了,找記憶體洩漏還遠麼。
有一點要吐槽的是,注釋裡面明明說 /data/misc裡面記錄該檔案,實際上,還是儲存在了 /mnt/sdcard 裡面。檔案名類似于 com.aliyun.ams.assistantservice_hprof_dump20140728203235.prof。一般每個檔案大約5mb,也看到過 com.android.systemui,比較誇張,有25mb。
可見,這個開關對于測試整個系統的記憶體洩漏,還是會有比較大的幫助的。