今天聊下個人比較慣用的一些App性能測試和分析工具, 先上個圖:![性能分析工具]
本文暫不對工具的使用做過多的深入.在后續的具體實例中會具體說明怎么用這些工具來達成分析目的和解決問題的.
一般來說, 學習一門新的技術, 最應該做的就是閱讀其官方文檔, 那是最權威的.Android本身給我們提供了很多App性能測試和分析工具, 而且大部分都集成到Android Studio或DDMS中, 非常方便使用.
說明顧名思義, "嚴格模式", 主要用來限制應用做一些不符合性能規范的事情. 一般用來檢測主線程中的耗 時操作和阻塞. 開啟StrictMode后, 如果線程中做一些諸如讀寫文件, 網絡訪問等操作, 將會在Log console輸出一些警告, 警告信息包含Stack Trace來顯示哪個地方出了問題.
文檔
https://developer.android.com/reference/android/os/StrictMode.html作用
主要用來做主線程優化分析文檔
https://developer.android.com/studio/PRofile/systrace.htmlhttps://developer.android.com/studio/profile/systrace-walkthru.htmlhttps://developer.android.com/studio/profile/systrace-commandline.html?hl=fy作用
作用很多, 個人主要用來分析UI的繪制時間, 結合Hierarchy Viewer來提升UI性能.也可以用來發現耗時操作.有必要說明下的是:上圖紅框標出的三個點是關鍵分析數據. 左起依次代表View的Measure, Layout和Draw的性能. 另外顏色表示該View的該項時間指數, 分為:
* 綠色, 表示該View的此項性能比該View Tree中超過50%的View都要快.* 黃色, 表示該View的此項性能比該View Tree中超過50%的View都要慢.* 紅色, 表示該View的此項性能是View Tree中最慢的.文檔
https://developer.android.com/studio/profile/hierarchy-viewer.htmlhttps://developer.android.com/studio/profile/hierarchy-viewer-walkthru.htmlhttps://developer.android.com/studio/profile/hierarchy-viewer-setup.htmlhttps://developer.android.com/studio/profile/optimize-ui.html#HierarchyViewer作用
用來做View層級分析, 可以分析出View Tree中的性能阻塞點, 以便對癥下藥, 提升布局性能.Hierarchy Viewer需要Root的機器(產品機沒有開啟ViewServer)才可以執行.可以使用第三方的開源的ViewServer來協助我們在未Root的機器上使用Hierarchy Viewer分析.
文檔
https://developer.android.com/studio/profile/traceview.htmlhttps://developer.android.com/studio/profile/traceview-walkthru.html作用
分析方法調用棧以及其執行時間, 優化方法執行.文檔
https://developer.android.com/studio/profile/am-memory.htmlhttps://developer.android.com/studio/profile/heap-viewer-walkthru.htmlhttps://developer.android.com/studio/profile/allocation-tracker-walkthru.html作用
用來做內存分析, 內存泄露排查的不二之選. 可以結合heap viewer, allocation tracker來分析.可以導出hprof文件結合第三方的MAT工具分析泄露點.說明Android Studio的Monitor還提供了其他三個Motinor --- CPU, GPU, Network.
文檔
https://developer.android.com/studio/profile/am-cpu.htmlhttps://developer.android.com/studio/profile/am-gpu.htmlhttps://developer.android.com/studio/profile/am-network.html作用
分別用來跟蹤監測CPU,GPU和Network的使用極其變化, 可以作為網絡優化, 流量優化和渲染優化等的一個指導. (個人并不常用到~)Android的開發者模式中也提供了較多的用來監測性能的選項, 可以用下:
以下工具全部開源, 開源萬歲...
說明Google出品, 通過Android系統的bugreport文件來做電量使用分析的工具.
文檔
https://github.com/google/battery-historian作用
用來做電量使用分析.說明針對Android App的CPU, 內存, 網絡, 電量等多項綜合的測試分析.
文檔
https://github.com/NetEase/Emmagee作用
比官方工具更適合國人使用來做App的整體性能分析.說明Square出品, 必屬精品.類似與App探針的內存泄露監測工具.
文檔
https://github.com/square/leakcanary作用
集成到App中, 用來做內存問題預防最好不過了.說明一個library, 用來檢測Activity生命周期執行性能, Dagger2注入性能以及幀率性能的工具.
文檔
https://github.com/frogermcs/AndroidDevMetrics作用
如果你的應用使用的Dagger2, 這個就比較必要了.MAT沒有側重的提, 是因為這個工具在ADT時代比較常用, AS2.0之后, 本身的Memory Monitor越來越強大, 結合日益完善的第三方工具基本上可以完成內存方面的優化了.
歡迎大家分享自己常用的App性能分析工具, 共同學習~新聞熱點
疑難解答